Überschreiben JAX-WS-version von Weblogic 10 - Dynamische WSDL-mit inline-schemas
Hat jemand erfolgreich aktualisiert die JAX-WS-version von Weblogic 10.3.3?
Ich versucht habe zu tun, was beschrieben wird, in der akzeptierten Antwort von hier für Stunden ohne Glück.
Bin ich mit Maven zu beheben, meine Abhängigkeiten und ich habe versucht, mit Kombinationen der folgenden Bibliotheken, in mein KRIEG-Modul (Web-service-Projekt):
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.2.8</version>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.7</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.jws</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.metro</groupId>
<artifactId>wsit-api</artifactId>
<version>2.2.1-1</version>
</dependency>
<dependency>
<groupId>org.glassfish.metro</groupId>
<artifactId>wsit-impl</artifactId>
<version>2.2.1-1</version>
</dependency>
Ist das Schiff eine neuere version von JAX-WS mit meiner Anwendung.
In mein OHR module, die ich gespielt habe mit den weblogic-application.xml
Datei überschreiben verschiedenen Paketen:
<package-name>javax.jws.*</package-name>
<package-name>javax.xml.ws.*</package-name>
<package-name>javax.xml.bind.*</package-name>
<package-name>javax.xml.soap.*</package-name>
<package-name>com.sun.xml.*</package-name>
Ist, um anzuzeigen, Weblogic zur Verwendung in meinen Kursen anstatt Klassen, die es in sich hat.
Derzeit mein Weblogic 10.3.3 ist mit JAX-WS 2.1.5 und wenn ich das bereitstellen eines web-service dynamisch generiert eine wsdl-Datei, die generierten wsdl importieren von xsds (Schemata) und ich möchte sagen, Weblogic zu generieren, die der wsdl-mit inline-schemas, das ist, warum ich versuche zu überschreiben, verwendet JAX-WS-version in der Hoffnung eine neuere version verwendet, inline-schemas.
Eine andere Möglichkeit wäre die Generierung der wsdl-mit inline-schemas, die bei der Entwicklung und irgendwie sagen Sie Weblogic verwenden, dass man anstelle der Erzeugung einer dynamischen version, tun, wer weiß, wie zu tun? ist es, dass es in einem bestimmten Pfad auf den KRIEG? was ist mit den wsdlLocation-Attribut in der @WebService-annotation?
Vielen Dank im Voraus!
- auf jeden Fall gehören die Fehlermeldung, die Sie trifft.
- Wenn ich bereitstellen, ohne die änderungen, die ich beschrieben habe, die app-Bereitstellung erfolgreich und ich kann den erzeugten (dynamischen) wsdl-mit der Legende: Generiert JAX-WS RI unter jax-ws.dev.java.net. RI s version ist Oracle JAX-WS 2.1.5., aber wenn ich für die Bereitstellung die änderungen, die die app noch erfolgreich eingesetzt, ABER die wsdl wird einfach nicht erzeugt. "Dieser Web-Service ist derzeit nicht verfügbar"
- Ich sehe. Vielen Dank für die explination. Sie gehen zu wollen, um Kurbel bis die debugging auf der JAX-WS zu DEBUGGEN. Da JaxWS 2.1.5 ist open-source... kann man wiederum auf einen debugger und schauen Sie, wo es wird in der WSDL-generation-Prozess, bevor es ausfällt. Beginnen Sie mit erste einige debug-logs und suchen Sie nach Fehlermeldungen im Zusammenhang mit autogenerating der WSDLs.
- Das ist eine gute Idee, ich werde in die jetzt Aussehen und poste meine Erkenntnisse, danke @NicholasDiPiazza
- Sobald Sie herausfinden, wie man die DEBUG-Protokolle für JAX-WS, wenn dieses problem tritt auf,... anfügen, dass die Infos hier als pastebin, und ich werde nehmen Sie ein looksie.
- in Weblogic ich gehen Sie zu "Home > Zusammenfassung von Servern > AdminServer > Debug" und aktivieren Sie die debug-Einstellungen, die für alle Bereiche und Attribute, die ich dann bereitstellen der app und meinem server-log-Datei ist riesig, aber es gibt nichts über die wsdl-Generierung in :S Außerdem habe ich ein root-appender, der sollte sich alles um die log4j config-Datei, die von der Domäne, wo mein app bereitgestellt wird und ich kann dort nichts finden entweder. Jede Anregung?
- Hmmm nicht sicher. Es geht um einen Log4j-appender mit dem jax-b-namespace
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich war in der Lage, JaxWs 2.2.6 laufen in Weblogic 10.3.5
Ich kenne deine arbeiten auf 10.3.3 aber diese Lösung sollte auch funktionieren.
Ich folgte den Schritten von dieser U-Bahn-Diskussion:
http://www.java.net/node/695058#comment-772902
Nicht alle Schritte wirklich erforderlich sind. So, hier ist die Beschreibung, was ich getan habe.
Schritte für die war-Datei
1) in einem Paket webservice als war-Datei
2) in der war-Datei benötigen Sie einen sun-jaxws.xml Datei unter WEB-INF-Verzeichnis (für detaillierte Informationen schauen Sie hier:
http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/2.0/jaxws/jaxws-war.html
)3) die wsdl-und xsd-Datei unter WEB-INF/wsdl
4) registrieren
WSServlet
undWSServletContextListener
in Ihremweb.xml
(für einige helfen, sich hier http://java.dzone.com/articles/jax-ws-deployment-five-minute)
5) Legen Sie mindestens eine service-Datei unter
WEB-INF/classes/META-INF/services
ich verwendet
javax.xml.ws.spi.Provider
und als Inhalt in die Datei (impl Klasse des Anbieters):
com.sun.xml.ws.spi.ProviderImpl
Sie können diese Datei aus jaxws-rt.jar
auch andere service-Dateien hier (zum Beispiel für verschiedene XeceresParserFactory)
Grund: Weblogic erzeugt zur Laufzeit eine Datei namens:
_wl_cls_gen.jar
. Und hier sieht es für die service-Dateien in den ersten Platz. Wenn weblogic gründet eine service-Datei, alle anderen Dateien geladen werden, die aus jar-Dateien als espected. zumindest verhält es sich wie in diesem6) Erstellen Sie eine
weblogic.xml
set
<prefer-web-inf-classes>false</prefer-web-inf-classes>
falseStruktur des Krieges Datei:
Schritte für die ear-Datei
1) Packen Sie Ihre war-Datei in einer ear-Datei
2) Stelle ein JaxWs-Service-Finder-Klasse unter
APP-INF/classes
Sie kann die bestehende class-Dateien aus JaxWs-rt.jar
3) jaxws-rt, alle Abhängigkeiten und xerces-2.9.1-und xalan-2.7.1 unter
APP-INF/lib
4) Erstellen Sie eine
application.xml
Datei5) Erstellen Sie eine
weblogic-application.xml
DateiAufmerksamkeit: Gläser, die in der ear-Datei unter
APP-INF/lib
sollte nicht in der war-Datei unterWEB-INF/lib
Struktur der ear-Datei:
Nun bereitstellen der ear-Datei weblogic.
wenn Sie öffnen Sie die wsdl-Datei
http://localhost:7001/MyWebService/MyWebService?wsdl
sollten Sie sehen, dieser Kommentar:hoffe dieses how-to ist/war irgendwie nützlich.
für einige debug-Informationen die ich Hinzugefügt dies zu meiner ServiceImpl-Klasse:
Grüße
Alex
PS: Als neuer Benutzer i#m nur posten darf 2 Links, bitte entschuldigen Sie dieses...
Ich mit dieser Lösung und war in der Lage, diese arbeiten...
Aber das problem ist, dass ich senden müssen ordnungsgemäße client-Zertifikat, so dass ich hat eine eigene SSLSocketFactory, die ich zugewiesen, die verbindlich:
bp.getRequestContext().put(JAXWSProperties.SSL_SOCKET_FACTORY,
Tat.getSSLSocketFactory());
Problem ist, dass weblogic nicht. Es verwendet seine eigenen HTTPsConnection mit standard-Fabrik. Ich habe versucht zu implementieren eines weblogic SSLSocketFactory aber die in die Bindung beklagt zu Recht, dass es nicht die Sonne Klasse.
Nach viel Zeit verschwendet ich eine Vorlage erstellt, die der Aufforderung (durch das laufen mein code als standalone), dann verwende ich XML zu ersetzen/aktualisieren von nodes (+ Aktion in http-header). Es funktioniert gut, und ich warf alle diese änderungen, falls erforderlich.
Ich weiß, es ist ein bisschen radikal, aber ehrlich zu implementieren, ein Anruf es funktioniert sehr gut.