Ich entwickle einen 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 auftritt, bekomme ich eine JBoss-Fehler 500 HTML-Seite anstelle eines Axis2 XML/SOAP-Fehlers.JBoss-Fehlerseite durch Axis2-Fehler ersetzen XML-Antwort
Dieses Verhalten ist ärgerlich, weil es schwierig ist, Fehler im Webservice-Client oder in SoapUI während der Entwicklung zu behandeln.
Kann ich dies ändern, um den SOAP-Fehler zu bekommen? Vielleicht ist es nur ein Axis2- oder JBoss-Parameter, aber ich habe keine Ahnung davon gefunden.
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 über 1.2.9-SNAPSHOT Version von Axiom war. Ich habe es erneut erstellt, habe sichergestellt, dass die Gläser korrekt in das lib-Verzeichnis kopiert wurden, und es hat funktioniert!
Schließlich war es ein Axiom-Fehler, wie in den Links von Vineet gesagt.
Danke!
Entschuldigung für die große Verzögerung, aber ich arbeitete an anderen Projekten. Vor vier Monaten meinte ich die HTML-Seite, die von JBoss/Tomcat in 500 Fehlern zurückgegeben wurde. Ich habe versucht, stattdessen einen AxisFault zu werfen, aber es tut das gleiche. Ich arbeite mit einem Axis2-Webservice mit Rampart-Modul und dieser letzte löst eine Ausnahme aus, wenn der Client nicht authentifizieren. – Dario
Übrigens gibt es eine ausgezeichnete Post über Rampart und die korrekte Art, Benutzer zu authentifizieren: http://blog.sweetxml.org/2007/12/rampart-basic-examples-show-you-add-ws.html – Dario
Sieht so aus, als ob du nicht der einzige bist: http://www.mail-archive.com/[email protected]/msg47665.html –