2009-11-15 15 views
35

Estoy tratando de implementar algunos servicios web en una aplicación WAR en JBoss 5.1.0.setProperty debe ser reemplazado por todas las subclases de SOAPMessage

He creado los archivos fuente de un wsdl existente utilizando la herramienta JAX-WS wsgen. Esto creó los archivos Service y las clases anotadas @XmlType que actuarían como envoltorios de solicitud y respuesta.

Estas clases funcionaron bien en JBoss 4.2.3, pero cuando cambio a JBoss 5.1.0, obtengo esta excepción.

java.lang.UnsupportedOperationException: setProperty debe ser anulado por todas las subclases de SOAPMessage

Mi configuración:

  • Windows XP SP3 (pero conseguir el mismo en Vista, así como en Linux)
  • Sun JDK 1.6.0_17
  • JBoss 5.1.0 GA para jdk6

Gracias de antemano!

Respuesta

32

Hay algunas cosas que pueden salir mal, así que le diré lo que ayudó en mi caso (análogamente al suyo, estaba usando JDK 1.6.0_13).

El problema radica en que los archivos JAR no coinciden. En primer lugar, asegúrese de que JBoss esté utilizando JDK 1.6 y compruebe su entorno JAVA_HOME. variable. En segundo lugar, asegúrese de que sus clases estén compiladas utilizando JDK 1.6. Si ejecuta su proyecto desde Eclipse, asegúrese de que Eclipse utiliza el JDK correcto, lo mismo si ejecuta JBoss desde Eclipse.

Supongo que tiene razón, por lo que llega la magia. Al ejecutar el cliente no use use las bibliotecas desde $ JBOSS_HOME/client, pero utilice solo las que se proporcionan en $ JBOSS_HOME/lib/endorsed. Obviamente, si está utilizando cualquier otra API JAX-WS-no relacionada como JPA o EJB o Servlets, puede agregarlos a classpath, pero use solo lib/end JAX-WS JARs.

ayudó en mi situación particular en caso de JBoss 5.1, en versiones anteriores de JBoss algunos otros trucos trabajaron, por ejemplo, tratar opción java -Dsun.lang.ClassLoader.allowArraySyntax = true y/o añadir -Djava .endorsed.dirs = $ JBOSS_HOME/lib/endorsed al iniciar su cliente y JBoss.

+2

Gracias Piotr! Después de todo, el problema era que estaba iniciando JBoss desde dentro de eclipse, con su configuración de inicio automática ... que no pasa el parámetro -Djava.endorsed.dirs = $ JBOSS_HOME/lib/endorsed. Después de agregar esto (además de ejecutar JBoss desde el script run.bat) funcionó bien. ¡Gracias de nuevo! (Merece más de un voto por mi :)) –

+0

Intenté ambos "-Dsun.lang.ClassLoader.allowArraySyntax = true" y "-Djava.endorsed.dirs = $ JBOSS_HOME/lib/endorsed", no funcionó en 4.2.3.GA. –

+0

Creo que este tipo de solución es bastante mala, ya que podría tener un impacto en otras aplicaciones implementadas y dificultar el proceso de industrialización. El alcance debe estar limitado al paquete de la aplicación (como classloader config/filters). – Donatello

23

tuve el mismo problema con una actualización de JBoss 4.2.2 y encontró la respuesta en el JBoss 5.1.0 Release Notes:

JBossAS 5.0.0.GA pueden compilarse con Java5 & java6. El binario compilado de Java5 es nuestra distribución binaria primaria/recomendada. Ha sido sometido a rigurosas pruebas y puede ejecutarse tanto en tiempo de ejecución de Java 5 como de Java 6. Cuando se ejecuta en Java 6 tiene que copiar manualmente las siguientes bibliotecas del directorio JBOSS_HOME/cliente al directorio JBOSS_HOME/lib/respaldado, por lo que se utilizan las API JAX-WS 2.0 apoyados por JBossWS:

  • jbossws- native-saaj.jar
  • jbossws-native-jaxrpc.jar
  • jbossws-native-jaxws.jar
  • jbossws nativo-jaxws-ext.jar

que estaba usando la distribución de JBoss 5.1.0 build con Java 5 (que se ejecuta en el JDK 1.6.0_20) y por supuesto copiar estos archivos JAR en el directorio endosado solucionó el problema. No estamos utilizando la versión compilada para Java 6 debido a la nota:

