Ошибка клиента EJB - PullRequest
       19

Ошибка клиента EJB

1 голос
/ 07 октября 2009

Я создал EJB 2. Я развернул его в JBoss-IDE 1.6 и затем создал тест JUnit для доступа к нему. Вот код, который я использовал для клиента:

   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) 

....

Ответы [ 4 ]

1 голос
/ 29 мая 2012
1 голос
/ 09 января 2010

Как уже отмечалось, JBoss сервер имен по умолчанию прослушивает порт 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();

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

0 голосов
/ 07 октября 2009

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

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

0 голосов
/ 07 октября 2009

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

...