cxf开发并调用webservice

上篇文章xfire的使用中,我都已经介绍过webservice的概念的三个核心内容,并做了它的开发和调用,这里我就用同样的方式,来做一做cxf的。

第一步,下载apache-cxf-2.2.3.zip

第二步,新建一个java项目,把解压后cxf的lib下面的jar全都添加到项目的环境里

第三步,编写测试用接口和实现类,代码如下:

Java代码
  1. packagetest;
  2. importjavax.jws.WebService;
  3. publicinterfaceHello{
  4. @WebService
  5. publicStringsayHello(Stringstr);
  6. }

Java代码
  1. packagetest;
  2. publicclassHelloImplimplementsHello{
  3. publicStringsayHello(Stringstr){
  4. System.out.println("调用成功");
  5. return"Hello"+str;
  6. }
  7. }

第四步,编写服务端的生成代码,代码如下:

Java代码
  1. packagetest;
  2. importorg.apache.cxf.endpoint.Server;
  3. importorg.apache.cxf.jaxws.JaxWsServerFactoryBean;
  4. publicclassMainServer{
  5. publicstaticvoidmain(String[]args){
  6. JaxWsServerFactoryBeanfactory=newJaxWsServerFactoryBean();
  7. factory.setAddress("http://localhost:8080/HelloWebService");
  8. factory.setServiceClass(HelloImpl.class);
  9. Serverserver=factory.create();
  10. server.start();
  11. }
  12. }

第五步,打开浏览器,键入http://localhost:8080/HelloWebService?wsdl [注:cxf框架中自带jetty6服务器,所以这个例子是可以运行的],wsdl代码如下:

Java代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. -<wsdl:definitionsname="HelloImplService"targetNamespace="http://test/"xmlns:ns1="http://schemas.xmlsoap.org/soap/http"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns:tns="http://test/"xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  3. -<wsdl:types>
  4. -<xs:schemaelementFormDefault="unqualified"targetNamespace="http://test/"version="1.0"xmlns:tns="http://test/"xmlns:xs="http://www.w3.org/2001/XMLSchema">
  5. <xs:elementname="sayHello"type="tns:sayHello"/>
  6. <xs:elementname="sayHelloResponse"type="tns:sayHelloResponse"/>
  7. -<xs:complexTypename="sayHello">
  8. -<xs:sequence>
  9. <xs:elementminOccurs="0"name="arg0"type="xs:string"/>
  10. </xs:sequence>

第六步,就是模拟客户端,调用这个wsdl了,新建一个测试类,代码如下:

Java代码
  1. packagetest;
  2. importorg.apache.cxf.jaxws.JaxWsProxyFactoryBean;
  3. publicclassClient{
  4. publicstaticvoidmain(String[]args){
  5. JaxWsProxyFactoryBeanfactory=newJaxWsProxyFactoryBean();
  6. factory.setServiceClass(Hello.class);
  7. factory.setAddress("http://localhost:8080/HelloWebService");
  8. Hellohello=(Hello)factory.create();
  9. System.out.println(hello.sayHello("weberyb"));
  10. }
  11. }

运行后,我们可以在控制台看到下面的结果:

Java代码
  1. ....................
  2. 2009-8-1314:00:42org.apache.cxf.service.factory.ReflectionServiceFactoryBeanbuildServiceFromClass
  3. 信息:CreatingService{http://test/}HelloServicefromclasstest.Hello
  4. Helloweberyb

说明调用成功了。

这里需要额外提的是,假使你的jdk在1.6或以上的时候,你在导入jar的时候,你得多导入两个,axb-api.jarjaxws-api.jar,不然会报错的。

你可能感兴趣的:(webservice)