Pregunta

Estoy intentando implementar un servicio web Axis2 en un servidor de aplicaciones OC4J 10.1.3.

Estaba usando el eje 1.4 antes y acababa de crear mi propia biblioteca compartida con todos los archivos. Hubo un problema con 1.4 que fue parcheado con 1.5, así que ahora lo estoy usando, pero no incluye todas las bibliotecas. Esta vez implementé el axis2.war en el servidor OC4J y estoy usando la página de administración de axis2 para intentar implementar mi servicio web.

Si despliego un servicio web a través de axis2, obtendré un java.lang.NoSuchMethodError: javax.jws.WebMethod.exclude () Z pero no puedo encontrar la biblioteca en conflicto. Axis2 tiene las nuevas bibliotecas jax-ws, pero creo que es un problema en el servidor de aplicaciones OC4J. Excluí xml.jar (ya que tiene antiguas bibliotecas JAXB 1.0) y esto resuelve el problema en mi máquina local pero no en el cuadro de Linux.

Intenté editar el plan de implementación para buscar carpetas locales primero y esto me permite implementar el servicio, pero cuando intento acceder a él o al WSDL, aparece un error con respecto a una excepción de conversión de clase y JXDocumentBuilderFactory (no no tengo el error exacto en este momento).

Comparé las bibliotecas compartidas en el cuadro de Linux con las de mi máquina local y utilicé las mismas en cada una (aunque no verifiqué las versiones de cada jar). Si axis2 se implementa en OC4J y despliego mi servicio en axis2, ¿no heredaría las bibliotecas de axis2 (jax-ws, etc.)?

¿Fue útil?

Solución

Intente eliminar la biblioteca heredada en conflicto agregando esto a su orion-application.xml:

<orion-application>
  <imported-shared-libraries>
    <remove-inherited name="PUT_HERE_THE_NAME_OF_THE_LIBRARY"/>
  </imported-shared-libraries>
</orion-application>

Más aquí: Eliminación y / o Reemplazar una biblioteca compartida de Oracle importada por defecto

Editar:
Busqué en las bibliotecas compartidas y descubrí que no está allí, jws-api.jar se carga en el momento del arranque y no se puede eliminar fácilmente:

Reemplace las bibliotecas OC4J JAX-WS
OC4J tiene soporte preliminar para JAX-WS, desafortunadamente esto significa que durante el arranque de OC4J carga APIs obsoletas de JAX-WS e implementación por parte de Oracle. Esto ocurre incluso antes de que las bibliotecas compartidas entren en acción, en una etapa muy temprana del arranque de OC4J.
Las bibliotecas OC4J de tiempo de arranque se configuran en el archivo boot.xml en $ ORACLE_HOME / j2ee / home / oc4j.jar bootstrap jar. Para deshacerse de esto:

1-Copie el archivo jar a $ {oracle.home} / webservices / lib / jaxws
2-Desempaquete el archivo OC4J.jar
3-Localizar META-INF / boot.xml
4-Reemplace la ruta en esta línea con su jar:

<code-source 
   path="${oracle.home}/webservices/lib/jws-api.jar" 
   if="java.specification.version == /1\.[5-6]/"
/>  

5-Repackage oc4j.jar (no te olvides de MANIFEST.MF - usa jar -m META-INF / MANIFEST.MF)

Artículo original: Configuración OC4J para servicios web

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top