Estoy tratando de implementar mi primera resto de la aplicación utilizando jersey 2.17.

Estoy usando Maven, GlassFish 3.1.2.2 para la implementación.

Aplicación se ejecuta en eclipse (tomcat), pero da el siguiente error cuando se implementa a través de la consola de administración de glassfish.

Error occurred during deployment: Exception while loading the app :
  java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException:
  java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;. 
Please see server.log for more details.

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>JerseyExample</groupId>
    <artifactId>JerseyExample</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <warSourceDirectory>WebContent</warSourceDirectory>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet-core</artifactId>
            <version>2.17</version>
        </dependency>
    </dependencies>
</project>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>JerseyExample</display-name>
    <servlet>
        <servlet-name>MyJerseyExample</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>jerseyExample.resource</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>MyJerseyExample</servlet-name>
        <url-pattern>/example/*</url-pattern>
    </servlet-mapping>
</web-app>
  • Glassfish ya posee en su interior un Jersey de implementación. Desgraciadamente 3.x utiliza un Jersey 1.x versión. El problema que se enfrenta es el resultado de la mezcla de Jersey 2.x con Jersey 1.x. No tengo idea de cómo actualizar Glassfish 3.x utilizar Jersey 2.x. Se me olvida donde lo leí, pero creo que parte de Glassfish utiliza Jersey para algunas otras características, por lo que para deshabilitar podría no ser posible (o en el mejor de romper algo en Glassfish). Si usted está buscando Jersey 2.x características específicas, tal vez de actualizar a Glassfish 4.x. De lo contrario, usted podría ser pegado con el uso de Jersey 1.x
  • NoSuchMethodError generalmente significa que usted está teniendo dos versiones diferentes de la clase en su ruta de clase.
  • Usted puede intentar la sustitución de la javax.ws.rs-api en el vaso de peces en el servidor. La ubicación, por ejemplo, puede tener este aspecto: «C:\Program Files\glassfish-4.1\glassfish\modules». Por favor, reemplace con la versión 2.0 o como otros dicen que usted puede actualizar a glassfish-4.
InformationsquelleAutor Bhushan | 2015-06-09

1 Comentario

  1. 5

    Aceptar miró a su problema. El Exterior de Glassfish v 3.1.2.2 que está utilizando es JAVA EE 6 compatible. Y el uno a través del cual se ejecuta la aplicación en eclipse JAVA EE 7 compatible.

    Echar un vistazo tanto a la de java docs:

    Clase de aplicación Java Doc para EE6

    Clase de aplicación Java Doc para EE7

    Verá que el getProperties fue presentada en JAVA EE 7.

    Simplemente actualizar a glassfish de la versión 4.x que es compatible con JAVA EE 7. Suponiendo nada más descansos debe ser bueno.

Dejar respuesta

Please enter your comment!
Please enter your name here