Axis2 1.5.1 is old and no longer supported. To get help with this issue, you will likely need to upgrade to 1.6.x.
Andreas On Tue, Aug 18, 2015 at 9:22 AM, satyapriya sahoo < [email protected]> wrote: > Hi, > > I am using Axis2-1.5.1 with JDK1.6. > > I have written 1 module to write the SOAP Messages. Here I am acting as a > *server*. > When it is trying to write the SOAP ENVELOPE IN Message, it is throwing > the Bellow Exception > > 18 Aug 2015 13:03:41,956 - ERROR invoke (TestHandler.java:66) - Exception > Occured while logging the message > *org.apache.axiom.om.OMException: Parser has already reached end of the > document. No siblings found* > at > org.apache.axiom.om.impl.llom.OMElementImpl.getNextOMSibling(OMElementImpl.java:339) > at > org.apache.axiom.om.impl.traverse.OMChildrenIterator.next(OMChildrenIterator.java:102) > at > org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:953) > at > org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:937) > at > org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:227) > at > org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:937) > at org.apache.axiom.om.impl.llom.OMNodeImpl.serialize(OMNodeImpl.java:387) > at > org.apache.axiom.om.impl.llom.OMElementImpl.toString(OMElementImpl.java:1106) > at > com.synchronoss.webservice.itsm.logger.TestHandler.invoke(TestHandler.java:34) > at org.apache.axis2.engine.Phase.invoke(Phase.java:318) > at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:251) > at org.apache.axis2.engine.AxisEngine.sendFault(AxisEngine.java:508) > at > org.apache.axis2.transport.http.AxisServlet.handleFault(AxisServlet.java:423) > at > org.apache.axis2.transport.http.AxisServlet.processAxisFault(AxisServlet.java:386) > at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:176) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) > 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:300) > at > weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:183) > at > weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3717) > at > weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681) > at > weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) > at > weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) > at > weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277) > at > weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183) > at > weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454) > at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207) > at weblogic.work.ExecuteThread.run(ExecuteThread.java:176) > > > STEPS I followed : > > *Created 1 TestModule.java* > > package com.test.logger; > > import org.apache.axis2.AxisFault; > import org.apache.axis2.context.ConfigurationContext; > import org.apache.axis2.description.AxisDescription; > import org.apache.axis2.description.AxisModule; > import org.apache.axis2.modules.Module; > import org.apache.neethi.Assertion; > import org.apache.neethi.Policy; > > public class TestModule implements Module{ > > @Override > public void applyPolicy(Policy arg0, AxisDescription arg1) throws > AxisFault { > // TODO Auto-generated method stub > } > > @Override > public boolean canSupportAssertion(Assertion arg0) { > // TODO Auto-generated method stub > return false; > } > > @Override > public void engageNotify(AxisDescription arg0) throws AxisFault { > // TODO Auto-generated method stub > } > > @Override > public void init(ConfigurationContext arg0, AxisModule arg1) > throws AxisFault { > // TODO Auto-generated method stub > } > > @Override > public void shutdown(ConfigurationContext arg0) throws AxisFault { > // TODO Auto-generated method stub > } > > } > > *2) Created 1 Handler class* > package com.test.logger; > > import org.apache.axis2.AxisFault; > import org.apache.axis2.context.MessageContext; > import org.apache.axis2.context.OperationContext; > import org.apache.axis2.engine.Handler; > import org.apache.axis2.handlers.AbstractHandler; > import org.apache.axis2.wsdl.WSDLConstants; > import org.apache.commons.logging.Log; > import org.apache.commons.logging.LogFactory; > > public class TestHandler extends AbstractHandler implements Handler{ > > private static Log log = LogFactory.getLog(TestHandler.class); > > private String name; > > public String getName() { > return name; > } > > public void setName(String name) { > log.debug("Setting name as :"+name); > this.name = name; > } > > public InvocationResponse invoke(MessageContext msgContext) throws > AxisFault { > try{ > log.debug("Received Request."); > StringBuilder stringBuilder=new StringBuilder(); > OperationContext operationContext = msgContext.getOperationContext(); > if(operationContext!=null){ > MessageContext inMessage = > operationContext.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE); > *String inSoapRequest = inMessage.getEnvelope().toString(); > > <-------------------------------------------------------------------------------------Facing > Problem here* > > MessageContext outMessage = > operationContext.getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT_VALUE); > MessageContext faultMessage = > operationContext.getMessageContext(WSDLConstants.MESSAGE_LABEL_FAULT_VALUE); > > if(outMessage==null&&faultMessage==null){ > log.debug("\n--------------Request Received(NEW > LOGGER)--------------\n"+inSoapRequest); > } > if(outMessage!=null || faultMessage!=null){ > stringBuilder.append("\n-------IN MESSAGE(NEW LOGGER)-------\n"); > > stringBuilder.append(inSoapRequest); > stringBuilder.append("\n-------OUT MESSAGE(NEW LOGGER)-------\n"); > > if(outMessage!=null){ > > String outMessageEnvelope = outMessage.getEnvelope().toString(); > stringBuilder.append(outMessageEnvelope); > } > > if(faultMessage!=null){ > stringBuilder.append("\n-------FAULT MESSAGE(NEW LOGGER)-------\n"); > String faultMessagerEnvelope = faultMessage.getEnvelope().toString(); > stringBuilder.append(faultMessagerEnvelope); > // stringBuilder.append("\n Fault > Envelope : "+faultMessagerEnvelope+"\n"); > // stringBuilder.append("\n Fault Reason > : "+faultMessage.getFailureReason().getMessage()+"\n"); > // > faultMessage.getFailureReason().printStackTrace(); > } > > log.debug("\nTRANSACTION START (NEW LOGGER):"+stringBuilder.toString()+ > "\nTRANSACTION END\n"); > } > > } > }catch(Exception e){ > log.error("Exception Occured while logging the message ",e); > } > return InvocationResponse.CONTINUE; > } > > public void revoke(MessageContext msgContext) { > log.debug("Revoking Started"); > log.info(msgContext.getEnvelope().toString()); > log.debug("Revoking completed"); > } > > } > > 3) U*nder META-INF folder, I put the module.xml* > > <module name="TestModule" class="com.test.logger.TestModule"> > <InFlow> > <handler name="InFlowLogHandler" > class="com.test.logger.TestHandler"> > <order phase="TestPhase" /> > </handler> > </InFlow> > > <OutFlow> > <handler name="OutFlowLogHandler" > class="com.test.logger.TestHandler"> > <order phase="TestPhase"/> > </handler> > </OutFlow> > > <OutFaultFlow> > <handler name="FaultOutFlowLogHandler" > class="com.test.logger.TestHandler"> > <order phase="TestPhase"/> > </handler> > </OutFaultFlow> > > <InFaultFlow> > <handler name="FaultInFlowLogHandler" > class="com.test.loggerTestHandler"> > <order phase="TestPhase"/> > </handler> > </InFaultFlow> > </module> > > *4) Then I created the .mar file and put it under AXIS2/WEB-INF/modules* > > *5) After that I modify the axis2.xml* > > <!-- Global Modules --> > <!-- ================================================= --> > <!-- Comment this to disable Addressing --> > <module ref="addressing"/> > * <module ref="TestModule"/>* > > <phaseOrder type="InFlow"> > <!-- System predefined phases --> > <phase name="Transport"> > <handler name="RequestURIBasedDispatcher" > > class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"> > <order phase="Transport"/> > </handler> > <handler name="SOAPActionBasedDispatcher" > > class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"> > <order phase="Transport"/> > </handler> > </phase> > <phase name="Addressing"> > <handler name="AddressingBasedDispatcher" > > class="org.apache.axis2.dispatchers.AddressingBasedDispatcher"> > <order phase="Addressing"/> > </handler> > </phase> > * <phase name="TestPhase"/>* > <phase name="Security"/> > <phase name="PreDispatch"/> > <phase name="Dispatch" > class="org.apache.axis2.engine.DispatchPhase"> > <handler name="RequestURIBasedDispatcher" > > class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/> > <handler name="SOAPActionBasedDispatcher" > > class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/> > <handler name="RequestURIOperationDispatcher" > > class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/> > <handler name="SOAPMessageBodyBasedDispatcher" > > class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/> > <handler name="HTTPLocationBasedDispatcher" > > class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/> > <handler name="GenericProviderDispatcher" > > class="org.apache.axis2.jaxws.dispatchers.GenericProviderDispatcher"/> > <handler name="MustUnderstandValidationDispatcher" > > > class="org.apache.axis2.jaxws.dispatchers.MustUnderstandValidationDispatcher"/> > </phase> > <phase name="RMPhase"/> > <!-- System predefined phases --> > <!-- After Postdispatch phase module author or service author > can add any phase he want --> > <phase name="OperationInPhase"> > <handler name="MustUnderstandChecker" > > class="org.apache.axis2.jaxws.dispatchers.MustUnderstandChecker"> > <order phase="OperationInPhase"/> > </handler> > </phase> > <phase name="soapmonitorPhase"/> > </phaseOrder> > <phaseOrder type="OutFlow"> > <!-- user can add his own phases to this area --> > <phase name="soapmonitorPhase"/> > <phase name="OperationOutPhase"/> > <!--system predefined phase--> > <!--these phase will run irrespective of the service--> > <phase name="RMPhase"/> > <phase name="PolicyDetermination"/> > <phase name="MessageOut"> > </phase> > <phase name="Security"/> > *<phase name="TestPhase"/>* > </phaseOrder> > <phaseOrder type="InFaultFlow"> > <phase name="Addressing"> > <handler name="AddressingBasedDispatcher" > > class="org.apache.axis2.dispatchers.AddressingBasedDispatcher"> > <order phase="Addressing"/> > </handler> > </phase> > <phase name="Security"/> > * <phase name="TestPhase"/>* > <phase name="PreDispatch"/> > <phase name="Dispatch" > class="org.apache.axis2.engine.DispatchPhase"> > <handler name="RequestURIBasedDispatcher" > > class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/> > <handler name="SOAPActionBasedDispatcher" > > class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/> > <handler name="RequestURIOperationDispatcher" > > class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/> > <handler name="SOAPMessageBodyBasedDispatcher" > > class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/> > <handler name="HTTPLocationBasedDispatcher" > > class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/> > <handler name="GenericProviderDispatcher" > > class="org.apache.axis2.jaxws.dispatchers.GenericProviderDispatcher"/> > <handler name="MustUnderstandValidationDispatcher" > > > class="org.apache.axis2.jaxws.dispatchers.MustUnderstandValidationDispatcher"/> > </phase> > <phase name="RMPhase"/> > <!-- user can add his own phases to this area --> > <phase name="OperationInFaultPhase"/> > <phase name="soapmonitorPhase"/> > > </phaseOrder> > <phaseOrder type="OutFaultFlow"> > <!-- user can add his own phases to this area --> > <phase name="soapmonitorPhase"/> > <phase name="OperationOutFaultPhase"/> > <phase name="RMPhase"/> > <phase name="PolicyDetermination"/> > <phase name="MessageOut"> > </phase> > <phase name="Security"/> > * <phase name="TestPhase"/>* > </phaseOrder> > > No Idea why I am getting the Exception. Again In my Server code when I am > trying to access The SOAPEnvelope , it is giving the the bellow exception > > *MessageContext messageContext = > MessageContext.getCurrentMessageContext();* > *SOAPEnvelope soapEnvelope = messageContext.getEnvelope();* > > when I am trying to print or access the *soapEnvelope*, it is throwing > the bellow exception > *com.sun.jdi.InvocationException occurred invoking method.* > > > > The SOAP XML I am sending to server is like bellow Format, > > <SOAP-ENV:Envelope xmlns:SOAP-ENV=" > http://schemas.xmlsoap.org/soap/envelope/"> > <SOAP-ENV:Header> > <AuthenticationInfo> > <userName>ABC</userName> > <password>ABC</password> > </AuthenticationInfo> > </SOAP-ENV:Header> > <SOAP-ENV:Body> > <EMP> > <NAME>SATYA</NAME> > <ROLLNO>1</ROLLNO> > </EMP> > </SOAP-ENV:Body> > </SOAP-ENV:Envelope> > > Please help me and suggest me how to solve this problem. If I did anything > wrong please let me know. Your suggestions are valuable to me. > > Thanks, > Satya >
