2010-01-19 27 views
7

Tengo un servicio web que funciona bien cuando accedo a ellos desde una aplicación J2SE (escritorio). Para acceder a este servicio me siguen,cliente web para servicio web

  1. generar clases stub por enlace WSDL utilizando la herramienta java wsimport
  2. entonces creo servicio utilizando las clases generadas y ejecutar uno de operations.It WSDL tiene el siguiente aspecto:

    MyWebServiceService webService = new MyWebServiceService();

    MyWebService port = webService.getMyWebServicePort();

    webService.run ("XYZ");

Como me entristece, funciona bien cuando lo uso en una aplicación independiente. Pero ... cuando intento acceder a la web de servicios de la misma manera pero a partir de servlet-cliente, utilizando módulos de programa generados consigo siguiente error:

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

He buscado en google mucho tiempo, pero no encontraron nada temas útiles . Algunos temas muestran ejemplos acceso de servicios web de servlet, pero por desgracia no pueden hacer esto ... (Y no saben lo que es causa de problemas

Application Server:. 4.2.3GA JBoss

Es es posible conectar el servicio web desde el servlet? ¿Cómo?

He intentado utilizar la anotación @WebServiceRef, pero parece que el contenedor web no puede insertar el tallo del servicio web. Y creo que el contenedor no debe hacerlo por sí mismo , porque las clases de stub ya han sido generadas por la herramienta wsimport, y su enouph para usar estas clases para acceder al servicio web.

clases de código auxiliar se generaron utilizando el siguiente comando:

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

encontraron esta https://jax-ws.dev.java.net/guide/Using_JAX_WS_2_1_with_JavaSE6.html puede ser esto es una raíz del problema, lo comprobaré ... –

+0

¿Qué versión de Java son estás usando? ¿Qué versión de JAX-WS RI? ¿Has empaquetado JAX-RI en tu guerra? –

+0

1. JDK 1.6.0_13 2. Si RI es 'interfaz remota', entonces no sé cómo determinar su versión 3. Sí, RI está empaquetado demasiado –

Respuesta

10

Quizás quiso asegurarse de que su ruta de clase no contiene varios JAX-B tarros con diferentes versiones? La excepción parece un conflicto de versión para mí. Los servidores de aplicaciones suelen tener algún tipo de directorio lib "respaldado" que contiene JARS que siempre se agregan frente a classpaths de aplicaciones web. ¿Tal vez su servidor de aplicaciones tiene una implementación JAX-B conflictiva allí?

Si usa Maven para empaquetar su aplicación, asegúrese de que las dependencias transitivas no extraigan los JAX-B Jars no deseados (use 'mvn dependency: tree' para verificar esto).

1

Esto definitivamente me suena como un conflicto JAXB. Revisa las versiones de jaxb que tienes en tu guerra y asegúrate de que no estén en conflicto con un jar de jaxb que Jboss pueda tener en su directorio lib.

+0

Resolvió este problema al eliminar la biblioteca jboss-jaxws.jar de $ JBOSS_HOME/server/default/lib y $ JBOSS_HOME/lib/endorsed directories este enlace fue útil: http://www.bluefishgroup.com/library/2007/ introducción-a-dfs-web-services-client-programming/ Muchas gracias por ayuda! –

1

Addytionally si jbossws biblioteca-nativa se ha instalado correctamente los siguientes paquetes debe eliminarse de jboss_home/lib/endosado:

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

De lo contrario, no tiene la capacidad de conectarse al servicio web a través de EJB o servlet.

Cuestiones relacionadas