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

avec Java Discussion :

[JNDI] Problème de lookup


Sujet :

avec Java

  1. #1
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut [JNDI] Problème de lookup
    Bonjour à tous,

    je développe actuellement une application cliente en Flex (Flash) avec un backend java situé sur un serveur Glassfish V3.

    Pour faire le pont entre Flex et Java, j'utilise Graniteds qui est une Webapp.
    Lorsque je mets en relation Flex avec des pojo, cela marche bien. Maintenant j'essaie de configurer GraniteDS afin d'intéragir avec des EJBs mais je pense avoir un soucis de localisation avec JNDI (j'y connais pas grand chose sic).

    Voici mon arborescence : un EAR nommé EAR, un projet EJB nommé...EJB et ma webapp nommée GRANITEDS. La structure est disponible en PJ.

    Mon fichier services-config.xml utilisé par GraniteDS pour localiser les services est le suivant :

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <services-config>
     
        <services>
            <service
                id="granite-service"
                class="flex.messaging.services.RemotingService"
                messageTypes="flex.messaging.messages.RemotingMessage">
                <destination id="stateless">
                    <channels>
                        <channel ref="my-graniteamf"/>
                    </channels>                
    		<properties>
                        <factory>ejbFactory</factory>
                    </properties>
                </destination>
            </service>
        </services>
     
         <factories>
            <factory id="ejbFactory" class="org.granite.messaging.service.EjbServiceFactory">
                <properties>
                    <lookup>java:global/EAR/GRANITEDS_war/{capitalized.destination.id}ServiceBean</lookup>
                </properties>
            </factory>
        </factories>
     
        <channels>
            <channel-definition id="my-graniteamf" class="mx.messaging.channels.AMFChannel">	
                <endpoint
                    uri="http://{server.name}:8080/{context.root}/graniteamf/amf"
                    class="flex.messaging.endpoints.AMFEndpoint"/>
            </channel-definition>
        </channels>
     
    </services-config>
    il est correctement configuré sauf pour la propriété <lookup>. En effet, le {capitalized.destination.id} est remplacé au runtime par "Stateless" et va donc chercher dynamiquement mon bean "StalessServiceBean". Par contre, je ne sais pas trop quoi mettre avant...

    Cas1 : <lookup>/GRANITEDS/{capitalized.destination.id}ServiceBean</lookup>

    Résultat :

    [RPC Fault faultString="" faultCode="Could not lookup for: /GRANITEDS/StatelessServiceBean" faultDetail="nullorg.granite.messaging.service.ServiceException
    at org.granite.messaging.service.EjbServiceInvoker.<init>(EjbServiceInvoker.java:65)
    at org.granite.messaging.service.EjbServiceFactory.getServiceInstance(EjbServiceFactory.java:126)
    at org.granite.messaging.amf.process.AMF3MessageProcessor.processRemotingMessage(AMF3MessageProcessor.java:135)
    at org.granite.messaging.amf.process.AMF3MessageProcessor.process(AMF3MessageProcessor.java:59)
    at org.granite.messaging.amf.process.AMF0MessageProcessor.process(AMF0MessageProcessor.java:78)
    at org.granite.messaging.webapp.AMFMessageServlet.doPost(AMFMessageServlet.java:59)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
    at org.granite.messaging.webapp.AMFMessageFilter.doFilter(AMFMessageFilter.java:117)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
    at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    at java.lang.Thread.run(Thread.java:619)
    Caused by: javax.naming.NamingException: Lookup failed for '/GRANITEDS/StatelessServiceBean' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: ]
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at org.granite.messaging.service.EjbServiceFactory.lookup(EjbServiceFactory.java:60)
    at org.granite.messaging.service.EjbServiceInvoker.<init>(EjbServiceInvoker.java:63)
    ... 37 more
    Caused by: javax.naming.NameNotFoundException:
    at com.sun.enterprise.naming.impl.TransientContext.resolveContext(TransientContext.java:310)
    at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:218)
    at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:77)
    at com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:119)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:505)
    ... 42 more
    "]
    Il ne trouve pas GRANITEDS donc. J'ai essayé beaucoup de syntaxe, notamment celle ci :

    Cas 2 : <lookup>java:global/EAR/GRANITEDS_war/{capitalized.destination.id}ServiceBean</lookup>

    Résultat :

    ...
    ...
    Caused by: javax.naming.NamingException: Lookup failed for 'java:global/EAR/GRANITEDS_war/StatelessServiceBean' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: GRANITEDS_war]
    ...
    ...
    Là, JNDI arrive apparemment à localiser EAR mais pas GRANITEDS_war (comme généré sur mon serveur Glassfish).

    J'ai essayé beaucoup de syntaxes sans jamais réussir à trouver la bonne et étant novice avec JNDI, je ne sais pas quoi mettre en lookup...

    Qui pourrait m'aider ?

    Merci

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Il fallait simplement ajouter une référence aux beans dans le web.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	<ejb-local-ref>
    		<ejb-ref-name>graniteds/StatelessServiceBean</ejb-ref-name>
    		<ejb-ref-type>Session</ejb-ref-type>
    		<local-home />
    		<local>com.sessionBeans.StatelessServiceBean</local>
    	</ejb-local-ref>
    Je pensais que les annotations palliaient à ce problème mais non...

    Problème résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Datasource] [JNDI] Problème de nommage
    Par legzo dans le forum Wildfly/JBoss
    Réponses: 5
    Dernier message: 29/01/2007, 15h37
  2. [JNDI] url de lookup
    Par xfacq dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 18/04/2006, 15h06
  3. [EJB]JBoss et JNDI, problème pour trouver mes EJB
    Par shingo dans le forum Wildfly/JBoss
    Réponses: 3
    Dernier message: 31/12/2005, 15h14
  4. [MFC][CMap] Problème avec Lookup
    Par MystEre dans le forum MFC
    Réponses: 6
    Dernier message: 27/12/2005, 11h00
  5. [JNDI] Problème en cas de perte de connexion
    Par Marc_P dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 19/10/2004, 14h45

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