2009-10-07 7 views
1

J'ai créé un EJB 2. Je l'ai déployé sur JBoss-IDE 1.6 puis j'ai créé un test JUnit pour y accéder. voici le code je pour le client:Erreur client EJB

public class DossierBeanTest extends TestCase { 
     protected DossierHome dossierHome; 
     protected Dossier dossier; 

     public DossierBeanTest(String argo){ 
       super(arg0); 
     } 

     protected void setUp() throws Exception { 
       super.setUp(); 
       Hashtable env=new Hashtable(); 


       env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory"); 
       env.put(Context.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfaces"); 
       env.put(Context.PROVIDER_URL,"jnp://localhost:1199"); 
       Context context=new InitialContext(env); 

       Object finderRef=context.lookup(dossierHome.JNDI_NAME); 
       dossierHome=(DossierHome)PortableRemoteObject.narrow(finderRef,DossierHome.class); 
       dossier=dossierHome.create(); 

      } 

      public void testGetString() throws RemoteException { 
       assertEquals("Test",dossier.getTest()); 
      } 

mais le problème est que ce client échoue avec l'erreur:

 javax.naming.CommunicationException: Could not obtain connection to any of these 
     urls: localhost:1199 and discovery failed with error : 
     javax.naming.CommunicationException: Receive timed out [Root Exception is 
     java.net.SocketTimeoutException: Receive timed out][Root exception is 
     javax.naming.CommunicationException: Failed to connect to server localhost:1199 
     .... 


     at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1416) 

....

Répondre

0

Je suppose que vous utilisez le mauvais numéro de port. Vous pouvez vérifier cela en regardant d'abord la sortie de la commande netstat -a. Si aucun processus n'écoute sur le port 1199, vous devez inspecter votre configuration JBoss.

+0

quel fichier de configuration dois-je modifier? – Attilah

+0

Regardez le fichier "jboss-service.xml" et là dans . – tangens

0

Le port par défaut est 1099, l'avez-vous changé? Si ce n'est pas le cas, essayez de passer le port de 1199.

Si vous utilisez Linux, essayez 127.0.0.1 au lieu de localhost.

+0

j'ai essayé de passer à 127.0.0.1. et c'est la même erreur. – Attilah

+0

Ce fil peut être utile http://forums.sun.com/thread.jspa?forumID=58&tstart=0&threadID=288759&trange=15 –

1

Comme d'autres l'a déjà souligné, JBoss naming server écoutes par défaut sur le port 1099. Donc, à moins que vous avez changé cette valeur dans conf/jboss-service.xml (nom du service jboss:service=Naming), vous devez écrire:

env.put(Context.PROVIDER_URL,"jnp://localhost:1099); 

Cela étant dit, je préfèrent généralement fournir les paramètres d'environnement JNDI dans un fichier jndi.properties (que vous avez mis dans le classpath). Dans votre cas, avec le contenu suivant:

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory 
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces 
java.naming.provider.url=localhost:1099 

Et utilisez le constructeur de paramètres vide InitiatContext():

Context context = new InitialContext(); 

Cela rend portable le code (peut ne pas être un problème dans un contexte de test, eh bien, je préférez ne pas coder dur de telles choses).