2010-01-19 9 views
7

J'ai un service Web qui fonctionne correctement lorsque j'y accède à partir d'une application J2SE (de bureau). Pour accéder à ce service, je ne suis:client Web pour service Web

  1. générer des classes stub par liaison wsdl en utilisant l'outil wsimport java
  2. puis-je créer un service en utilisant des classes générées et exécutez l'une des wsdl operations.It ressemble à ceci:

    MyWebServiceService webService = new MyWebServiceService();

    MyWebService port = webService.getMyWebServicePort();

    webService.run ("XYZ");

Comme je suis triste, ça marche très bien quand je l'utilise dans une application autonome. Mais ... quand je tente d'accéder-service Web de la même manière, mais de servlet-client, en utilisant générés je talons rencontrer l'erreur suivante:

java.lang.ClassCastException: com.sun.xml.bind.v2.runtime.JAXBContextImpl cannot be cast to com.sun.xml.bind.api.JAXBRIContext 
org.jboss.ws.metadata.umdm.EndpointMetaData.eagerInitializeAccessors(EndpointMetaData.java:686) 
org.jboss.ws.metadata.umdm.EndpointMetaData.initializeInternal(EndpointMetaData.java:567) 
org.jboss.ws.metadata.umdm.EndpointMetaData.eagerInitialize(EndpointMetaData.java:553) 
org.jboss.ws.metadata.builder.jaxws.JAXWSClientMetaDataBuilder.rebuildEndpointMetaData(JAXWSClientMetaDataBuilder.java:314) 
org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.getPortInternal(ServiceDelegateImpl.java:271) 
org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.getPort(ServiceDelegateImpl.java:202) 
javax.xml.ws.Service.getPort(Service.java:143... 

J'ai cherché google depuis longtemps, mais rien trouvé des sujets utiles . Certains sujets montrent des exemples d'accès aux services web de servlet, mais je ne peux malheureusement pas faire ça ... (Et ne savent pas ce qui est cause de trouble

serveur d'application. Jboss 4.2.3GA

Est

J'ai essayé d'utiliser l'annotation @WebServiceRef, mais il semble que web-container ne puisse pas injecter de talon de service web et je pense que ce conteneur ne doit pas le faire lui-même. , parce que les classes de stub ont déjà été générées par l'outil wsimport, et qu'il est inutile d'utiliser ces classes pour accéder au service web

classes de Stub ont été générées à l'aide de la commande suivante:

wsimport -keep -p com.myhost.ws http://www.myhost.com/services/MyWebService?wsdl 
+0

trouvé cette https://jax-ws.dev.java.net/guide/Using_JAX_WS_2_1_with_JavaSE6.html peut être est-ce une racine du problème, je vais vérifier ... –

+0

Quelle version de java sont vous utilisez? Quelle version de JAX-WS RI? Emballez-vous JAX-RI dans votre guerre? –

+0

1. jdk 1.6.0_13 2. si RI est « interface distante », alors je ne sais pas comment déterminer sa version 3. Oui, RI est emballé trop –

Répondre

10

Avez-vous assurer que votre classpath ne contient pas plusieurs JAX-B Jars avec des versions différentes? L'exception ressemble à un conflit de version pour moi. Les serveurs d'applications disposent généralement d'un répertoire lib "endorsed" qui contient des fichiers JARS qui sont toujours ajoutés devant les chemins de classes d'applications Web. Peut-être votre serveur d'applications a-t-il une implémentation JAX-B conflictuelle? Si vous utilisez Maven pour empaqueter votre application, assurez-vous que les dépendances transitives n'entrent pas dans les JAX-B Jars indésirables (utilisez 'mvn dependency: tree' pour vérifier cela).

1

Cela ressemble vraiment à un conflit JAXB pour moi. Vérifiez les versions de jaxb que vous avez dans votre guerre et assurez-vous qu'elles ne sont pas en conflit avec un jax jaxb que Jboss peut avoir dans son répertoire lib.

+0

Résolu ce problème en supprimant la bibliothèque jboss-jaxws.jar de $ JBOSS_HOME/server/default/lib et les répertoires $ JBOSS_HOME/lib/endorsed ce lien m'a été utile: http://www.bluefishgroup.com/library/2007/ introduction-à-dfs-web-services-client-programming/ Un grand merci pour votre aide! –

1

Addytionally si la bibliothèque JBossWS natif a été installé correctement les paquets suivants devraient être supprimés de jboss_home/lib/endorsed:

  • jboss-jaxrpc.jar
  • jboss-JAXWS-ext.jar
  • jboss-jaxws.jar
  • jboss-saaj.jar

Sinon, vous ne pouvez pas vous connecter au service Web via un EJB ou une servlet.

Questions connexes