2009-05-04 2 views
1

JDK 1.4 및 1.0을 사용하여 빌드 된 Axis 웹 서비스 중 하나를 마이그레이션했습니다.JDK 1.6.0을 사용하는 Axis 1.2 웹 서비스

축 1.2를 사용하여 JDK 1.6.0으로 마이그레이션하려하지만 다음과 같은 널 포인터 예외가 발생합니다.

JDK 1.4로 다시 전환하는 즉시 동일한 코드가 올바르게 작동합니다.

어떤 도움이 필요합니까? 미리 감사드립니다.

java.lang.NullPointerException 
    at au.com.michaelpage.placement.model.rdb.dao.StatusDAO.statusAlreadyExists(StatusDAO.java:275) 
    at au.com.michaelpage.placement.model.rdb.dao.StatusDAO.insert(StatusDAO.java:176) 
    at au.com.michaelpage.pseweb.migrator.MigratorManager.processOnlinePlacement(MigratorManager.java:55) 
    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 org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:388) 
    at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:283) 
    at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323) 
    at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) 
    at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) 
    at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) 
    at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453) 
    at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281) 
    at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3495) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    at weblogic.security.service.SecurityManager.runAs(Unknown Source) 
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180) 
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086) 
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406) 
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201) 
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173) 

새로운 스택 추적.

au.com.michaelpage.placement.model.rdb.dao.StatusDAO.statusAlreadyExists(StatusDAO.java:275) 

당신이

사용하는 웹 로직의 어떤 버전 : 그것은 당신의 코드에서 나오는 것처럼

(404)Not Found 
    at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744) 
    at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144) 
    at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) 
    at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) 
    at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) 
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165) 
    at org.apache.axis.client.Call.invokeEngine(Call.java:2765) 
    at org.apache.axis.client.Call.invoke(Call.java:2748) 
    at org.apache.axis.client.Call.invoke(Call.java:2424) 
    at org.apache.axis.client.Call.invoke(Call.java:2347) 
    at org.apache.axis.client.Call.invoke(Call.java:1804) 
    at au.com.michaelpage.pseweb.migrator.ws.PseMigratorSoapBindingStub.processOnlinePlacement(PseMigratorSoapBindingStub.java:115) 
    at au.com.michaelpage.pseweb.migrator.MigratorScheduledTask.run(MigratorScheduledTask.java:47) 
    at au.com.michaelpage.pseweb.migrator.MigratorScheduledTask.main(MigratorScheduledTask.java:35) 

답변

0

예외가 보인다? JDK 6으로 인증 된 유일한 버전은 WebLogic 10.3입니다.

스택 추적에서 알 수 없지만 프록시 생성 및 충돌하는 JAR 버전과 관련이있을 것입니다.

JDK 1.4 및 Axis 1.0에서 JDK 6 및 Axis 1.2 로의 리프트 및로드는 위험이 따른다 고 생각합니다. 바뀐 것이 많이 있습니다. 당신이 어려움에 처하고 있다는 것은 놀라운 일이 아닙니다.

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 우리는 Weblogic 10.3만을 사용하고 있습니다. 그 동안 응용 프로그램을 컴파일하고 다시 배포 했으므로 스택 추적이 다릅니다. (404) org.apache.axis.transport.http.HTTPSender.readFromSocket (HTTPSender.java:744)에서 찾을 수 없음 위의 전체 스택 추적을 게시했습니다. 미리 감사드립니다. –

0

먼저 StatusDAO.java 클래스의 NullPointerException의 원인을 행 번호 275에서 조사합니다. 객체가 null 인 이유를 확인하십시오.

여기에 근본 원인이 될 수 있는지 확실하지 않지만 새로운 버전의 Jibx로 업그레이드하는 중에 비슷한 문제가 발생했습니다. Jibx는 XML을 Java 객체로 변환하고 그 반대로 변환합니다. 특정 노드 목록이 비어있는 경우 빈 ArrayList로 설정했지만 새 버전에서는 null로 설정하여 여러 위치에서 nullpointer를 발생시킵니다. nullpointer를 따라 가면서 근본 원인을 찾아서 고쳤습니다.

+0

안녕하세요 Bhushan, 답장을 보내 주셔서 감사합니다. 실제로 StatusDAO의 메소드는 MigratorManager의 메소드에 의해 호출됩니다. 이 메소드는 차례대로 웹 서비스로 공개 된 실제 메소드에 의해 호출됩니다. 스텁에서 중단 점을 넣고 디버깅하면 'org.apache.axis.client.Call'의 'invoke()'메서드가 호출 될 때 예외가 발생하는 것을 볼 수 있습니다. 내 문제는 JDK 1.4.2에서는 아무런 변경없이 작동하지만 JDK 1.6.0에서는 작동하지 않는 동일한 코드입니다. 도움이 필요하십니까? 미리 감사드립니다. –

관련 문제