2009-10-07 2 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를 사용하는 경우 localhost 대신 127.0.0.1을 시도 할 수 있습니다. 기타로

+0

127.0.0.1로 전환을 시도했습니다. 그리고 그것은 같은 오류입니다. – Attilah

+0

이 스레드는 유용 할 수 있습니다 http://forums.sun.com/thread.jspa?forumID=58&tstart=0&threadID=288759&trange=15 –

1

은 이미 conf/jboss-service.xml에서 (서비스 이름 jboss:service=Naming을)이 값을 변경하지 않는 한, 그래서 포트 1099에 기본적으로 보스 naming server 듣는다는, 당신이 작성해야 지적 :

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

말했다되는 것을 I 보통 jndi.properties 파일 (JNDI 환경 설정은 classpath에 넣음)에 제공하는 것을 선호합니다. 귀하의 경우에는, 다음과 같은 내용으로 :

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(); 

이 휴대용 코드를 만들어을 (I는, 음, 테스트 상황에서 문제가되지 않을 수도 있습니다 하드 코딩하지 않는 것을 선호합니다).