Frage

Ich entwickle eine Webservice mit Axis2 1.4.1 auf JBoss 4.2.3 / Tomcat 5.5.27 und Java 1.5.0 (15-b04). Es funktioniert einwandfrei, aber wenn eine Ausnahme geschieht erhalte ich eine JBoss Fehler 500 HTML-Seite anstelle eines Axis2 XML / SOAP-Fehler.

Dieses behavoir ist irritierend, weil es difficults Fehler in dem Webservice-Client oder in SoapUI zu handhaben, während der Entwicklung.

Kann ich das ändern, um die SOAP-Fehler zu bekommen? Vielleicht ist es nur ein Axis2 oder JBoss-Parameter, aber ich habe keine Ahnung, finden.

EDIT: Hier geht die neue Stacktrace:

[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)

EDIT 2: Nach der Prämie geben fand ich, dass ich falsch war über 1.2.9-SNAPSHOT Version von Axiom. Ich baute es wieder, sorgte dafür, dass die Gläser, wo richtig lib-Verzeichnis kopiert und es hat funktioniert!

Schließlich war es ein Axiom Fehler, die wie in den Links von Vineet zur Verfügung gestellt.

Danke!

War es hilfreich?

Lösung

Ohne Details der Ausnahme, kann ich nur spekulieren, dass die Web-Service-Implementierung eine Laufzeitausnahme wirft, die nicht eine Instanz der SOAPFault oder AxisFault Klassen (oder ihre Kinder). Das Standardverhalten in JBoss, in einem solchen Fall wäre die Fehlerseite in der Antwort zu liefern, da Web-Services-Servlets, nachdem alle sind.

Das in der Regel gibt an, dass der Webdienst die Ausnahmen entsprechend behandeln muss und ein entsprechenden SOAP-Fehler werfen, um die Ausnahme zu verhindern Rieseln den Call-Stack auf.

Aktualisieren

Ein stacktrace würde helfen, die Ursache für dieses Problem bei der Einrichtung. Aber ich werde auf jeden Fall in der Dunkelheit schießen:)

Sie können auf die Frage beziehen RAMPART-164 und sehen, ob das ist die eigentliche Ursache des Problems. Um es kurz zu sagen, aus den vorliegenden Informationen kann man SOAP 1.2 verwenden. Ich bin mir nicht sicher über die Verlegenheit zu haben 1.2.8 obwohl zu AXIOM propagiert, da ich keinen Hinweis auf WSCOMMONS-343 .

Andere Tipps

Es ist ein Fehler in Wall-Core-JAR-Datei. MessageBuilder in RampartSender erwartet AxisService in Nachrichtenkontext, während die Antwort zurück an den Client gesendet wird. In diesem Fall ist es null, die eine Nullpointer-Ausnahme auslöst. Fügen Sie eine NULL-Prüfung in der RampartMessageData und den Wiederaufbau der Wall Kernglas und verwenden. Die Anwendung sollte gut funktionieren.

AxisService service = msgCtx.getAxisService();
if (service != null) {
  this.customClassLoader = msgCtx.getAxisService()
    .getClassLoader();
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top