web-dev-qa-db-fra.com

Prise en charge de JAX-RS Jersey 2.10 dans Websphere 8

J'essaie d'utiliser Jersey 2.10 dans Websphere 8 mais il essaie de référencer l'application qui est une implémentation de JAX-RS 1.1 (Wink par défaut) .Je reçois cette erreur ci-dessous même si j'ai désactivé JAX-RS par défaut en définissant la propriété IBM.

Causé par: Java.lang.NoSuchMethodError: javax/ws/rs/core/Application.getProperties () Ljava/util/Map; at org.glassfish.jersey.server.ApplicationHandler. (ApplicationHandler.Java:287) sur org.glassfish.jersey.servlet.WebComponent. (WebComponent.Java:311)

J'ai lu un article qui dit de rendre la politique de chargement des classes à PARENT_LAST. La modification de cette option a été désactivée sur la console WAS, j'ai donc essayé d'utiliser les (Paramètres de publication pour WAS - Exécuter le serveur avec des ressources sur le serveur) et mon serveur s'est bloqué.

S'il vous plaît donnez votre avis. Merci.

22
jerry

Vous devez effectuer les étapes suivantes:

Désactiver le JAX-RS intégré via la propriété JVM com.ibm.websphere.jaxrs.server.DisableIBMJAXRSEngine=true Voir la description ici .
Vous pouvez définir cette propriété via la console d'administration Web dans Servers > WebSphere Application Servers > yourServerName. Puis dans la section Server InfrastructureJava and Process Management > Process definition > Java Virtual Machine > Custom properties.

Créer isolé bibliothèque partagée avec toutes les bibliothèques JAX-RS 2.10, dans la console via Environment > Shared Libraries.

La bibliothèque partagée isolée est créée via la vérification de l'option de chargement de classe Use an isolated class loader for this shared library Lors de la création de la bibliothèque.

Mappez cette bibliothèque partagée à votre application, soit lors de l'installation, soit ultérieurement, via Applications > appName > Shared library references.

Redémarrez le serveur d'applications. Dans le SystemOut.log, vous devriez voir un message d'initialisation des classes JAX-RS:

[7/12/14 16:10:36:470 CEST] 0000004a JerseyServlet I   Registering the Jersey servlet application, named javax.ws.rs.core.Application, with the following root resource and provider classes: [class jax.Hello, class org.glassfish.jersey.server.wadl.internal.WadlResource]
[7/12/14 16:10:36:688 CEST] 0000004a ApplicationHa I   Initiating Jersey application, version Jersey: 2.10.1 2014-06-30 13:53:32...

[~ # ~] mise à jour [~ # ~]

Il semble qu'il soit également possible de charger les pots JAX-RS depuis l'intérieur du WAR. Vous devez définir cette propriété DisableIBMJAXRSEngine et vous devez changer l'option de chargement de classe dans le chargeur de classe module (pas au niveau EAR) en Classes loaded with local class loader first (parent last)

Dans la console d'administration:

Applications> Applications WebSphere Enterprise> {votre.application}> Gérer les modules> {votre.module}

Modifiez la liste déroulante Ordre du chargeur de classe en: Classes loaded with local class loader first (parent last).

Merci pour les dooffas pour le vérifier, voir JAX-RS 2.0 WebSphere 8.5 sans bibliothèque partagée isolée

29
Gas