最近在研究ProcessMaker,ProcessMaker 2.5版本是用php发布的webservice,所以需要采用java 的cxf调用php的webservice过程。 要了解Web Service,关键的是wsdl。 步骤一: http://blog.163.com/kangle0925@126/blog/static/27758198201363111718168) 1、先
最近在研究ProcessMaker,ProcessMaker 2.5版本是用php发布的webservice,所以需要采用java 的cxf调用php的webservice过程。
要了解Web Service,关键的是wsdl。
步骤一:http://blog.163.com/kangle0925@126/blog/static/27758198201363111718168)
1、先下载cxf包:http://cxf.apache.org/download.html,现在cxf包。
2、解压缩包,通过cmd命令进入到bin目录下
3、使用wsdl2java命令生成客户端代码
在命令行执行wsdl2java -p com.winssage.demo.service -d d:\pmws -clientd:\pmws\wsdl2.xml (只需生成WebService客户端相关的代码即可)
wsdl2java用法:
wsdl2java -p com -d src -all aa.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.
步骤二:修改cxf的bean配置文件(spring集成)
ProcessMakerServiceSoap:为从wsdl生成的webservice 接口类(interface),必须赋值予工厂类org.apache.cxf.jaxws.JaxWsProxyFactoryBean的serviceClass属性。
工厂类org.apache.cxf.jaxws.JaxWsProxyFactoryBean的address属性:必须取自wsdl.xml文件中的service配置,如下
service
name="ProcessMakerService">
port name="ProcessMakerServiceSoap" binding="xs0:ProcessMakerServiceSoap">
soap12:address
location="http://192.168.1.215:80/sysworkflow/en/classic/services/soap2"/>
port>
service>
错误解决:A class/interface with the same name "XXX**" is already in use.
http://chenlin10058.iteye.com/blog/1558591)
1.使用-autoNameResolution自动处理
wsdl2java -autoNameResolution http://localhost:8060/soa/services/otherTrackedVehicleSoapService?wsdl
or
wsimport -p com.test.client -keep http://localhost:8060/soa/services/otherTrackedVehicleSoapService?wsdl-B-XautoNameResolution
错误解决:super相关代码编译报错:
其不能正常编译通过是由于jax-ws2.2规约与java6冲突,执行命令:
wsdl2java -frontend jaxws21 -client *.xml