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

时间:2017-01-17 19:33:31

标签: java web-services package client jax-ws

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

self.myCollectionView.frame = CGRectMake(0,0,[UIScreen mainScreen] bounds].size.width, 800)

结果,调用该方法的最后一行代码会导致错误:

  

[1/17/17 21:55:39:758 MSK] 00000497 SystemErr R CIWEB错误:   [admin(unknown)@ 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,可以看到以下映射:

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);

如果我在生成客户端时保留原始选项(不更改默认包) - 同样的问题和相同的错误。但在这种情况下,如果我将生成的客户端打包到一个单独的JAR中并将其用作我在WebSphere服务器上的应用程序的共享库 - 那么一切正常!但由于某些原因,这是不可接受的。

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

1 个答案:

答案 0 :(得分:0)

我曾经在WSDL上使用Web Services Base:

示例: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>