2016-06-10 5 views
0

두 simples Java 프로젝트를 구현해야합니다; 첫 번째는 EJB의 projectwho 원격 인터페이스를 구현하는 간단한 서비스를 포함하고, 두 번째 프로젝트는이 EJB 프로젝트를 호출 할 자바 클라이언트, 그래서 여기 내가 지금까지했던 것입니다 :클라이언트에서 원격 EJB를 호출하십시오. 자바

Context context = new InitialContext(jndiProperties); 
    TestServiceRemote proxy = (TestServiceRemote) context 
      .lookup("java:global/testEJB/TestService!services.TestServiceRemote"); 
    System.out.println(proxy.showHello()); 

및 이 내 EJB 서비스 : 마지막으로이 내 원격 인터페이스

@Stateless 
public class TestService implements TestServiceRemote { 

public TestService() { 

} 

@Override 
public String showHello() { 
    return "Hello"; 

} 

} 

는 :

@Remote 
public interface TestServiceRemote { 
    public String showHello(); 
} 

나는 제이보스 (9)에 EJB를 배포하지만 한 나는 자바를 시작할 때 클라이언트 콘솔에 표시된이 오류가 나타납니다.

Exception in thread "main" javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial 
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662) 
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313) 
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:350) 
at javax.naming.InitialContext.lookup(InitialContext.java:417) 
at swing.testClient.main(testClient.java:22) 

누군가 내 코드에서 잘못되었음을 말해 줄 수 있습니까?

답변

0

java: 네임 스페이스는 Java에서 기본적으로 사용할 수 없습니다. 기본 클래스를 EAR 내부의 응용 프로그램 클라이언트 JAR로 패키징하고 응용 프로그램 클라이언트 컨테이너 시작 프로그램을 사용하여 실행하거나 this blog post에 설명 된대로 java: 네임 스페이스에 액세스 할 수 있도록 InitialContext를 구성 할 수 있습니다.