Sin embargo, debe tenerse en cuenta que la distribución compilada de Java 6 de JBoss AS 5 todavía está en etapa experimental.

7

Podría deberse a un problema de conflicto con SAAJ jar. Copie Jboss 's Saaj jar desde {Jboss_HOME}/LIB hasta {JBOSS_HOME}/lib/endorsed. Espero que esto ayude a resolver el problema,

+4

Copiando el archivo jboss-saaj.jar del directorio jboss/server//lib a jboss/lib/endorsed hice el truco para mí en jboss-4.2.3.GA –

4

Asegúrese de iniciar JBoss con las opciones jvm apuntando a las librerías respaldadas. Esto no está configurado de manera predeterminada si inicia JBoss desde Eclipse, usando WTP, aunque lo es si inicia JBoss desde la línea de comando.

Usted puede añadir lo siguiente a los argumentos de VM de la configuración de lanzamiento:

-Djava.endorsed.dirs="${JBOSS_HOME}\jboss-as\lib\endorsed" 
+0

Es bueno tener en cuenta que el eclipse no expandirá $ JBOSS_HOME en las opciones de jvm de un objetivo de ejecución. –

+0

¡Guau, terminé aquí de nuevo hoy y ni siquiera recuerdo la primera vez! –

0

copié lib necesario (saaj-impl en mi caso) a la guerra de la distribución cxf y encendí JBoss aislamiento cargador de clases con el archivo /WEB-INF/jboss-classloader.xml de los siguientes contenidos:


<classloading xmlns="urn:jboss:classloading:1.0" 
    domain="MyDomain" 
    export-all="NON_EMPTY" 
    import-all="true"> 
</classloading> 

esperanza esta ayuda a alguien.

0

Si se produce este error en el cliente mientras se ejecuta una aplicación cliente que necesita para seguir pasos similares, además de los que en esta answer:

  1. Determine qué instancia de la JVM está ejecutando la aplicación. En mi caso, tuve aplicaciones independientes usando el JDK y los applets usando el JRE. Esto será en algún lugar como /path/jre/bin/

  2. Agregue los frascos de este answer al . Tuve que crear el directorio endorsed.

Esto le dice a la VM que cargue las implementaciones específicas de jboss antes de que el lenguaje java se establezca de manera predeterminada. Esto ocurre en el cargador de clases de arranque, mucho antes de que se carguen los archivos jar en classpath.

2

trate de seguir los tarros a su jboss/lib/carpeta respaldado

jbossws-native-jaxws.jar 
jbossws-native-jaxrpc.jar 
jbossws-native-saaj.jar 
jbossws-native-saaj.jar 
1

Mi proyecto se basa simplemente en:

  • CXF 2.5 .0 (Consumer WebService jabón)
  • montaje WAR (sin EAR)
  • no jboss-web
  • no jboss-classloading
  • no hay cambios en jboss/lib/endosado (sólo xalan, serializador, xercesImpl)
  • se ejecuta en jboss-4.2.1.GA + JDK 1,6

lo que funcionó para mí fue simplemente añadir ver estos dependencias de maven, junto a CXF:

<dependency> 
     <groupId>javax.xml.ws</groupId> 
     <artifactId>jaxws-api</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.xml.ws</groupId> 
     <artifactId>jaxws-rt</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.xml.ws</groupId> 
     <artifactId>jaxws-tools</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.codehaus.woodstox</groupId> 
     <artifactId>woodstox-core-asl</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.xml.messaging.saaj</groupId> 
     <artifactId>saaj-impl</artifactId> 
    </dependency> 

Espero que ayude!

0

La configuración de mi servidor es Jboss AS 4.2.1 GA y, como a continuación, funciona;

Bibliotecas que utilicé en lib \ endorsed;

  • JAXWS2.1.1_20070501
  • jbossws nativo-JAXRPC
  • jbossws nativo-jaxws
  • jbossws nativos-jaxws-EXT
  • jbossws nativo-saaj
  • serializador
  • xalan
  • xercesImpl
0

Adición saaj-impl a carpeta de la liberación de mi aplicación web fija este error. Estoy usando JBoss 4.2.3 y CXF 2.4.10.

Cuestiones relacionadas