2009-10-07 7 views
1

Я создал EJB 2. Я развернул его на JBoss-IDE 1.6, а затем я создал тест JUnit для доступа к нему. вот код, который я использовал для клиента:Ошибка клиента 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()); 
      } 

, но проблема в том, что этот клиент терпит неудачу с ошибкой:

 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) 

....

ответ

0

Я думаю, вы используете неправильный номер порта. Вы можете проверить это первым, посмотрев на вывод команды netstat -a. Если ни один процесс не прослушивает порт 1199, вам необходимо проверить конфигурацию JBoss.

+0

Какой файл конфигурации следует изменить? – Attilah

+0

Посмотрите на файл «jboss-service.xml» и там в . – tangens

0

Порт по умолчанию - 1099, вы его изменили? если не попробовать переключить порт с 1199.

Также, если вы находитесь в Linux, вы можете попробовать 127.0.0.1 вместо localhost.

+0

Я попытался перейти на 127.0.0.1. и это та же ошибка. – Attilah

+0

эта тема может быть полезной http://forums.sun.com/thread.jspa?forumID=58&tstart=0&threadID=288759&trange=15 –

1

Как другие уже отмечалось, JBoss naming server прослушивает по умолчанию на порту 1099. Итак, если вы не изменили это значение в conf/jboss-service.xml (имя службы jboss:service=Naming), вы должны написать:

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

Это, как говорится, я обычно предпочитают предоставлять настройки среды JNDI в файле jndi.properties (который вы помещаете в путь к классам). В вашем случае, со следующим содержанием:

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 

и использовать пустой конструктор параметра InitiatContext():

Context context = new InitialContext(); 

Это делает код портативный (не может быть проблемой в контексте тестирования, ну, предпочитают не жестко кодировать такие вещи).

Смежные вопросы