سؤال

أقوم بتطوير خدمة ويب باستخدام Axis2 1.4.1 على JBoss 4.2.3/Tomcat 5.5.27 وJava 1.5.0 (15-b04).إنه يعمل بشكل لا تشوبه شائبة ولكن عندما يحدث استثناء، أحصل على صفحة HTML لخطأ JBoss 500 بدلاً من خطأ Axis2 XML/SOAP.

هذا السلوك محير، لأنه من الصعب التعامل مع الأخطاء في عميل خدمة الويب أو في SoapUI أثناء التطوير.

هل يمكنني تغيير هذا للحصول على خطأ SOAP؟ربما تكون مجرد معلمة 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:بعد تقديم المكافأة وجدت أنني كنت مخطئًا بشأن إصدار 1.2.9-SNAPSHOT من Axiom.لقد قمت بإنشائه مرة أخرى، وتأكدت من نسخ الجرار بشكل صحيح إلى دليل lib وأنها تعمل!

وأخيرًا، كان هناك خطأ في اكسيوم، كما هو مذكور في الروابط التي قدمها فينيت.

شكرًا!

هل كانت مفيدة؟

المحلول

بدون تفاصيل الاستثناء، لا يمكنني إلا أن أتكهن بأن تنفيذ خدمة الويب يطرح استثناء وقت التشغيل الذي لا يمثل مثيلًا لفئات SOAPFault أو AxisFault (أو أطفالهم).السلوك الافتراضي في JBoss، في مثل هذه الحالة، سيكون تسليم صفحة الخطأ في الاستجابة، نظرًا لأن خدمات الويب هي servlets بعد كل شيء.

ويشير ذلك عادةً إلى أن خدمة الويب يجب أن تتعامل مع الاستثناءات بشكل مناسب وتتسبب في حدوث خطأ SOAP مناسب، لمنع الاستثناء من الانتشار في مكدس الاستدعاءات.

تحديث

سيساعد تتبع المكدس في تحديد السبب الجذري لهذه المشكلة.لكنني سأطلق النار في الظلام على أي حال :)

يمكنك الرجوع إلى هذه المسألة رامبارت-164 ومعرفة ما إذا كان هذا هو السبب الحقيقي للمشكلة.باختصار، من المعلومات المتاحة، يمكن للمرء استخدام SOAP 1.2.لست متأكدًا من نشر الإصلاح إلى AXIOM 1.2.8، حيث أنني لم أر أي إشارة إلى WSCOMMONS-343.

نصائح أخرى

وهناك خطأ في ملف جرة متراس النواة. MessageBuilder في RampartSender تتوقع AxisService في سياق الرسالة أثناء إرسال الرد إلى العميل. في هذه الحالة هو باطل الذي يلقي استثناء NUllpointer. إضافة الاختيار لاغيا في RampartMessageData وإعادة بناء جرة الأساسية متراس واستخدامها. يجب أن التطبيق يعمل بشكل جيد.

AxisService service = msgCtx.getAxisService();
if (service != null) {
  this.customClassLoader = msgCtx.getAxisService()
    .getClassLoader();
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top