Le déploiement a réussi lorsque je n'ai pas déclaré @ApplicationPath dans mon implémentation ResourceConfig . Mais ensuite, j'ai eu une erreur 404 en essayant de consommer le service. Selon la documentation de Jersey, @ApplicationPath est nécessaire pour aucun déploiement web.xml (Exemple 4.3).

[ERREUR] échec distant: une erreur s'est produite lors du déploiement: exception lors du chargement de l'application: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.ArrayIndexOutOfBoundsException : 0. Veuillez consulter server.log pour plus de détails

[2015-12-28T09: 33: 40.826 + 0800] [glassfish 4.1] [SEVERE] [] [javax.enterprise.web] [tid: _ThreadID = 123 _ThreadName = admin-listener (6)] [timeMillis: 1451266420826] [levelValue: 1000] [[
WebModule [/BBQuay-Entertainment-1.0-SNAPSHOT] StandardWrapper.Throwable java.lang.ArrayIndexOutOfBoundsException: 0 à org.glassfish.jersey.server.ApplicationHandler.initialize (ApplicationHandler.java:505) à org.glassfish.jersey.server.ApplicationHandler.access 500 $ (ApplicationHandler.java:182) à org.glassfish.jersey.server.ApplicationHandler $ 3.call (ApplicationHandler.java:348) à org.glassfish.jersey.server.ApplicationHandler $ 3.call (ApplicationHandler.java:345) à org.glassfish.jersey.internal.Errors.process (Errors.java:315) à org.glassfish.jersey.internal.Errors.process (Errors.java:297) à org.glassfish.jersey.internal.Errors.processWithException (Errors.java:255) à org.glassfish.jersey.server.ApplicationHandler. (ApplicationHandler.java:345) à org.glassfish.jersey.servlet.WebComponent. (WebComponent.java:390) à org.glassfish.jersey.servlet.ServletContainer.init (ServletContainer.java:170) à org.glassfish.jersey.servlet.ServletContainer.init (ServletContainer.java:362) à javax.servlet.GenericServlet.init (GenericServlet.java:244) à org.apache.catalina.core.StandardWrapper.initServlet (StandardWrapper.java:1583)Can't load full resultsTry againRetrying...Retrying...

Le journal des erreurs de déploiement est extrait ci-dessous:

[2015-12-28T09: 33: 40.826 + 0800] [glassfish 4.1] [SEVERE] [] [javax.enterprise.web] [tid: _ThreadID = 123 _ThreadName = admin-listener (6)] [timeMillis: 1451266420826] [levelValue: 1000] [[
WebModule [/BBQuay-Entertainment-1.0-SNAPSHOT] StandardWrapper.Throwable java.lang.ArrayIndexOutOfBoundsException: 0 à org.glassfish.jersey.server.ApplicationHandler.initialize (ApplicationHandler.java:505) à org.glassfish.jersey.server.ApplicationHandler.access 500 $ (ApplicationHandler.java:182) à org.glassfish.jersey.server.ApplicationHandler $ 3.call (ApplicationHandler.java:348) à org.glassfish.jersey.server.ApplicationHandler $ 3.call (ApplicationHandler.java:345) à org.glassfish.jersey.internal.Errors.process (Errors.java:315) à org.glassfish.jersey.internal.Errors.process (Errors.java:297) à org.glassfish.jersey.internal.Errors.processWithException (Errors.java:255) à org.glassfish.jersey.server.ApplicationHandler. (ApplicationHandler.java:345) à org.glassfish.jersey.servlet.WebComponent. (WebComponent.java:390) à org.glassfish.jersey.servlet.ServletContainer.init (ServletContainer.java:170) à org.glassfish.jersey.servlet.ServletContainer.init (ServletContainer.java:362) à javax.servlet.GenericServlet.init (GenericServlet.java:244) à org.apache.catalina.core.StandardWrapper.initServlet (StandardWrapper.java:1583)Can't load full resultsTry againRetrying...Retrying...

.....

0
Khanh 28 déc. 2015 à 04:59

2 réponses

Meilleure réponse

Il s'est avéré être une configuration Maven. Comme je testais avec Grizzly auparavant, lors du passage à GlassFish, j'ai laissé les deux dépendances jersey-weld2-se et jersey-cdi1x portée par défaut de Maven. Ce dernier est très bien mais le premier est fourni par le conteneur GlassFish. Corrigé comme suit, cela aide à résoudre le problème (bien que l'erreur de déploiement n'ait vraiment pas été utile.)

<dependency>
    <groupId>org.glassfish.jersey.ext.cdi</groupId>
    <artifactId>jersey-weld2-se</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.ext.cdi</groupId>
    <artifactId>jersey-cdi1x</artifactId>
</dependency>
2
Khanh 31 déc. 2015 à 00:51

Ce qui suit est suffisant sur Glassfish 4.1.1 (sans web.xml):

import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.server.ResourceConfig;

@ApplicationPath("rest")
public class ApplicationConfig extends ResourceConfig {
}

Et un exemple de classe:

import javax.ws.rs.GET;
import javax.ws.rs.Path;

@Path("info")
public class InfoStub {

    @GET
    public String getInfo() {
        return "hello sir";
    }
}

Vous pouvez y accéder sous http: // localhost: 8080 / YOUR_PROJECT_NAME / rest / info

Assurez-vous de définir vos dépendances Jersey standard dans votre pom.xml sur fourni .

0
unwichtich 28 déc. 2015 à 02:54