6
votes

Jersey 2.1 + JBoss 7.1 Noschmethoderror: GetProperties

J'essaie de lancer Jersey 2.1 Service de repos sur JBoss 7.1 comme. Je reçois la nosuchmethoderror: javax.ws.rs.core.application.geproperties Erreur lors du déploiement: xxx

dans pom.xml j'ai: xxx

et dans le web.xml: xxx

précédemment, j'ai essayé avec Jersey 1.17.1 et cela a fonctionné (après avoir désactivé une analyse de numérisation et un système / sous-système de numérisation / sous-système de JOXR) . Jusqu'à présent, j'ai trouvé un post similaire (mais avec Tomcat) où la concusion était que le mauvais Javax.ws.rs.core.Application est lié au moment de l'exécution et que la classe liée est une "vieille" (jax- RS 1.1) Version.

Toute aide Comment résoudre ce problème? Je suis gars .net et je suis totalement aveugle en Java :) Merci Bartek


0 commentaires

3 Réponses :


0
votes

En bref, des modifications structurelles importantes ont été apportées entre 1,17 et 2,2 de la mise en œuvre du maillot. Vous devez:

1) étendre votre classe d'application de "org.glassfish.jerey.server.resourceconfig"

2) Ajouter la ligne de packages dans le Constructeur de classe d'application, comme: xxx

3) dans web.xml, vous devez mettre à jour un certain nombre d'endroits. Voir ci-dessous: xxx

4) déployer et amusez-vous.


0 commentaires

-1
votes

En outre, il semble que la pratique consistant à utiliser des caractères génériques dans la source Java soit obsolète.

pas ceci) p> xxx pré>

mais cela) p>

    @Path("/v1/status")


0 commentaires

1
votes

Je sais que ce fil n'est pas si frais, mais je ne frappe toujours pas ce problème hier et rien ne semble fonctionner.

Mon scénario est très similaire: Jersey 2.23.1 Application de repos (Jax-Rs 2.x) déjà en cours d'exécution sur Tomcat et doit courir sur JBoss 7.1.1 (Jax-RS intégré 1.1). P>

  1. désactiver la numérisation de package de repose-pieds dans votre web.xml: p>

        <servlet>
          <servlet-name>WebNize REST Service</servlet-name>
          <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
          <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>br.com.webnize.rest.service</param-value>
          </init-param>
          <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
          <servlet-name>WebNize REST Service</servlet-name>
          <url-pattern>/rest/*</url-pattern>
        </servlet-mapping>
    
  2. Supprimer toutes les étiquettes avec "JAXRS" de standalone.xml. Sinon, vous ferez toujours face à LinkageError car JBoss conserve 1.1 SPEC sur. P> LI>

  3. Créez votreapp.war! web-inf \ jboss-déploiement-structure.xml juste comme est signalé ici: https://docs.jboss.org/author/display/as7/class+Loading+InSaS7#ClassLoyinginas7-jbossDeployingStructureFile li> ol>

    De cette façon, non seulement: p>

    java.lang.noschmethoderror: javax.ws.r.core.application.geproperties () ljava / util / carte; Code> p>

    désapare, mais aussi, Jaxb fonctionne bien (no ClassNotFoundException pour javax.xml.bind.jaxbexception code> Une fois module javax.xml.bind.api code > est également activé). P>

    obs1 strong>: la question initiale est de mélanger maillot 1.x avec Jersey 2.x. Il n'y a pas de pojomappingFeature dans le jersey 2.x et le paquet de base est org.glassfish.jerey code>. Jetez un coup d'œil à https://jersey.java.net /documentation/latest/migration.html#mig-1-x-json P>

    OBS2 strong>: J'ai également essayé d'autres approches telles que l'extension de ResourcesConfig et de numériser des packages à partir de là ou enregistrer des cours directement. Rien n'a fonctionné comme la documentation appropriée dans l'élément 3. Alors gardé mon servlet intacte: p> xxx pré>

    J'espère que cela aide les autres! P> P>


0 commentaires