IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Java Discussion :

Problème avec @HttpSessionScope


Sujet :

Services Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Par défaut Problème avec @HttpSessionScope
    Bonjour,

    Je souhaiterais garder des informations en session lors d'un appel à mon service Web. D'après ce que j'ai lu on peut effectuer facilement cette tâche en utilisant l'annotation @HttpSessionScope dans le service Web, seulement quand j'utilise cette annotation le serveur me renvoi une exception lorsque j'essaie d'accéder aux méthodes du service Web. Si je commente l'annotation tout se déroule normalement mais je n'ai évidemment plus un "scope session".

    Je suis sous NetBeans 6.7.1 avec le JDK 1.6. Le serveur d'application utilisé est GlassFish v2.1.

    Le code du service web:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    import com.sun.xml.ws.developer.servlet.HttpSessionScope;
    import javax.jws.WebMethod;
    import javax.jws.WebService;
     
    @HttpSessionScope
    @WebService
    public class WsTestContext {
     
        private int value;
     
        @WebMethod
        public void addAmount(int amount) {
            value += amount;
        }
     
        @WebMethod
        public int getValue() {
            return value;
        }
    }
    Le code du client:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    import javax.xml.ws.BindingProvider;
    import planning.ws.WsTestContext;
    import planning.ws.WsTestContextService;
     
    public class TestWs {
     
        public static void main(String[] args) {
            WsTestContextService service = new WsTestContextService();
            WsTestContext port = service.getWsTestContextPort();
            ((BindingProvider) port).getRequestContext().put(BindingProvider.SESSION_MAINTAIN_PROPERTY, true);
     
            port.addAmount(100); // Throw une exception côté serveur
            port.addAmount(200);
            System.out.println("value = " + port.getValue());
        }
    }
    L'exception:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    The log message is null.
    java.lang.NullPointerException
            at com.sun.xml.ws.server.AbstractMultiInstanceResolver.prepare(AbstractMultiInstanceResolver.java:78)
            at com.sun.xml.ws.server.AbstractMultiInstanceResolver.create(AbstractMultiInstanceResolver.java:87)
            at com.sun.xml.ws.server.servlet.HttpSessionInstanceResolver.resolve(HttpSessionInstanceResolver.java:70)
            at com.sun.enterprise.webservice.InstanceResolverImpl.resolve(InstanceResolverImpl.java:74)
            at com.sun.enterprise.webservice.InstanceResolverImpl$1.invoke(InstanceResolverImpl.java:112)
            at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146)
            at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:257)
            at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:93)
            at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:595)
            at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:554)
            at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:539)
            at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:436)
            at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:106)
            at com.sun.enterprise.webservice.MonitoringPipe.process(MonitoringPipe.java:147)
            at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)
            at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:595)
            at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:554)
            at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:539)
            at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:436)
            at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:106)
            at com.sun.enterprise.webservice.CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:222)
            at com.sun.enterprise.webservice.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:133)
            at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)
            at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:595)
            at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:554)
            at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:539)
            at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:436)
            at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:243)
            at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:444)
            at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244)
            at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:135)
            at com.sun.enterprise.webservice.JAXWSServlet.doPost(JAXWSServlet.java:177)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
            at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:315)
            at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:287)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:218)
            at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
            at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
            at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
            at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222)
            at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
            at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
            at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1093)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166)
            at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
            at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
            at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1093)
            at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:291)
            at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:666)
            at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:597)
            at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:872)
            at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
            at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
            at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
            at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:264)
            at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
    Cela fait maintenant plusieurs heures que j'essaie de trouver d'où vient le problème . C'est peut être lié aux versions des librairies utilisées par les ws i.e. jaxb-api.jar et jaxws-api.jar mais je n'en suis vraiment pas sûr.

    Si quelqu'un a déjà rencontré ce problème et peux m'aider à le résoudre ou le contourner, je le remercie d'avance

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 4
    Par défaut Problème avec @HttpSessionScope
    bonjour,

    avez-vous résolu ce problème d'utilisation de HttpSessionScope pour rendre un Web Service Stateful ? Je rencontre la même erreur. J'ai pourtant suivi les recommandations faîtes sur le site de metro.

    - Côté serveur j'utilise Glassfish 2.1.1 avec le JDK 1.6.0_20. J'ai installé Métro 2.1 dans Glassfish pour que les librairies JAXWS 2.2 soient présentes (@HttpSessionScope dépend de JAXWS 2.1 EA2 d'après ce que j'ai pu lire).

    - Côté client, l'application est lancé grâce à Java Web Start. J'ai testé avec une JVM 1.6.0_21 et une JVM 1.5, rien ne fonctionne.

    Merci d'avance.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Par défaut
    Oula ca fait un petit bout de temps que l'affaire est passé

    De souvenir je n'avais pas pu régler le problème . Je l'avais contourné avec un système de sauvegarde des sessions réécrit en Java.

    Désolé mais je ne peux pas vous aider sur ce problème.

    Cordialement

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 4
    Par défaut
    bonjour,

    J'ai vu que le post était vieux mais c'était mon dernier espoir de résoudre ce problème.
    Pour ma part je vais écrire un web service classique !

    Merci pour votre réponse

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo