Remplacer JAX-WS version utilisée par Weblogic 10 - Dynamique WSDL avec des schémas en ligne
Quelqu'un a avec succès mis à jour le JAX-WS version utilisée par Weblogic 10.3.3?
J'ai essayé de faire ce qui est décrit dans la accepté de répondre à de ici pendant des heures avec pas de chance.
J'utilise Maven pour résoudre mon dépendances et j'ai essayé avec des combinaisons à l'aide des bibliothèques dans ma GUERRE module (projet de service Web):
<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>
C'est essentiellement pour expédier une version plus récente de JAX-WS avec mon application.
Dans mon OREILLE module, j'ai joué avec le weblogic-application.xml
fichier primordial différentes formules:
<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>
C'est pour indiquer Weblogic pour utiliser mes classes au lieu de les classes qu'il a en lui-même.
Actuellement mon Weblogic 10.3.3 est à l'aide de JAX-WS 2.1.5 et quand je déployer un service web, il génère dynamiquement un fichier wsdl, le wsdl généré est de l'importation de xsds (schémas) et je tiens à dire Weblogic pour générer le wsdl avec des schémas en ligne, c'est pourquoi je suis en train de remplacer l'utilisé JAX-WS version en espérant une version plus récente utilise des schémas en ligne.
Une autre option serait de générer le wsdl avec des schémas en ligne au cours du développement et en quelque sorte dire Weblogic pour l'utiliser à la place de générer une dynamique de version, de faire ce que quelqu'un sait comment faire cela? est-il le mettre dans un chemin d'accès spécifique sur la GUERRE? quel est le wsdlLocation attribut sur l' @WebService annotation?
Merci d'avance!
Si je déployer sans aucune des modifications que j'ai décrit, l'application se déploie avec succès et je peux voir le générés (dynamique) wsdl avec la légende: Généré par JAX-WS RI à jax-ws.dev.java.net. RI version Oracle JAX-WS 2.1.5., mais quand j'ai déployer avec les changements que l'application est toujours déployé avec succès MAIS le wsdl est tout simplement pas généré. "Ce Service Web n'est pas disponible actuellement"
Je vois. Merci pour cette explination. Vous allez vouloir monter le débogage sur le JAX-WS pour DÉBOGUER. Parce que JaxWS 2.1.5 est open source... vous pouvez activer un débogueur et de regarder où il obtient dans le processus de génération WSDL avant qu'il tombe en panne. Démarrer avec l'obtention de certains journaux de débogage et de regarder pour les messages d'erreur liées à autogenerating le langage wsdl.
C'est une bonne idée, je vais regarder dans l'instant et d'après mes constatations, merci @NicholasDiPiazza
Une fois que vous comprendre comment obtenir les journaux de DÉBOGAGE pour JAX-WS lorsque ce problème se produit... le joindre info ici comme un pastebin et je vais prendre un looksie.
OriginalL'auteur Adolfo | 2012-10-03
Vous devez vous connecter pour publier un commentaire.
J'ai été en mesure d'obtenir JaxWs 2.2.6 cours d'exécution dans Weblogic 10.3.5
Je sais que vous travaillez sur 10.3.3 mais cette solution devrait également fonctionner.
J'ai suivi les étapes de ce MÉTRO de discussion:
http://www.java.net/node/695058#comment-772902
Pas toutes les étapes à partir de là sont vraiment nécessaires. Voici donc la description de ce que j'ai fait.
Étapes de la guerre de fichier
1) Paquet de votre webservice que la guerre de fichier
2) dans le fichier war vous avez besoin d'un sun-jaxws.xml fichier sous le répertoire WEB-INF (pour plus de détails voir ici:
http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/2.0/jaxws/jaxws-war.html
)3) placer le wsdl et xsd fichier sous WEB-INF/wsdl
4) inscrivez-vous
WSServlet
etWSServletContextListener
dans votreweb.xml
(pour obtenir de l'aide regardez ici http://java.dzone.com/articles/jax-ws-deployment-five-minute)
5) Placer au moins un fichier de service en vertu de
WEB-INF/classes/META-INF/services
j'ai utilisé
javax.xml.ws.spi.Provider
et comme contenu dans le fichier (impl classe du fournisseur):
com.sun.xml.ws.spi.ProviderImpl
vous pouvez obtenir ce fichier à partir de jaxws-rt.jar
place aussi à d'autres fichiers de service (par exemple pour les différents XeceresParserFactory)
raison: Weblogic génère lors de l'exécution d'un fichier appelé:
_wl_cls_gen.jar
. Et ici, il semble pour le service de fichiers dans la première place. Lorsque weblogic fonde un fichier de service il y a tous les autres fichiers sont chargés à partir de fichiers jar comme espected. au moins il se comporte comme cela6) Créer un
weblogic.xml
ensemble
<prefer-web-inf-classes>false</prefer-web-inf-classes>
de fauxStructure du fichier war:
Étapes pour l'oreille fichier
1) Pack de guerre le fichier dans un fichier ear
2) Placez un JaxWs Service Finder classe sous
APP-INF/classes
vous pouvez utiliser les fichiers de classe de JaxWs-rt.jar
3) Placer jaxws-rt, toutes les dépendances et xerces-2.9.1 et xalan-2.7.1 sous
APP-INF/lib
4) Créer un
application.xml
fichier5) Créer un
weblogic-application.xml
fichierAttention: pots qui sont dans le fichier ear de sous
APP-INF/lib
ne devrait pas être en guerre de fichier sousWEB-INF/lib
Structure de l'oreille fichier:
Maintenant déployer le fichier ear de weblogic.
lorsque vous ouvrez votre fichier wsdl
http://localhost:7001/MyWebService/MyWebService?wsdl
vous devriez voir ce commentaire:espère que ce tuto est/a été en quelque sorte utile.
pour certains de débogage informations que j'ai ajouté à mon ServiceImpl classe:
ce qui concerne
Alex
PS: en tant Que nouvel utilisateur, j'#m seulement autorisé à poster des 2 liens hypertextes, veuillez excuser cette...
OriginalL'auteur Alex
J'ai utilisé cette solution et a été en mesure de le faire fonctionner...
Mais le problème est que j'ai besoin d'envoyer bon certificat du client j'ai donc créé un custom SSLSocketFactory que j'ai affecté à la liaison:
bp.getRequestContext().mettre(JAXWSProperties.SSL_SOCKET_FACTORY,
fait.getSSLSocketFactory());
Problème est que weblogic ne l'utilise pas. Il utilise son propre HTTPsConnection avec la norme d'usine. J'ai essayé de mettre en œuvre un weblogic SSLSocketFactory mais le mettre dans la liaison se plaint à juste titre qu'il n'est pas le soleil de la classe.
Après beaucoup de temps perdu, j'ai créé un modèle de l'appel (par l'exécution de mon code de manière autonome), puis-je utiliser XML pour remplacer/mettre à jour les nœuds (+ d'action dans l'en-tête http). Il fonctionne très bien, et je me suis débarrassé de tous ces changements si nécessaire.
Je sais que c'est un peu radical, mais honnêtement, pour mettre en œuvre un appel il fonctionne très bien.
OriginalL'auteur user2678835