Axis 1.x 客户端调用CXF 2.7 服务端

axis全称Apache EXtensible Interaction System 即阿帕奇可扩展交互系统。Axis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。

最近在项目里面使用了webservices技术,但是框架 客户那边已经选择好了。 服务端已经完成了。我们没有选择。只能调用。

 

这边客户端是使用的axis1.x  服务端使用的是CXF 2.7 下面我们就简单的写一个用例 来介绍下webservices搭建和调用。

 

首先 我们到http://cxf.apache.org上面下载cxf2.7版本。

在Eclipse里面新建一个Java工程  把jar增加到项目里面。在src下面新建一个包 me.service.biz

 

下面我们开始新建一个接口:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
package  me.service.biz;
 
import  javax.jws.WebMethod;
import  javax.jws.WebParam;
import  javax.jws.WebService;
 
@WebService
public  abstract  interface  EwmBiz {
 
     @WebMethod
     public   String getEwmmethodFor( @WebParam (name= "text" ) String text)  throws  Exception;
     
}

在包me.service.biz.impl下面新建一个实现类

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package  me.service.biz.impl;
 
import  javax.jws.WebService;
 
import  me.service.biz.EwmBiz;
 
 
@WebService (endpointInterface= "me.service.biz.EwmBiz" ,name= "EwmBiz" )
public  class  EwmBizImpl  implements  EwmBiz{
 
     @Override
     public  String getEwmmethodFor(String text)  throws  Exception {
         
         System.out.println( "parameter is =======>>>> "  + text);
         
         return  "parameter is =======>>>> "  + text;
     }
     
}

我们的接口就完成了 下面我们写一个main方法来启动服务端:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package  me.service;
 
import  me.service.biz.EwmBiz;
import  me.service.biz.impl.EwmBizImpl;
 
import  org.apache.cxf.endpoint.Endpoint;
import  org.apache.cxf.jaxws.JaxWsServerFactoryBean;
 
public  class  ServiceRun {
 
     public  static  void  main(String[] args) {
 
         System.out.println( "Starting Server" ); 
         EwmBiz ewmBiz =  new  EwmBizImpl(); 
         String address =  "http://localhost:8090/EwmBiz"
         javax.xml.ws.Endpoint.publish(address, ewmBiz); 
         
         System.out.println( "服务启动完成。。。。" );
 
     }
}

上面启动一下 我们的服务端就完成了。

 

下面我们新建一个Java工程  完成client 客户端的调用  把axis下面的jar全部加到lib下面  在加一个commons-logging.jar

在src下面新建一个Java类

代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package  me.client;
 
import  java.net.URL;
 
import  javax.xml.namespace.QName;
import  javax.xml.rpc.ParameterMode;
 
import  org.apache.axis.client.Call;
import  org.apache.axis.client.Service;
 
public  class  ClientRun {
     
     public  static  void  main(String[] args)  throws  Exception {
         
         String url =  "http://localhost:8090/EwmBiz" ;
         Service service =  new  Service();
         Call call = (Call) service.createCall();
         
         call.setTargetEndpointAddress( new  URL(url));
         
         String targetNamespace =  "http://biz.service.me/" ;
         
         QName qName =  new  QName(targetNamespace, "getEwmmethodFor" );
         call.setOperationName(qName);
         
//      QName qName2 = new QName(targetNamespace, "");
         
         call.addParameter( "text" null ,ParameterMode.IN);
         
         String message = (String) call.invoke(  new  Object[]{ "yangzhongren" });
         System.out.println(message);
     }
     
}

这样我们测试一下 可以的 是调用通了。

 

 

引自:http://my.oschina.net/superman158/blog/337264

猜你喜欢

转载自2277259257.iteye.com/blog/2294609