2017-01-17 1 views
0

Cela devrait ressembler à une question stupide, mais j'ai le problème suivant. Il existe un service Web externe, WSDL est disponible. Ma tâche consiste à appeler ses méthodes depuis une autre application d'entreprise (exécutée sur WebSphere 8.5) À l'aide de Rational Application Developer, j'ai généré des classes de client de service Web dans le projet de l'application, en spécifiant le package de l'application, DIFFERS du service Web. La méthode de service Web retourne un POJO, qui est un wrapper pour ArrayList.Then Je fais un appel au service Web, en utilisant calsses générés de la manière suivante:Client du service Web (JAX-WS) dans un package différent

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

Et comme conséquence, la dernière ligne de code, où le méthode est invoquée, provoque une erreur:

[1/17/17 21:55:39:758 MSK] 00000497 SystemErr R CIWEB Error: [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 is not known to this context

un regard sur le produit package-info.java le mappage suivant peut être vu:

@javax.xml.bind.annotation.XmlSchema(namespace = "http://webService.othercompany.com/") 
package com.mycompany.services.external.client; 

Si je laisse l'option d'origine (non Changin g paquet par défaut) tout en générant le client - le même problème et la même erreur. Mais dans ce cas, si je compile le client généré dans un fichier JAR distinct et l'utilise comme bibliothèque partagée pour mon application sur le serveur WebSphere, tout fonctionne correctement! Mais ce n'est pas acceptable pour certaines raisons.

Quelqu'un pourrait-il être si agréable de résoudre le problème?

Répondre

0

Je travaillais avec les services Web de base sur WSDL:

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

Bien sûr, utiliser Maven, j'utiliser ce pluging

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