문제

JBoss 4.2.3 GA에서 실행되는 EJB에서 메소드를 호출하려는 응용 프로그램이 있습니다.

응용 프로그램은 레거시 앱입니다. JBoss 4.0.1에서 실행 된 원래 서버에 액세스 할 때 작동합니다. RMI 코드는 Jbossall-Client.jar에서 JBoss 4.0.1입니다. 자체적으로 업데이트 할 수 있도록 새로운 코드를 제공하는 메소드를 호출하려고합니다. 그래서 나는 그것을 그대로 작동시켜야합니다. 내가 할 수있는 유일한 변경 사항은 서버 측에 있습니다. 최악의 경우 이전 버전에서 이러한 요청을 처리 할 수있는 4.0.1 Jboss 서버를 설정해야 할 수도 있습니다.

그 동안, 나는 그것이 실패한 이유와 그것을 고치기 위해 할 수있는 일이 있는지 이해하고 싶습니다.

지금은 New InitialContext ()에서 실패합니다.

이것은 스택 추적입니다.

javax.naming.NamingException: Failed to retrieve Naming interface [Root exception is java.lang.NullPointerException]
        at org.jboss.naming.HttpNamingContextFactory.getInitialContext(HttpNamingContextFactory.java:69)
        at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
        at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
        at javax.naming.InitialContext.init(InitialContext.java:223)
        at javax.naming.InitialContext.<init>(InitialContext.java:197)
        at Main.main
Caused by: java.lang.NullPointerException
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1820)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
        at org.jboss.proxy.ClientContainer.readExternal(ClientContainer.java:148)
        at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1755)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1717)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
        at org.jboss.invocation.MarshalledValue.get(MarshalledValue.java:78)
        at org.jboss.naming.HttpNamingContextFactory.getNamingServer(HttpNamingContextFactory.java:123)
        at org.jboss.naming.HttpNamingContextFactory.getInitialContext(HttpNamingContextFactory.java:65)
        ... 17 more
도움이 되었습니까?

해결책

예외는 소스 코드 외부에서 문서화되지 않은 기능을 사용하는 것입니다 (적어도 내가 찾을 수있는 한). 이곳은 InvokerUrl이 클라이언트 측에서 해결되는 시스템 속성으로 지정된 곳입니다 (JBOSS 서버가 NAT 내부에있는 경우 기능이 유용합니다).

클라이언트가 시스템 속성에 정의 된 속성이없는 경우, 수신 된 InvokerUrl에 문제를보고하는 대신 NPE를 던집니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top