浏览 7700 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-05
最后修改:2010-01-09
首先到apache官方网下载apache-cxf-2.2.2,地址:http://cxf.apache.org/ 新建一个Java Project,导入cxf常用.jar包 commons-logging-1.1.1.jar geronimo-activation_1.1_spec-1.0.2.jar (or Sun's Activation jar) geronimo-annotation_1.0_spec-1.1.1.jar (JSR 250) geronimo-javamail_1.4_spec-1.6.jar (or Sun's JavaMail jar) geronimo-servlet_2.5_spec-1.2.jar (or Sun's Servlet jar) geronimo-ws-metadata_2.0_spec-1.1.2.jar (JSR 181) geronimo-jaxws_2.1_spec-1.0.jar (or Sun's jaxws-api-2.1.jar) geronimo-stax-api_1.0_spec-1.0.1.jar (or other stax-api jar) jaxb-api-2.1.jar jaxb-impl-2.1.12.jar jetty-6.1.21.jar jetty-util-6.1.21.jar neethi-2.0.4.jar saaj-api-1.3.jar saaj-impl-1.3.2.jar wsdl4j-1.6.2.jar wstx-asl-3.2.8.jar XmlSchema-1.4.5.jar xml-resolver-1.2.jar cxf-2.2.2.jar 接下就是HelloWorld Demo开发了 第一步:新建一个webservice接口 @WebService public interface IHelloWorld { //@WebParam给参数命名,提高可代码可读性。此项可选 public String sayHi(@WebParam(name="text") String text); } 通过注解@WebService申明为webservice接口 第二步,实现WebService接口 @WebService public class HelloWorldImpl implements IHelloWorld { public String sayHi(String name) { System.out.println("sayHello is called by " + name); return "Hello " + name; } } 第三步,创建服务端 public class Server { private Server(){ IHelloWorld helloWorld = new HelloWorldImpl(); //创建WebService服务工厂 JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean(); //注册WebService接口 factory.setServiceClass(IHelloWorld.class); //发布接口 factory.setAddress("http://localhost:9000/HelloWorld"); factory.setServiceBean(helloWorld); //创建WebService factory.create(); }; public static void main(String[] args) throws InterruptedException{ //启动服务端 new Server(); System.out.println("Server ready..."); //休眠一分钟,便于测试 Thread.sleep(1000*60); System.out.println("Server exit..."); System.exit(0); } } 第四步,创建客户端 public class Client { private Client(){}; public static void main(String[] args){ //创建WebService客户端代理工厂 JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); //注册WebService接口 factory.setServiceClass(HelloWorld.class); //设置WebService地址 factory.setAddress("http://localhost:9000/HelloWorld"); IHelloWorld iHelloWorld = (IHelloWorld)factory.create(); System.out.println("invoke webservice..."); System.out.println("message context is:"+iHelloWorld.sayHi(" Josen")); System.exit(0); } } 最后是万事俱备,只欠测试了 首先,运行服务端程序 其次,打开浏览器,在地址栏中输入http://localhost:9000/HelloWorld?wsdl(因为cxf自带了一个jetty服务器),查看接口是否发布成功,如里浏览器页面显示下面内容,证明接口发布成功 <wsdl:definitions name="IHelloWorldService" targetNamespace="http://client.itdcl.com/"> <wsdl:types> <xsd:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://client.itdcl.com/"> <xsd:element name="sayHi" type="tns:sayHi"/> <xsd:complexType name="sayHi"> <xsd:sequence> <xsd:element minOccurs="0" name="text" type="xsd:string"/> </xsd:sequence> </xsd:complexType> <xsd:element name="sayHiResponse" type="tns:sayHiResponse"/> <xsd:complexType name="sayHiResponse"> <xsd:sequence> <xsd:element minOccurs="0" name="return" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:schema> </wsdl:types> <wsdl:message name="sayHi"> <wsdl:part element="tns:sayHi" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:message name="sayHiResponse"> <wsdl:part element="tns:sayHiResponse" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:portType name="IHelloWorld"> <wsdl:operation name="sayHi"> <wsdl:input message="tns:sayHi" name="sayHi"> </wsdl:input> <wsdl:output message="tns:sayHiResponse" name="sayHiResponse"> </wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="IHelloWorldServiceSoapBinding" type="tns:IHelloWorld"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="sayHi"> <soap:operation soapAction="" style="document"/> <wsdl:input name="sayHi"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="sayHiResponse"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="IHelloWorldService"> <wsdl:port binding="tns:IHelloWorldServiceSoapBinding" name="IHelloWorldPort"> <soap:address location="http://localhost:9000/HelloWorld"/> </wsdl:port> </wsdl:service> </wsdl:definitions> 最后,运行客户端程序,看看效果如果。 这一节就讲到此为止,下节对WSDL定义进行讲解,便于对上面这个Demo进行很好的消化,同时对后面章节启个辅塾作用。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-07-08
factory.setServiceClass(HelloWorld.class); 改成 factory.setServiceClass(IHelloWorld.class);
|
|
返回顶楼 | |
发表时间:2010-09-07
楼主下一界的内容在哪里呢、、、、???
刚接触 。。。想学习一下!!! |
|
返回顶楼 | |
发表时间:2010-12-03
在CXF2.0.7版本下可以运行
|
|
返回顶楼 | |