CXF 生成客户端代码_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > CXF 生成客户端代码

CXF 生成客户端代码

 2015/3/11 18:31:52  阳阳.com  程序员俱乐部  我要评论(0)
  • 摘要:CXF生成客户端代码详情参见:ECLIPSE+CXFhttp://blog.csdn.net/segen_jaa/article/details/12947305点击打开链接设置环境变量setCXF_HOME=D:\apache-cxf-2.3.5//设置cxf根目录,此步可省setJAVA_HOME=D:\Java\jdk1.6.0//设置jdk目录客户端生成1、先下载cxf包http://cxf.apache.org/download.html,现在cxf包。点击打开链接2、解压缩包
  • 标签:代码 客户 客户端

CXF 生成客户端代码

详情参见:

ECLIPSE+CXF http://blog.csdn.net/segen_jaa/article/details/12947305点击打开链接

设置环境变量

set CXF_HOME=D:\apache-cxf-2.3.5 //设置cxf根目录,此步可省

set JAVA_HOME=D:\Java\jdk1.6.0//设置jdk 目录

客户端生成

1、先下载cxf包

http://cxf.apache.org/download.html,现在cxf包。点击打开链接

2、解压缩包,通过cmd命令进入到bin目录下

然后命令生成 :wsdl2java -p 包名 -d 生成文件存放的目录(必须存在) -client http://IP:端

口/XX/XXService?wsdl

-p不指定时会根据名称空间自动生成,所以一般不指定

cxf会自动生成clent示例代码

比较:

JDK生成客户端
wsimport -d /workspace/webservice/ -keep -verbose http://IP:端口/XX/XXService?wsdl

举例:--常用命令(天气)

wsdl2java -p com.xiangyang.weather.service.impl.client

?

常用命令

-d F:\webservice -client http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?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, and an Ant build.xml file.

?

?

注意:
-------------------------------------------------------------------------------------------------------
生成的客户端有时候在框架类调用父类的构造函数时会报错
如:


CheckI****Service

public CheckI****ServicePortType getCheckI****ServiceHttpPort(WebServiceFeature... features) {


return super.getPort(CheckI****ServiceHttpPort, CheckI****ServicePortType.class, features);


}




报错的原因为jax-ws2.2规约与java6冲突 故需要降低jax-ws规约版本

解决办法是在生成的命令中加入-frontend jaxws21

加入后命令如下: wsdl2java -frontend jaxws21 -d E:\zkr\project\client\src -client d:/Test.wsdl

通过java调用.net生成的wsdl时,需要将wsdl文件中的<s:element ref="s:schema" ></s:element><s:any ></s:any> 替换为 <s:any minOccurs="2" maxOccurs="2" ></s:any>

1.在浏览器中打开webservice url,保存wsdl文件,如ContentService.xml

2.通过cxf命令“wsdl2java –d E:/file –frontend jaxws21 –client C:\ ContentService.xml”生成客户端代码

3.若报WSDLToJava Error: Thrown by JAXB : undefined simple or complex type 'soap-enc:Array' ,

则需要在生成的文件中找到

<import namespace="http://schemas.xmlsoap.org/soap/encoding/" />,

在浏览器中打开http://schemas.xmlsoap.org/soap/encoding/,

保存文件soap-encoding.xsd,

然后修改成<import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="soap-encoding.xsd"/>,

再运行上面的命令即可。

4.如果需要NTLM认证,则需在代码中加入如下的代码:

Java代码 收藏代码

Client client = ClientProxy.getClient(port);

HTTPConduit http = (HTTPConduit) client.getConduit();

HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();

httpClientPolicy.setConnectionTimeout(36000);

httpClientPolicy.setAllowChunking(false);

http.setClient(httpClientPolicy);

http.getAuthorization().setAuthorizationType("NTLM");

http.getAuthorization().setUserName("xxxx");

http.getAuthorization().setPassword("xxxxx");
------------------------------------------------------------------------------------------------------
简单调用示例:

public static void main(String[] args) {

OpenApupProductService iApupProductService = new OpenApupProductServiceImplService().getOpenApupProductServiceImplPort();

ApupProductAll apa=iApupProductService.getProduct("NET001bba5ba711f3247a78a2693783dfe4fba");

System.out.println(apa.getApupProduct().getValue().getPid().getValue());
}

发表评论
用户名: 匿名