2014-06-06 5 views
0

내 프로그램은 입니다. package client;문자열로 조회를 바인드하는 방법은 무엇입니까?

import homeif.HelloWorldHome; 
import remoteif.HelloWorld; 

import javax.naming.Context; 
import javax.naming.InitialContext; 
import javax.rmi.PortableRemoteObject; 
import java.awt.image.LookupOp; 
import java.util.Properties; 

public class HelloClient { 
    public static void main(String args[]) { 
     try { 


      Context initialContext = new InitialContext(); 

      Object object = initialContext.lookup("myHelloWorld"); 
      HelloWorldHome home = 
        (HelloWorldHome) PortableRemoteObject.narrow(object, 
          HelloWorldHome.class); 
      HelloWorld myHelloWorld = home.create(); 
      String message = myHelloWorld.sayHello(); 
      System.out.println(message); 
     } catch (Exception e) { 
      System.err.println(" Error : " + e); 
      System.exit(2); 
     } 

    } 
} 

나는 javax.naming.NameNotFoundException 무엇입니까 : 중날은 ("myHelloWorld"널) initialContext.bind를 사용하여 바인딩을 시도하지 myHelloWorld; 그러나 NullPointerException 발생. 내 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=jnp://localhost:1099
이 포함되어 있습니다. ejb-jar.xml에서 lookup-name myHelloWorld를 지정했습니다. 난 당신이 연결을 시도하는 조회

In jonas-ejb-jar.xml 
    ejb-name->HelloWorld 
    jndi-name->myHelloWorld 
+0

'initialContext.lookup ("java : comp/env/myHelloWorld")'또는'initialContext.lookup ("java : comp/env/bean/myHelloWorld ")'? 자세한 내용은 http://docs.jboss.org/jbossweb/2.1.x/jndi-resources-howto.html을 참조하십시오. – Priyesh

+0

예. 하지만 javax.naming.NameNotFoundException 예외가 발생했습니다 : comp는 바운드되지 않습니다. –

답변

1

그것은 JNDI 이름 ('myHelloWorld')처럼 보인다에게 바인딩해야한다 무엇을 잘못되었습니다. JNDI 이름은 Java 범위 또는 전역 범위에 바인딩되어야합니다. Java 명명 범위에 있으면 java : myHelloWorld를 사용하여 직접 액세스해야합니다. Jboss 관리 콘솔에서 명명 범위를 확인할 수 있습니다. Java 이름 sapce는 동일한 서버에서만 액세스 할 수 있음을 의미합니다. 전역 이름 공간이란 다른 서버에서 액세스 할 수 있음을 의미합니다. ejb-jar.xml의 구성을 사용하여이를 제어 할 수 있습니다.

빈이 제대로 배포되지 않을 가능성이 있습니다. 시작시 서버 로그에 메시지가 표시됩니다. 이 메시지에는 Bean이 Y 인드 한 JNDI 이름도 들어 있습니다. 서버 재시작을 시도하면이 세부 정보를 얻을 수 있습니다.

+0

"전역 이름 공간"의 의미와이를 구성하는 방법에 대한 설명에 대해 'ejb-jar.xml'파일을 통해 감사드립니다. – Thufir