{"id":15,"date":"2013-03-18T20:24:07","date_gmt":"2013-03-18T20:24:07","guid":{"rendered":"http:\/\/www.yeetrack.com\/post\/2013-03-18\/apache%20cxf%20%E6%90%AD%E5%BB%BAweb%20service%E6%8E%A5%E5%8F%A3%E6%A0%B7%E4%BE%8B%E7%A8%8B%E5%BA%8F"},"modified":"2013-09-27T22:36:48","modified_gmt":"2013-09-27T14:36:48","slug":"apachecxf%e7%bc%96%e5%86%99webservice%e6%8e%a5%e5%8f%a3%e6%a0%b7%e4%be%8b%e7%a8%8b%e5%ba%8f","status":"publish","type":"post","link":"https:\/\/www.yeetrack.com\/?p=15","title":{"rendered":"apache cxf \u7f16\u5199web service\u63a5\u53e3\u6837\u4f8b\u7a0b\u5e8f"},"content":{"rendered":"<p>Apache\u7684CXF\u73b0\u5728\u51e0\u4e4e\u6210\u4e86Java\u9886\u57df\u6784\u5efaWeb Service\u7684\u9996\u9009\u7c7b\u5e93\uff0c\u5e76\u4e14\u5b83\u4e5f\u786e\u5b9e\u7b80\u5355\u6613\u7528\uff0c\u4e0b\u9762\u662f\u4e2aHello World\u793a\u4f8b\u3002\u4f8b\u5b50\u662f\u57fa\u4e8eMaven\u6784\u5efa\u7684\u5de5\u7a0b\uff0c\u4e0b\u9762\u662f\u6211\u7684pom.xml\u6587\u4ef6\u5185\u5bb9<\/p>\n<p><!--more--><\/p>\n<pre>&lt;project xmlns=\"http:\/\/maven.apache.org\/POM\/4.0.0\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n  xsi:schemaLocation=\"http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/maven-v4_0_0.xsd\"&gt;\n  &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\n  &lt;groupId&gt;com.yeetrack&lt;\/groupId&gt;\n  &lt;artifactId&gt;mavenWeb&lt;\/artifactId&gt;\n  &lt;packaging&gt;war&lt;\/packaging&gt;\n  &lt;version&gt;0.0.1-SNAPSHOT&lt;\/version&gt;\n  &lt;name&gt;mavenWeb Maven Webapp&lt;\/name&gt;\n  &lt;properties&gt;\n    &lt;cxf.version&gt;2.7.3&lt;\/cxf.version&gt;\n  &lt;\/properties&gt;\n\n  &lt;url&gt;http:\/\/maven.apache.org&lt;\/url&gt;\n  &lt;dependencies&gt;\n    &lt;dependency&gt;\n      &lt;groupId&gt;junit&lt;\/groupId&gt;\n      &lt;artifactId&gt;junit&lt;\/artifactId&gt;\n      &lt;version&gt;3.8.1&lt;\/version&gt;\n      &lt;scope&gt;test&lt;\/scope&gt;\n    &lt;\/dependency&gt;\n\n    &lt;dependency&gt;\n    &lt;groupId&gt;org.apache.maven&lt;\/groupId&gt;\n    &lt;artifactId&gt;maven-plugin-api&lt;\/artifactId&gt;\n    &lt;version&gt;3.0.5&lt;\/version&gt;\n\n    &lt;\/dependency&gt;\n    &lt;dependency&gt;\n        &lt;groupId&gt;org.apache.geronimo.specs&lt;\/groupId&gt;\n        &lt;artifactId&gt;geronimo-servlet_2.5_spec&lt;\/artifactId&gt;\n        &lt;version&gt;1.2&lt;\/version&gt;\n    &lt;\/dependency&gt;\n\n    &lt;dependency&gt;\n        &lt;groupId&gt;org.apache.cxf&lt;\/groupId&gt;\n        &lt;artifactId&gt;cxf-rt-frontend-jaxws&lt;\/artifactId&gt;\n        &lt;version&gt;${cxf.version}&lt;\/version&gt;\n    &lt;\/dependency&gt;\n    &lt;dependency&gt;\n        &lt;groupId&gt;org.apache.cxf&lt;\/groupId&gt;\n        &lt;artifactId&gt;cxf-rt-transports-http&lt;\/artifactId&gt;\n        &lt;version&gt;${cxf.version}&lt;\/version&gt;\n    &lt;\/dependency&gt;\n        &lt;!-- Jetty is needed if you're are not using the CXFServlet --&gt;\n    &lt;dependency&gt;\n        &lt;groupId&gt;org.apache.cxf&lt;\/groupId&gt;\n        &lt;artifactId&gt;cxf-rt-transports-http-jetty&lt;\/artifactId&gt;\n        &lt;version&gt;${cxf.version}&lt;\/version&gt;\n    &lt;\/dependency&gt;\n        &lt;dependency&gt;  \n            &lt;groupId&gt;org.slf4j&lt;\/groupId&gt;  \n            &lt;artifactId&gt;slf4j-api&lt;\/artifactId&gt;  \n            &lt;version&gt;1.5.8&lt;\/version&gt;  \n        &lt;\/dependency&gt;  \n        &lt;dependency&gt;  \n            &lt;groupId&gt;org.slf4j&lt;\/groupId&gt;  \n            &lt;artifactId&gt;slf4j-jdk14&lt;\/artifactId&gt;  \n            &lt;version&gt;1.5.8&lt;\/version&gt;  \n        &lt;\/dependency&gt;  \n        &lt;dependency&gt;  \n            &lt;groupId&gt;commons-httpclient&lt;\/groupId&gt;  \n            &lt;artifactId&gt;commons-httpclient&lt;\/artifactId&gt;  \n            &lt;version&gt;3.0&lt;\/version&gt;  \n        &lt;\/dependency&gt;  \n  &lt;\/dependencies&gt;\n  &lt;build&gt;\n    &lt;finalName&gt;mavenWeb&lt;\/finalName&gt;\n    &lt;plugins&gt;\n    &lt;plugin&gt;\n        &lt;groupId&gt;org.mortbay.jetty&lt;\/groupId&gt;\n        &lt;artifactId&gt;maven-jetty-plugin&lt;\/artifactId&gt;\n        &lt;version&gt;6.1.10&lt;\/version&gt;\n        &lt;configuration&gt;\n          &lt;stopPort&gt;9966&lt;\/stopPort&gt;\n          &lt;stopKey&gt;foo&lt;\/stopKey&gt;  \n        &lt;\/configuration&gt;\n    &lt;\/plugin&gt;\n&lt;\/plugins&gt;\n  &lt;\/build&gt;\n&lt;\/project&gt;<\/pre>\n<p>&nbsp;<\/p>\n<p>\u4e0b\u9762\u6765\u770b\u770bHelloWorld\u7684\u5177\u4f53\u4f8b\u5b50\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>1.\u521b\u5efaHelloWorld \u63a5\u53e3\u7c7b<\/p>\n<pre>package com.yeetrack.cxf;  \n\nimport javax.jws.WebMethod;  \nimport javax.jws.WebParam;  \nimport javax.jws.WebResult;  \nimport javax.jws.WebService;  \n\n@WebService\npublic interface HelloWorld {  \n    @WebMethod\n    @WebResult String sayHi(@WebParam String text);  \n}<\/pre>\n<p>&nbsp;<\/p>\n<p>2.\u521b\u5efaHelloWorld\u5b9e\u73b0\u7c7b<\/p>\n<pre>package com.yeetrack.cxf;  \n\npublic class HelloWorldImpl implements HelloWorld {  \n\n    public String sayHi(String name) {  \n        String msg = \"Hello \" + name + \"!\";  \n        return msg;  \n    }  \n}<\/pre>\n<p>&nbsp;<\/p>\n<p>3.\u521b\u5efaServer\u7aef\u6d4b\u8bd5\u7c7b<\/p>\n<p>&nbsp;<\/p>\n<pre>package com.yeetrack.cxf;  \n\nimport org.apache.cxf.jaxws.JaxWsServerFactoryBean;  \n\n\/\/ http:\/\/localhost:9000\/HelloWorld?wsdl  \npublic class Server \n{  \n    public static void main(String[] args) throws Exception {  \n        JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();  \n        factory.setServiceClass(HelloWorldImpl.class);  \n\n        factory.setAddress(\"http:\/\/localhost:9000\/ws\/HelloWorld\");  \n        factory.create();  \n\n        System.out.println(\"Server start...\");  \n        Thread.sleep(60 * 1000);  \n        System.out.println(\"Server exit...\");  \n        System.exit(0);  \n    }  \n}<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>4.\u521b\u5efaClient\u7aef\u6d4b\u8bd5\u7c7b<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<pre>package com.yeetrack.cxf;\n\nimport org.apache.cxf.jaxws.JaxWsProxyFactoryBean;\n\npublic class Client {\n    public static void main(String[] args) {\n        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();\n        factory.setServiceClass(HelloWorld.class);\n        factory.setAddress(\"http:\/\/localhost:9000\/ws\/HelloWorld\");\n        HelloWorld helloworld = (HelloWorld) factory.create();\n        System.out.println(helloworld.sayHi(\"kongxx\"));\n        System.exit(0);\n    }\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>5.\u6d4b\u8bd5<\/p>\n<p>&nbsp;<\/p>\n<p>\u9996\u5148\u8fd0\u884cServer\u7c7b\u6765\u542f\u52a8Web Service\u670d\u52a1\uff0c\u7136\u540e\u8bbf\u95eehttp:\/\/localhost:9000\/ws\/HelloWorld?wsdl\u5730\u5740\u6765\u786e\u5b9aweb service\u542f\u52a8\u6b63\u786e\u3002<\/p>\n<p>\u8fd0\u884cClient\u6d4b\u8bd5\u7c7b\uff0c\u4f1a\u5728\u547d\u4ee4\u884c\u8f93\u51faHello kongxx!\u7684message\u3002<\/p>\n<p><a title=\"Apache cxf \u6d4b\u8bd5WebService\u63a5\u53e3\" href=\"https:\/\/www.yeetrack.com\/?p=510\">Apache cxf \u6d4b\u8bd5WebService\u63a5\u53e3<\/a><\/p>\n<p>\u6765\u6e90\uff1acsdn\u4e4b<a href=\"http:\/\/blog.csdn.net\/kongxx\">kongxx\u7684\u4e13\u680f<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apache\u7684CXF\u73b0\u5728\u51e0\u4e4e\u6210\u4e86Java\u9886\u57df\u6784\u5efaWeb Service\u7684\u9996\u9009\u7c7b\u5e93\uff0c\u5e76\u4e14\u5b83\u4e5f\u786e\u5b9e\u7b80\u5355\u6613\u7528\uff0c\u4e0b\u9762\u662f\u4e2aHello World\u793a\u4f8b\u3002\u4f8b\u5b50\u662f\u57fa\u4e8eMaven\u6784\u5efa\u7684\u5de5\u7a0b\uff0c\u4e0b\u9762\u662f\u6211\u7684pom.xml\u6587\u4ef6&#46;&#46;&#46;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"pgc_sgb_lightbox_settings":"","footnotes":""},"categories":[33],"tags":[8,7,5],"class_list":["post-15","post","type-post","status-publish","format-standard","hentry","category-coding","tag-java","tag-7","tag-5"],"views":2757,"_links":{"self":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts\/15","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=15"}],"version-history":[{"count":3,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts\/15\/revisions"}],"predecessor-version":[{"id":750,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts\/15\/revisions\/750"}],"wp:attachment":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=15"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=15"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}