문제

Jboss 4.2.3/Tomcat 5.5.27 및 Java 1.5.0 (15-B04)에서 Axis2 1.4.1이있는 웹 서비스를 개발하고 있습니다. 완벽하게 작동하지만 예외가 발생하면 Axis2 XML/SOAP 오류 대신 JBoss Error 500 HTML 페이지가 나타납니다.

이 행동은 vexing입니다. WebService 클라이언트 또는 SoapUI에서 개발 중에 오류를 처리하는 데 어려움이 있기 때문입니다.

비누 결함을 얻기 위해 이것을 변경할 수 있습니까? 어쩌면 Axis2 또는 Jboss 매개 변수 일 수도 있지만 실마리를 찾지 못했습니다.

편집 : 여기에 새로운 스택 트레이스가 있습니다.

[ERROR] WSDoAllReceiver: security processing failed
org.apache.axis2.AxisFault: WSDoAllReceiver: security processing failed
    at org.apache.rampart.handler.WSDoAllReceiver.processBasic(WSDoAllReceiver.java:214)
    at org.apache.rampart.handler.WSDoAllReceiver.processMessage(WSDoAllReceiver.java:86)
    at org.apache.rampart.handler.WSDoAllHandler.invoke(WSDoAllHandler.java:72)
    at org.apache.axis2.engine.Phase.invoke(Phase.java:317)
    at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:264)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:163)
    at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
    at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:133)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Thread.java:595)
Caused by: org.apache.ws.security.WSSecurityException: The security token could not be authenticated or authorized
    at org.apache.ws.security.processor.UsernameTokenProcessor.handleUsernameToken(UsernameTokenProcessor.java:155)
    at org.apache.ws.security.processor.UsernameTokenProcessor.handleToken(UsernameTokenProcessor.java:53)
    at org.apache.ws.security.WSSecurityEngine.processSecurityHeader(WSSecurityEngine.java:311)
    at org.apache.ws.security.WSSecurityEngine.processSecurityHeader(WSSecurityEngine.java:228)
    at org.apache.rampart.handler.WSDoAllReceiver.processBasic(WSDoAllReceiver.java:211)
    ... 23 more
[ERROR] Servlet.service() para servlet AxisServlet lanzó excepción
java.lang.NullPointerException
    at org.apache.rampart.RampartMessageData.<init>(RampartMessageData.java:308)
    at org.apache.rampart.MessageBuilder.build(MessageBuilder.java:61)
    at org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:64)
    at org.apache.axis2.engine.Phase.invoke(Phase.java:317)
    at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:264)
    at org.apache.axis2.engine.AxisEngine.sendFault(AxisEngine.java:520)
    at org.apache.axis2.transport.http.AxisServlet.handleFault(AxisServlet.java:416)
    at org.apache.axis2.transport.http.AxisServlet.processAxisFault(AxisServlet.java:379)
    at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:167)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Thread.java:595)

편집 2 : 바운티를 제공 한 후 나는 Axiom의 1.2.9-snapshot 버전에 대해 틀렸다는 것을 알았습니다. 나는 그것을 다시 만들었고, Lib 디렉토리에 올바르게 복사 된 항아리가 작동했는지 확인했습니다!

마지막으로 Vineet이 제공 한 링크에서 언급했듯이 공리 버그였습니다.

감사!

도움이 되었습니까?

해결책

예외에 대한 세부 사항이 없으면 웹 서비스 구현이 Soapfault 또는 Axisfault 클래스 (또는 자녀)의 인스턴스가 아닌 런타임 예외를 던지고 있다고 추측 할 수 있습니다. 그러한 경우 JBoss의 기본 동작은 웹 서비스가 결국 서블릿이기 때문에 응답에 오류 페이지를 전달하는 것입니다.

이는 일반적으로 웹 서비스가 예외를 적절하게 처리하고 적절한 비누 결함을 던져서 예외가 통화 스택을 흘리는 것을 방지해야 함을 나타냅니다.

업데이트

스택 트레이스는이 문제의 근본 원인을 설정하는 데 도움이됩니다. 하지만 어쨌든 나는 어둠 속에서 쏠거야 :)

문제를 참조 할 수 있습니다 Rampart-164 그리고 그것이 문제의 실제 원인인지 확인하십시오. 간단히 말하면 사용 가능한 정보에서 SOAP 1.2를 사용할 수 있습니다. 나는 수정이 Axiom 1.2.8로 전파 된 것에 대해 확실하지 않습니다. WSCOMMONS-343.

다른 팁

Rampart-Core Jar 파일에는 버그가 있습니다. RampartSender의 MessageBuilder는 클라이언트에게 응답을 다시 보내면서 메시지 컨텍스트에서 axisservice를 기대하고 있습니다. 이 경우 NULLPOINTER 예외를 던지는 NULL입니다. RampartMessageData에 널 체크를 추가하고 Rampart Core Jar를 재구성하여 사용하십시오. 응용 프로그램은 제대로 작동해야합니다.

AxisService service = msgCtx.getAxisService();
if (service != null) {
  this.customClassLoader = msgCtx.getAxisService()
    .getClassLoader();
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top