【发布时间】:2017-01-17 19:33:30
【问题描述】:
应该看起来像一个愚蠢的问题,但我有以下问题。 有一个外部 Web 服务,WSDL 可用。我的任务是从另一个企业应用程序(在 WebSphere 8.5 上运行)调用它的方法 使用 Rational Application Developer,我将 Web 服务客户端类生成到应用程序的项目中,指定应用程序的包,该包与 Web 服务的包不同。 Web 服务的方法返回一个 POJO,它是 ArrayList 的包装器。然后我调用 Web 服务,使用以下方式生成的 calsses:
package com.mycompany.services.external;
import com.mycompany.services.external.client.SomeCommonService;
import com.mycompany.services.external.client.SomeCommonServiceService;
import com.mycompany.services.external.client.IdsList;
final QName COMMONSERVICE_QNAME = new QName("http://webService.othercompany.com/", "SomeCommonServiceService");
String strUrl = "http://....";
String query = "/universal [@Barcode=\"000111\"]";
URL serviceUrl = new URL(strUrl);
SomeCommonServiceService service=new SomeCommonServiceService(serviceUrl, COMMONSERVICE_QNAME);
SomeCommonService port = service.getSomeCommonServicePort();
IdsList itemsIds = port.getItemsIdsByQuery(query);
因此,调用该方法的最后一行代码会导致错误:
[1/17/17 21:55:39:758 MSK] 00000497 SystemErr R CIWEB 错误: [管理员(未知)@ 10.253.32.24] com.ibm.ecm.util.PluginUtil.invokeService() javax.xml.ws.WebServiceException:javax.xml.bind.JAXBException: com.mycompany.services.external.client.IdsList 对此不了解 上下文
查看生成的 package-info.java 可以看到以下映射:
@javax.xml.bind.annotation.XmlSchema(namespace = "http://webService.othercompany.com/")
package com.mycompany.services.external.client;
如果我在生成客户端时保留原始选项(不更改默认包) - 相同的问题和相同的错误。但是在这种情况下,如果我将生成的客户端打包到一个单独的 JAR 中并将其用作 WebSphere 服务器上我的应用程序的共享库 - 那么一切正常!但由于某些原因,这是不可接受的。
有人能这么愉快地帮我解决问题吗?
【问题讨论】:
标签: java web-services package client jax-ws