`

cxf开发webservice客户端

    博客分类:
  • cxf
 
阅读更多

在项目开发中,由于需要与其他的系统对接,然而其他系统的可能是采用C#或者asp.net的语言开发的,所以我们需要通过服务端产生的wsdl来生产客户端。

 

基于上http://liuwuhen.iteye.com/admin/blogs/1666189采用cxf开发产生的服务端,来实现客户端开发。

 

1.通过服务端产生的wsdl文件,生成客户端代码 ,cxf的中可以通过wsdl2java命令,自动生成客户端代码。

 

    首先下载apache-cxf-2.0.13源文件,进入到D:\apache-cxf-2.0.13\bin目录,执行

 

     wsdl2java -d src -all  HelloWorld.wsdl

 

-p  指定其wsdl的命名空间,也就是要生成代码的包名。
-d  指定要产生代码所在目录。
-client 生成客户端测试web service的代码。
-server 生成服务器启动web  service的代码。
-impl 生成web service的实现代码。
-ant  生成build.xml文件。
-all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object。

 

详细用法见:http://cwiki.apache.org/CXF20DOC/wsdl-to-java.html

 

由于是通过命令自动生成的,所以产生了代码比较的多,所以我们需要删除XXXService.java,XXX_Client.java、XXX_Server.java

 

如果是生成服务端代码时,需要注意:

修改以XX_PortTypeImpl.java的结尾的文件,是接口类的实现类,其中也有一行注解:要把这里的
wsdlLocation = "file:HelloWorld.wsdl", 
指定wsldLocation的路径,一般放在本地工程的src下面。

 

 

在这里生成的客户端接口如下:

@WebService(targetNamespace = "http://cxf.liuwuhen.com/", name = "IHelloWorld")

public interface IHelloWorld {

    @RequestWrapper(localName = "sayHello", targetNamespace = "http://cxf.liuwuhen.com/", className = "com.liuwuhen.cxf.SayHello")
    @ResponseWrapper(localName = "sayHelloResponse", targetNamespace = "http://cxf.liuwuhen.com/", className = "com.liuwuhen.cxf.SayHelloResponse")
    @WebMethod
    public void sayHello(
        @WebParam(name = "arg0", targetNamespace = "")
        java.lang.String arg0
    );
}

 

 

 

2.编写相关的测试方法。

 

基于webservice的客户端测试方法有很多种,可用采用工具例如:SOAPUI,也可以自己编写相关的测试代码。

 

在这里我采用的是编程式,编写客户端相关测试代码。

 

public static void main(String[] args)
{
  JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
  // 注册WebService接口
  factory.setServiceClass(IHelloWorld.class);
  // webservice请求地址
  String wsdlAdder = "http://localhost:8080/cxf-test/services/sayHello";
  // 发布接口
  factory.setAddress(wsdlAdder);
  IHelloWorld helloWorld = (IHelloWorld) factory.create();
  helloWorld.sayHello("cxf hello");
}

 

 

3.运行其客户端java类,即可输出 "say cxf hello".

 

   

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics