繁体   English   中英

不同包中的Web服务(JAX-WS)客户端

[英]Web service (JAX-WS) client in different package

应该看起来像一个愚蠢的问题,但是我有以下问题。 有一个外部Web服务,WSDL可用。 我的任务是从另一个企业应用程序(在WebSphere 8.5中运行)调用它的方法。使用Rational Application Developer,我在应用程序的项目中生成了Web服务客户端类,并指定了应用程序的包,该包与Web服务的包不同。 Web服务的方法返回一个POJO,它是ArrayList的包装器。然后我使用生成的Cals通过以下方式调用Web服务:

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错误:[admin(未知)@ 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服务器上应用程序的共享库,那么一切正常! 但这出于某些原因是不可接受的。

有人可以这么高兴地帮助我解决问题吗?

我曾经使用基于WSDL的Web服务:

示例: http//www.dgii.gov.do/wsMovilDGII/WSMovilDGII.asmx?wsdl

当然使用MAVEN,我使用这个插件

<plugins>
            <plugin>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-codegen-plugin</artifactId>
                <version>3.1.5</version>
                <executions>
                    <execution>
                        <id>generate-sources</id>
                        <phase>generate-sources</phase>
                        <configuration>
                            <sourceRoot>${basedir}/src/main/java/</sourceRoot>
                            <wsdlOptions>
                                <wsdlOption>
                                    <wsdl>http://www.dgii.gov.do/wsMovilDGII/WSMovilDGII.asmx?wsdl</wsdl>
                                    <packagenames>
                                        <packagename>com.hectorvent.consultadgii</packagename>
                                    </packagenames>
                                </wsdlOption>
                            </wsdlOptions>
                        </configuration>
                        <goals>
                            <goal>wsdl2java</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM