Hi all,

I try to create an OneWay method which supports WSRM and an attachment.
My service is really simple, it's only a "println".
The method runs successfully when there is only the WSRM implementation, but when I add the attachement part, I have an server error:

org.apache.sandesha2.SandeshaException: Data binding error; nested exception is:
       java.lang.RuntimeException: Data binding error; nested exception is:
       org.apache.axis2.AxisFault: Data binding error; nested exception is:
       java.lang.RuntimeException: Data binding error
at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:199) Caused by: org.apache.axis2.AxisFault: Data binding error; nested exception is:
       java.lang.RuntimeException: Data binding error
       at org.apache.axis2.AxisFault.makeFault(AxisFault.java:318)
at fr.gouv.finances.dgme.presto.PrestoSvcMessageReceiverInOnly.invokeBusinessLogic(PrestoSvcMessageReceiverInOnly.java:50) at org.apache.axis2.receivers.AbstractInMessageReceiver.receive(AbstractInMessageReceiver.java:34) at org.apache.axis2.engine.AxisEngine.resumeReceive(AxisEngine.java:497)
       at org.apache.axis2.engine.AxisEngine.resume(AxisEngine.java:543)
at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:189)
Caused by: java.lang.RuntimeException: Data binding error
at fr.gouv.finances.dgme.presto.PrestoSvcMessageReceiverInOnly.fromOM(PrestoSvcMessageReceiverInOnly.java:174) at fr.gouv.finances.dgme.presto.PrestoSvcMessageReceiverInOnly.invokeBusinessLogic(PrestoSvcMessageReceiverInOnly.java:46)
       ... 4 more
Caused by: org.apache.axiom.om.OMException: java.lang.NullPointerException
at org.apache.axiom.om.impl.llom.OMTextImpl.getText(OMTextImpl.java:254) at org.apache.axiom.om.impl.llom.OMStAXWrapper.getTextCharacters(OMStAXWrapper.java:365) at org.apache.xmlbeans.impl.store.Locale.loadXMLStreamReader(Locale.java:1154) at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:843) at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:826) at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:231) at fr.gouv.finances.dgme.presto.SubmitOneWayDocument$Factory.parse(SubmitOneWayDocument.java:128) at fr.gouv.finances.dgme.presto.PrestoSvcMessageReceiverInOnly.fromOM(PrestoSvcMessageReceiverInOnly.java:145)
       ... 5 more
Caused by: java.lang.NullPointerException
at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:737) at org.apache.coyote.http11.InternalInputBuffer$InputStreamInputBuffer.doRead(InternalInputBuffer.java:777) at org.apache.coyote.http11.InternalInputBuffer.doRead(InternalInputBuffer.java:710)
       at org.apache.coyote.Request.doRead(Request.java:423)
at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:283) at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:371) at org.apache.catalina.connector.InputBuffer.readByte(InputBuffer.java:292) at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:104)
       at java.io.FilterInputStream.read(FilterInputStream.java:66)
       at java.io.PushbackInputStream.read(PushbackInputStream.java:120)
at org.apache.axiom.attachments.MIMEBodyPartInputStream.read(MIMEBodyPartInputStream.java:49) at javax.mail.internet.InternetHeaders.load(InternetHeaders.java:106) at javax.mail.internet.InternetHeaders.<init>(InternetHeaders.java:92)
       at javax.mail.internet.MimeBodyPart.<init>(MimeBodyPart.java:59)
at org.apache.axiom.attachments.PartOnMemory.<init>(PartOnMemory.java:31) at org.apache.axiom.attachments.Attachments.getPart(Attachments.java:451) at org.apache.axiom.attachments.Attachments.getNextPart(Attachments.java:359) at org.apache.axiom.attachments.Attachments.getPart(Attachments.java:324) at org.apache.axiom.attachments.Attachments.getDataHandler(Attachments.java:274) at org.apache.axiom.om.impl.mtom.MTOMStAXSOAPModelBuilder.getDataHandler(MTOMStAXSOAPModelBuilder.java:151) at org.apache.axiom.om.impl.llom.OMTextImpl.getDataHandler(OMTextImpl.java:341) at org.apache.axiom.om.impl.llom.OMTextImpl.getInputStream(OMTextImpl.java:368) at org.apache.axiom.om.impl.llom.OMTextImpl.getText(OMTextImpl.java:238)

My client is:

public static void testSubmitOneWayWSRM() throws Exception {

ConfigurationContext configContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(CLIENT_REPO_PATH,axis2_xml);
        ServiceClient sender = new ServiceClient (configContext,null);


        OMFactory fac = OMAbstractFactory.getOMFactory();
        OMNamespace omNs = fac.createOMNamespace(namespace, "m");
        OMElement payload = fac.createOMElement("submitOneWay", omNs);
        OMElement bodymess = fac.createOMElement("bodymessage", omNs);
         // Add Text
        String bodymessvalue=createSoapMessageString(fileXMLName);
        payload.addChild(fac.createOMText(bodymess, bodymessvalue));

        // Add text file
        OMElement attach=createAttachment(fac,omNs);
        attach = fac.createOMElement("attachment", omNs);
        File fileTxt = new File(fileName);
        FileDataSource dataSource = new FileDataSource(fileTxt);
        DataHandler expectedDH = new DataHandler(dataSource);
        OMText textData = fac.createOMText(expectedDH, true);
        System.out.println("Client:contentID" + textData.getContentID());
        attach.addChild(textData);
        payload.addChild(attach);

        System.out.println("callAXIOM, doc sent : "+payload);
        Options options = new Options();
        options.setTo(targetEPR);
        options.setAction("submitOneWay");
        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
        options.setUseSeparateListener(false);
options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE); options.setProperty(MessageContextConstants.TRANSPORT_URL,targetEPRTcpmon);
        sender.setOptions(options);

        options.setProperty(SandeshaClientConstants.LAST_MESSAGE, "true");
        sender.fireAndForget(payload);
        Thread.sleep(10000);
        System.out.println("NO RETURN FOR WEBSERVICE");

   }

I join also the configuration file : client_axis2.xml

Can someone have an idea?

Thanks for your help.

Regards
Elodie

<axisconfig name="AxisJava2.0">
    <!-- ================================================= -->
    <!-- Parameters -->
    <!-- ================================================= -->
    <parameter name="hotdeployment" locked="false">true</parameter>
    <parameter name="hotupdate" locked="false">false</parameter>
    <parameter name="enableMTOM" locked="true">true</parameter>

    <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
    <!--that behaviour.-->
    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>

    <!--If there aren't any information available to find out the fault reason, we set the message of the expcetion-->
    <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
    <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
    <!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
    <parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>

    <!-- Uncomment this to enable REST support -->
    <!--    <parameter name="enableREST" locked="false">true</parameter>-->

    <!--This is the user name and password of admin console-->
    <parameter name="userName" locked="false">admin</parameter>
    <parameter name="password" locked="false">axis2</parameter>

    <!-- ================================================= -->
    <!-- Message Receivers -->
    <!-- ================================================= -->
    <!--This is the Deafult Message Receiver for the system , if you want to have MessageReceivers for -->
    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
    <!--any operation -->
    <!--Note : You can ovride this for particular service by adding the same element with your requirement-->
    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only";
                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out";
                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
    </messageReceivers>

    <!-- <messageReceivers>
		<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out";
				class="fr.gouv.finances.dgme.presto.PrestoSvcMessageReceiverInOut"/>
		<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only";
				class="fr.gouv.finances.dgme.presto.PrestoSvcMessageReceiverInOnly"/>
	</messageReceivers> -->
    <!-- ================================================= -->
    <!-- Transport Ins -->
    <!-- ================================================= -->
    <transportReceiver name="http"
                       class="org.apache.axis2.transport.http.SimpleHTTPServer">
        <parameter name="port" locked="false">6060</parameter>
        <!--If you want to give your own host address for EPR generation-->
        <!--uncommet following paramter , and set as you required.-->
        <!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->
    </transportReceiver>

    <transportReceiver name="tcp"
                       class="org.apache.axis2.transport.tcp.TCPServer">
        <parameter name="port" locked="false">6061</parameter>
        <!--If you want to give your own host address for EPR generation-->
        <!--uncommet following paramter , and set as you required.-->
        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->
    </transportReceiver>

    <!-- ================================================= -->
    <!-- Transport Outs -->
    <!-- ================================================= -->

    <transportSender name="tcp"
                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
    <transportSender name="local"
                     class="org.apache.axis2.transport.local.LocalTransportSender"/>
    <transportSender name="jms"
                     class="org.apache.axis2.transport.jms.JMSSender"/>
    <transportSender name="http"
                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
    </transportSender>
    <transportSender name="https"
                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
    </transportSender>

    <module ref="addressing" />
    <module ref="sandesha2" />

    <!-- ================================================= -->
    <!-- Phases  -->
    <!-- ================================================= -->
    <phaseOrder type="inflow">
        <!--  System pre defined phases       -->
         <phase name="Transport">
            <handler name="RequestURIBasedDispatcher"
                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
                <order phase="Dispatch"/>
            </handler>
            <handler name="SOAPActionBasedDispatcher"
                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
                <order phase="Dispatch"/>
            </handler>
        </phase>
        <phase name="Security"/>
        <phase name="PreDispatch"/>
        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
            <handler name="AddressingBasedDispatcher"
                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
                <order phase="Dispatch"/>
            </handler>

            <handler name="SOAPMessageBodyBasedDispatcher"
                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
                <order phase="Dispatch"/>
            </handler>
            <handler name="InstanceDispatcher"
                     class="org.apache.axis2.engine.InstanceDispatcher">
                <order phase="PostDispatch"/>
            </handler>
        </phase>
        <!--  System pre defined phases       -->
        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
        <phase name="RMPhase"/>
        <phase name="OperationInPhase"/>
    </phaseOrder>
    <phaseOrder type="outflow">
        <!--      user can add his own phases to this area  -->
        <phase name="OperationOutPhase"/>
        <phase name="RMPhase"/>
        <!--system predefined phase-->
        <!--these phase will run irrespective of the service-->
        <phase name="PolicyDetermination"/>
        <phase name="MessageOut"/>
    </phaseOrder>
    <phaseOrder type="INfaultflow">
        <phase name="PreDispatch"/>
        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
            <handler name="RequestURIBasedDispatcher"
                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
                <order phase="Dispatch"/>
            </handler>

            <handler name="SOAPActionBasedDispatcher"
                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
                <order phase="Dispatch"/>
            </handler>

            <handler name="AddressingBasedDispatcher"
                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
                <order phase="Dispatch"/>
            </handler>

            <handler name="SOAPMessageBodyBasedDispatcher"
                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
                <order phase="Dispatch"/>
            </handler>
            <handler name="InstanceDispatcher"
                     class="org.apache.axis2.engine.InstanceDispatcher">
                <order phase="PostDispatch"/>
            </handler>
        </phase>
        <!--      user can add his own phases to this area  -->
        <phase name="RMPhase"/>
        <phase name="OperationInFaultPhase"/>
    </phaseOrder>
    <phaseOrder type="Outfaultflow">
        <!--      user can add his own phases to this area  -->
        <phase name="OperationOutFaultPhase"/>
        <phase name="RMPhase"/>
        <phase name="PolicyDetermination"/>
        <phase name="MessageOut"/>
    </phaseOrder>
</axisconfig>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to