여기 내 자바 클래스나는 예외를 받고 있어요이 클래스를 실행하면
import endpoint.NewSessionRemote;
import javax.naming.Context;
import javax.naming.InitialContext;
public class HelloClient {
public static void main(String[] args) {
try {
Context ctx = new InitialContext();
NewSessionRemote hello = (NewSessionRemote) ctx.lookup("endpoint.NewSessionRemote");
System.out.println(hello.stringChange(4));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
입니다.
javax.naming.NameNotFoundException: endpoint.NewSessionRemote not found
at com.sun.enterprise.naming.TransientContext.doLookup(TransientContext.java:216)
at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:188)
at com.sun.enterprise.naming.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:74)
at com.sun.enterprise.naming.RemoteSerialContextProviderImpl.lookup(RemoteSerialContextProviderImpl.java:129)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:154)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:687)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:227)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1846)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1706)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:1088)
at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:223)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:806)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:563)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2567)
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555)
java.lang.NullPointerException
기타 모든 엔터프라이즈 bean 클래스는 EJB 3.0 표준에 따라 작성됩니다. 귀중한 기여가 예상됩니다.
솔루션
예외였다
응용 프로그램 측에서 제공 한 JNDI 이름이 servser의 (글래스 피시) 실제 JNDI 이름과 일치하지 않았다 때문에 발생javax.naming.NameNotFoundException: endpoint.NewSessionRemote not found
, 그래서 내가 그랬어 관리 콘솔 (공급 업체 고유)을 통해 Glassish의 JNDI 트리를 확인했고 NewSessionRemote 인터페이스의 JNDI (세션 Bean의 비즈니스 인터페이스는 NewSessionBean)은 신청서에 나와있는 이름과 다릅니다. 그럼 어떻게 이런 일이 갑자기 내 마음에 뭔가가 왔어 그게 ejb-jar.xml 또 다른 이름 JNDI 이름이 NewSessionRemote 태그에 지정되어 있습니다. 그래서 간단히 제거하고 EJB 모듈을 재배포합니다. 그게 전부 야.
문제는 도움을 주셔서 감사합니다. – Switch
그럼 같은 문제가있는 다른 사람들이 귀하의 경험을 통해 배울 수 있도록 솔루션에 대한 세부 정보를 게시하는 것이 어떻습니까? –