环境
winxp、win2003
jdk1.6.0_10
apache-tomcat-6.0.20
eclipse java ee ide v3.5.2
apache-cxf-2.3.0
将tomcat注册(反注册)成windows服务
将tomcat注册(反注册)成windows服务的方法,在控制台程序进入到tomcat的安装路径下的bin文件夹中,执行以下命令
service install
service uninstall
cxf ws client generator
用cxf-tool(wsdl2java)将wsdl转成java代码,格式如下:
wsdl2java wsdlfile.wsdl
或
wsdl2java http://xxxxxxx:xxxx/xxxxxx/wsdlfile.wsdl
在使用生成的service类时,需要留意的是所传入的基于Oracle SOA Suite的Routing Service的url的格式应该是:
URL url = new URL("http://soainquiry.accl.gcr-intranet.msd:7777/esb/wsil/InquirySystem/RouterForIncome?wsdl");
XXXXService service = new XXXXService(url);
而不是
URL url = new URL("http://soainquiry.accl.gcr-intranet.msd:7777/esb/wsil/InquirySystem/RouterForIncome");
XXXXService service = new XXXXService(url);
这点与用IBM RSD的WS Client Generator生成出来的代码有所区别。
部署到测试环境
部署是正常的,甚至能够在浏览器中显示到service的wsdl文件的内容。但是,soapui工具中测试报错,错误日志中,仅显示:
javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service。
这些信息不足以判断到底是不能在tomcat中创建基于cxf的service,还是因为不能创建基于cxf的用于访问Oracle soasuite的service的客户端。在测试服务器上,搭建了一套开发环境进行调试后,终于发现是因为测试服务器仅能联通Oracle soasuite的LB,但不能联通集群中的服务器server1和server2。在c:/windows/system32/drivers/etc/hosts文件中加入以下两行:
192.168.0.234 soaesbq1
192.168.0.235 soaesbq2
再次运行测试工具,通过。