Domanda

Sto cercando di distribuire un servizio Web Axis2 su un server app OC4J 10.1.3.

Prima utilizzavo l'asse 1.4 e avevo appena creato la mia libreria condivisa con tutti i file. Si è verificato un problema con la versione 1.4 con patch 1.5, quindi ora lo sto usando, ma non include tutte le librerie. Questa volta ho distribuito axis2.war sul server OC4J e sto usando la pagina di amministrazione axis2 per tentare di distribuire il mio servizio web.

Se distribuisco un servizio web tramite axis2, riceverò un java.lang.NoSuchMethodError: javax.jws.WebMethod.exclude () Z ma non riesco a trovare la libreria in conflitto. Axis2 ha le nuove librerie jax-ws, ma penso che sia un problema sul server delle app OC4J. Ho escluso xml.jar (dal momento che ha vecchie librerie JAXB 1.0) e questo risolve il problema sul mio computer locale ma non sulla scatola di Linux.

Ho provato a modificare il piano di distribuzione per cercare prima le cartelle locali e questo mi consente di distribuire il servizio, ma quando provo ad accedervi, o WSDL, ricevo un errore riguardo un'eccezione di cast di classe e JXDocumentBuilderFactory (don non ha l'errore esatto in questo momento).

Ho confrontato le librerie condivise sulla scatola di Linux con quelle sulla mia macchina locale e ho usato le stesse su ognuna (non ho verificato le versioni di ogni vaso). Se axis2 è distribuito su OC4J e distribuisco il mio servizio su axis2, non erediterò le librerie axis2 (jax-ws, ecc.)?

È stato utile?

Soluzione

Prova a rimuovere la libreria ereditata in conflitto aggiungendola a orion-application.xml:

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

Altro qui: Rimozione e / o Sostituzione di una libreria condivisa Oracle importata per impostazione predefinita

Modifica
Ho cercato nelle librerie condivise e ho scoperto che non c'è, jws-api.jar viene caricato all'avvio e non può essere rimosso facilmente:

Sostituisci le librerie OCAX JAX-WS
OC4J ha il supporto preliminare per JAX-WS, purtroppo ciò significa che durante l'avvio di OC4J carica API JAX-WS obsolete e l'implementazione da parte di Oracle. Ciò si verifica anche prima che le librerie condivise entrino in azione, in una fase molto iniziale dell'avvio di OC4J.
Le librerie OC4J all'avvio sono configurate nel file boot.xml nel barattolo bootstrap $ ORACLE_HOME / j2ee / home / oc4j.jar. Per sbarazzarsi di questo:

1-Copia il file jar in $ {oracle.home} / webservices / lib / jaxws
2-Disimballare il file OC4J.jar

META-INF / boot.xml a 3 posizioni 4-Sostituisci il percorso in questa riga con il tuo vaso:

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

5-Repackage oc4j.jar (non dimenticare MANIFEST.MF - usa jar -m META-INF / MANIFEST.MF)

Articolo originale: Configurazione OC4J per servizi Web

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top