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

Glassfish et Payara Java Discussion :

Erreur application cliente sur poste distant via Java Web Start


Sujet :

Glassfish et Payara Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Par défaut Erreur application cliente sur poste distant via Java Web Start
    Bonjour,

    débutant avec les EJB j'essaie de faire fonctionner depuis un certain temps un scénario hello world à base de client lourd géré par un ACC: j'ai une entreprise application qui regroupe un module ejb et une application cliente. Le tout est déployé dans glassfish. Mon client réalise un appel distant à mon module via une interface distante et une injection par @EJB.
    Je passe ensuite par java web start pour distribuer mon application cliente.

    Mon problème :
    lorsque je lance mon client sur la machine hôte de glassfish, le client fonctionne correctement et accède bien à mon module "distant"

    lorsque je lance mon client sur un autre poste de mon réseau local, le téléchargement se déroule correctement, j'accède à l'écran de validation de l’exécution, je valide et là rien ne se passe. Je peux laisser la machine tourner longtemps sans que rien ne bouge. Le processus javaw correspondant est bien dans mon pool.

    lorsque je lance un client sans accès distant au module ejb (cf. plus bas) celui ci fonctionne sur tous les postes

    Mon environnement :
    - serveur : windows 7 32bits - netbean 7.1 + glassfish 3.1.1 - java 7 u2
    - client 1 : windows 7 64bits - java 7 u2
    - client 2 : windows XP 32bits - java 7 u2

    Mes sources :

    L'interface distante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package service;
     
    import javax.ejb.Remote;
     
    @Remote
    public interface ServiceBeanRemote {
        String service1();
        String service2();
    }
    Le module
    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
    package service;
     
    import javax.ejb.Stateless;
     
    @Stateless
    public class ServiceBean implements ServiceBeanRemote {
        @Override
        public String service1() {
            return "service 1";
        }
        @Override
        public String service2() {
            return "service 2";
        }    
    }
    Le client ne fonctionnant pas:
    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
    package entapp2client;
     
    // import divers...
    import javax.ejb.EJB;
    import service.ServiceBeanRemote;
     
    public class Main {
        @EJB
        private static ServiceBeanRemote serviceBean;
     
        public static void main(String[] args) {
            JFrame f = new JFrame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.add(new JTextField(serviceBean.service1()), BorderLayout.CENTER);
            f.setSize(400,400);
            f.setVisible(true);
        }
    }
    Client qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class Main {
        public static void main(String[] args) {
            JOptionPane.showMessageDialog(null, "Hi dude !");
        }
    }
    J'ai tenté plusieurs manœuvres sans succès : extinction des par feux du serveur et de la machine cliente. Changement de l'adresse serveur dans le sun-acc.xml. Test sur 2 machines différentes.

    Je ne sais pas comment fonctionne l'injection dans le client mais j'ai l'impression que le contexte reste fixé à localhost qu'importe la machine. Je ne vois nulle part une façon de spécifier l'adresse cible du serveur et je ne vois pas comment glassfish peut connaitre l'IP par laquelle le client accède (ex: comment faire si on accède au serveur derrière un NAT ?)

    Si quelqu'un avait la solution à ce problème je passerais de meilleurs nuits

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Par défaut
    Après 10 heures d’exécution, un de mes clients se décide enfin à me donner un message d'erreur que voici :
    java.lang.RuntimeException: Error launching or running the application
    at org.glassfish.appclient.client.JWSAppClientContainerMain.main(JWSAppClientContainerMain.java:144)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.sun.javaws.Launcher.executeApplication(Unknown Source)
    at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
    at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
    at com.sun.javaws.Launcher.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.RuntimeException: com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Remote ejb-ref name=entappclient.Main/service,Remote 3.x interface =service.ServiceRemote,ejb-link=EntApp-ejb.jar#Service,lookup=,mappedName=,jndi-name=java:global/EntApp/EntApp-ejb/Service!service.ServiceRemote,refType=Session into class entappclient.Main: Lookup failed for 'java:comp/env/entappclient.Main/service' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming}
    at org.glassfish.appclient.client.JWSAppClientContainerMain$ClientRunner.run(JWSAppClientContainerMain.java:179)
    at org.glassfish.appclient.client.JWSAppClientContainerMain.main(JWSAppClientContainerMain.java:138)
    ... 9 more
    Caused by: com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Remote ejb-ref name=entappclient.Main/service,Remote 3.x interface =service.ServiceRemote,ejb-link=EntApp-ejb.jar#Service,lookup=,mappedName=,jndi-name=java:global/EntApp/EntApp-ejb/Service!service.ServiceRemote,refType=Session into class entappclient.Main: Lookup failed for 'java:comp/env/entappclient.Main/service' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming}
    at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:703)
    at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:470)
    at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectClass(InjectionManagerImpl.java:213)
    at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectClass(InjectionManagerImpl.java:205)
    at org.glassfish.appclient.client.acc.AppClientContainer$ClientMainClassSetting.getClientMainClass(AppClientContainer.java:625)
    at org.glassfish.appclient.client.acc.AppClientContainer.getMainMethod(AppClientContainer.java:517)
    at org.glassfish.appclient.client.acc.AppClientContainer.completePreparation(AppClientContainer.java:411)
    at org.glassfish.appclient.client.acc.AppClientContainer.prepare(AppClientContainer.java:319)
    at org.glassfish.appclient.client.AppClientFacade.prepareACC(AppClientFacade.java:278)
    at org.glassfish.appclient.client.JWSAppClientContainerMain$ClientRunner.run(JWSAppClientContainerMain.java:168)
    ... 10 more
    Caused by: javax.naming.NamingException: Lookup failed for 'java:comp/env/entappclient.Main/service' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.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.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=entappclient.Main/service,Remote 3.x interface =service.ServiceRemote,ejb-link=EntApp-ejb.jar#Service,lookup=,mappedName=,jndi-name=java:global/EntApp/EntApp-ejb/Service!service.ServiceRemote,refType=Session' . Actual (possibly internal) Remote JNDI name used for lookup is 'java:global/EntApp/EntApp-ejb/Service!service.ServiceRemote' [Root exception is javax.naming.NamingException: Lookup failed for 'java:global/EntApp/EntApp-ejb/Service!service.ServiceRemote' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.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.NamingException: Unable to acquire SerialContextProvider for SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.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 org.omg.CORBA.COMM_FAILURE: Précis: IOP00410008: Connection abort vmcid: OMG minor code: 8 completed: Maybe]]]]
    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(Unknown Source)
    at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:599)
    ... 19 more
    Caused by: javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=entappclient.Main/service,Remote 3.x interface =service.ServiceRemote,ejb-link=EntApp-ejb.jar#Service,lookup=,mappedName=,jndi-name=java:global/EntApp/EntApp-ejb/Service!service.ServiceRemote,refType=Session' . Actual (possibly internal) Remote JNDI name used for lookup is 'java:global/EntApp/EntApp-ejb/Service!service.ServiceRemote' [Root exception is javax.naming.NamingException: Lookup failed for 'java:global/EntApp/EntApp-ejb/Service!service.ServiceRemote' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.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.NamingException: Unable to acquire SerialContextProvider for SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.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 org.omg.CORBA.COMM_FAILURE: Précis: IOP00410008: Connection abort vmcid: OMG minor code: 8 completed: Maybe]]]
    at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:178)
    at com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl$EjbReferenceProxy.create(ComponentEnvManagerImpl.java:1106)
    at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:776)
    at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:744)
    at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:172)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:498)
    ... 22 more
    Caused by: javax.naming.NamingException: Lookup failed for 'java:global/EntApp/EntApp-ejb/Service!service.ServiceRemote' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.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.NamingException: Unable to acquire SerialContextProvider for SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.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 org.omg.CORBA.COMM_FAILURE: Précis: IOP00410008: Connection abort vmcid: OMG minor code: 8 completed: Maybe]]
    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(Unknown Source)
    at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:173)
    ... 27 more
    Caused by: javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.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 org.omg.CORBA.COMM_FAILURE: Précis: IOP00410008: Connection abort vmcid: OMG minor code: 8 completed: Maybe]
    at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:352)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:504)
    ... 30 more
    Caused by: org.omg.CORBA.COMM_FAILURE: Précis: IOP00410008: Connection abort vmcid: OMG minor code: 8 completed: Maybe
    at sun.reflect.GeneratedConstructorAccessor43.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.sun.corba.ee.spi.orbutil.logex.corba.CorbaExtension.makeException(CorbaExtension.java:248)
    at com.sun.corba.ee.spi.orbutil.logex.corba.CorbaExtension.makeException(CorbaExtension.java:95)
    at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator.handleFullLogging(WrapperGenerator.java:387)
    at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator.access$400(WrapperGenerator.java:107)
    at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator$2.invoke(WrapperGenerator.java:511)
    at com.sun.corba.ee.spi.orbutil.proxy.CompositeInvocationHandlerImpl.invoke(CompositeInvocationHandlerImpl.java:99)
    at $Proxy34.connectionAbort(Unknown Source)
    at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.doOptimizedReadStrategy(SocketOrChannelConnectionImpl.java:1537)
    at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.doWork(SocketOrChannelConnectionImpl.java:1084)
    at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497)
    at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540)
    Caused by: org.omg.CORBA.COMM_FAILURE: Précis: IOP00410011: IOException received when reading from connection SocketOrChannelConnectionImpl[ java.nio.channels.SocketChannel[connected local=/192.168.1.8:61361 remote=p-guyot/192.168.1.21:3700] ESTABLISHED true true] vmcid: OMG minor code: 11 completed: No
    at sun.reflect.GeneratedConstructorAccessor43.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.sun.corba.ee.spi.orbutil.logex.corba.CorbaExtension.makeException(CorbaExtension.java:248)
    at com.sun.corba.ee.spi.orbutil.logex.corba.CorbaExtension.makeException(CorbaExtension.java:95)
    at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator.handleFullLogging(WrapperGenerator.java:387)
    at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator.access$400(WrapperGenerator.java:107)
    at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator$2.invoke(WrapperGenerator.java:511)
    at com.sun.corba.ee.spi.orbutil.proxy.CompositeInvocationHandlerImpl.invoke(CompositeInvocationHandlerImpl.java:99)
    at $Proxy34.ioexceptionWhenReadingConnection(Unknown Source)
    at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.nonBlockingRead(SocketOrChannelConnectionImpl.java:1708)
    at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.doOptimizedReadStrategy(SocketOrChannelConnectionImpl.java:1481)
    ... 3 more
    Caused by: java.io.IOException: Une connexion existante a dû être fermée par l’hôte distant
    at sun.nio.ch.SocketDispatcher.read0(Native Method)
    at sun.nio.ch.SocketDispatcher.read(Unknown Source)
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)
    at sun.nio.ch.IOUtil.read(Unknown Source)
    at sun.nio.ch.SocketChannelImpl.read(Unknown Source)
    at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.nonBlockingRead(SocketOrChannelConnectionImpl.java:1698)
    ... 4 more
    Apparemment ca plante bien au moment du lookup, malheureusement la cause de l'erreur à l'air d'être due à la déconnexion automatique du client par le serveur (d'où le temps d'attente), donc je ne sais pas vraiment pourquoi il plante.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Par défaut
    Problème résolu :

    Pour spécifier l'adresse qui sera injecté dans le contexte du client, il faut modifier le fichier etc/hosts, mais n'utiliser qu'une adresse dans ce fichier (j'ai l'impression que ca bug lorsque j'en ai plusieurs de spécifiées avec ma version).

    Changer le IIOP Listener dans l'administration glassfish n'a rien changé pour moi si ce n'est qu'au bout de quelques redémarrages de glassfish, mon serveur a refusé de déployer certains projets car il considérait mon IIOP Listener comme incorrect (pourtant remis aux valeurs initiales).

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

Discussions similaires

  1. Déployer une application Swing sur poste client
    Par patnership dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 18/03/2015, 19h46
  2. Réponses: 5
    Dernier message: 01/12/2011, 11h23
  3. Réponses: 4
    Dernier message: 08/03/2010, 09h22
  4. SSH invoquer application graphique sur serveur distant
    Par knecmotet dans le forum Réseau
    Réponses: 7
    Dernier message: 07/09/2008, 19h33
  5. Application sur poste distant
    Par oceane dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 10/12/2007, 12h59

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