我已经使用axis2 java2wsdl实用工具从java类生成了一个WSDL,如下所示;
java2wsdl -o C:\temp -cn com.temenos.webservices.customer.CustomerServiceWS然后,我在127.0.0.1:8080/axis2/services/CustomerServiceWS?wsdl中的Application (例如jBoss)中部署了相同的web服务,我可以在http:// axis2上浏览wsdl,并通过标准客户端(如SoapUI )调用该服务上的方法。
现在的问题是,当我使用标准的java工具'wsimport‘生成客户机时,通过提供C:\temp (从java2wsdl实用工具生成的WSDL )的WSDL位置,我的客户端无法与部署的Web通信。我使用以下代码访问web服务;
// Initialise WS
CustomerServiceWS service = null;
CustomerServiceWSPortType servicePort = null;
try {
URL wsdlLocation = new URL("http://127.0.0.1:8080/axis2/services/CustomerServiceWS?wsdl");
QName serviceName = new QName("http://customer.webservices.temenos.com", "CustomerServiceWS");
service = new CustomerServiceWS(wsdlLocation, serviceName);
servicePort = service.getCustomerServiceWSHttpSoap12Endpoint();
} catch (MalformedURLException murle) {
murle.printStackTrace();
return;
}但是,在创建(服务端口)端点时,我会得到以下错误;
Exception in thread "main" javax.xml.ws.WebServiceException: An attempt was made to construct the ServiceDelegate object with an service name that is not valid: {http://customer.webservices.temenos.com}CustomerServiceWS.
at org.apache.axis2.jaxws.ExceptionFactory.createWebServiceException(ExceptionFactory.java:173)
at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:70)
at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:118)
at org.apache.axis2.jaxws.spi.ServiceDelegate.<init>(ServiceDelegate.java:218)
at org.apache.axis2.jaxws.spi.Provider.createServiceDelegate(Provider.java:59)
at javax.xml.ws.Service.<init>(Service.java:56)
at com.temenos.webservices.customer.CustomerServiceWS.<init>(CustomerServiceWS.java:42)
at com.temenos.services.customer.client.Client.testGetLanguage(Client.java:32)
at com.temenos.services.customer.client.Client.main(Client.java:21)我试过很多东西,但似乎什么都不喜欢。我有遗漏什么吗?
谢谢,
--
SJunejo
发布于 2012-06-21 12:10:24
问题是我在lib路径中使用了axis2,因为调用发生在axis2 (Axi2提供者)而不是Java提供程序上。我从类路径中删除了axis2库,它现在似乎运行正常。(虽然我仍然无法通过客户端调用我的web服务)
发布于 2015-04-25 19:42:35
请参阅WSDL文件的描述,并检查targetNamespace以获得在QName()中提供的url。也进口必要的包装。
https://stackoverflow.com/questions/11102509
复制相似问题