cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gumudavelli, Alekhya" <Alekhya.Gumudave...@in.pega.com>
Subject RE: Query on CXF dispatch client with MTOM
Date Thu, 13 Feb 2014 06:11:44 GMT
Hi,

I am attaching the client and service that I am using.  MTOMClient.java is a standalone Java
program that I wrote to connect to a service that I got from CXF samples apache-cxf-3.0.0-milestone1.rar
( apache-cxf-3.0.0-milestone1\samples\mtom ).   links.txt is the file I am trying to send
as an MTOM attachment.

I am also attaching MTOMClientBase64.java. It sends a base64 encoded data of the attachment.

Regards,
Alekhya

From: Andrei Shakirin [mailto:ashakirin@talend.com]
Sent: Wednesday, February 12, 2014 9:43 PM
To: users@cxf.apache.org
Cc: Gumudavelli, Alekhya
Subject: RE: Query on CXF dispatch client with MTOM

Hi,

Interesting. Any chance to create a small test case to reproduce that?

Regards,
Andrei.

From: Gumudavelli, Alekhya [mailto:Alekhya.Gumudavelli@in.pega.com]
Sent: Mittwoch, 12. Februar 2014 14:26
To: Andrei Shakirin; users@cxf.apache.org<mailto:users@cxf.apache.org>
Subject: RE: Query on CXF dispatch client with MTOM

Hi,
I don’t find any difference between my client code and https://svn.apache.org/repos/asf/cxf/branches/2.7.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/swa/ClientServerSwaTest.java
except that I am doing an additional setting MTOMEnabled property to true.

Can you give me any MTOM specific sample test (not just SWA). I would like to try that out
directly. I had searched in cxf/systest/ repository but could not find any. I see that all
MTOM tests in the repo use stubs and not dispatch API.

Or can you point me to the internal CXF code / class that takes care of adding <xop include>
element. I would like to debug and understand why is it not xop’ing it.
We are revamping our entire stack to use CXF and this issue is hindering us from implementing
MTOM with CXF, one of the important features for clients.

Thanks much for the quick responses Andrei!

Alekhya

From: Andrei Shakirin [mailto:ashakirin@talend.com]
Sent: Tuesday, February 11, 2014 11:06 PM
To: users@cxf.apache.org<mailto:users@cxf.apache.org>
Cc: Gumudavelli, Alekhya
Subject: RE: Query on CXF dispatch client with MTOM

Hi,

It is quite difficult to say what exactly wrong without your test case.
Could you run the system test I referenced in last mail and try to find the difference between
test and your code?

Regards,
Andrei.

From: Gumudavelli, Alekhya [mailto:Alekhya.Gumudavelli@in.pega.com]
Sent: Dienstag, 11. Februar 2014 12:54
To: Andrei Shakirin; users@cxf.apache.org<mailto:users@cxf.apache.org>
Subject: RE: Query on CXF dispatch client with MTOM

Hi Andrei,
I am doing exactly the way you are referring. The service is not able to recognize attachment.

Below is my service method . It fails to process attachment as the parameter “attachinfo”
does not hold the attachment we have sent. This works well if I manually insert <attachinfo>
element by linking it with content-id.

public void testDataHandler(Holder<String> name, Holder<DataHandler> attachinfo)
{
                if(attachinfo.value==null)
                                {System.out.println("attachinfo.value is null");  //This gets
executed
                                return;}
                InputStream mtomIn = attachinfo.value.getInputStream();
               ByteArrayOutputStream out = new ByteArrayOutputStream();
and so on….

Also, in the below line we can use any random name to set content id. Isn’t it?
         att.setContentId("<attach1=c187f5da-fa5d-4ab9-81db-33c2bb855201@apache.org<mailto:attach1=c187f5da-fa5d-4ab9-81db-33c2bb855201@apache.org>>");

Could you please help me out with this issue


Below is the screenshot of my request in TCP mon –

[cid:image001.jpg@01CF28AC.70954370]



Regards,
Alekhya

From: Andrei Shakirin [mailto:ashakirin@talend.com]
Sent: Monday, February 10, 2014 9:57 PM
To: users@cxf.apache.org<mailto:users@cxf.apache.org>
Cc: Gumudavelli, Alekhya
Subject: RE: Query on CXF dispatch client with MTOM

Hi,

I do not think that you should add MTOM <include> manually.

It should be enough to activate MTOM and add attachment part in following way:

        DataHandler dh1 = new DataHandler(new ByteArrayDataSource(bigBytes, "text/plain"));

        AttachmentPart att = msg.createAttachmentPart(dh1);
        att.setContentId("<attach1=c187f5da-fa5d-4ab9-81db-33c2bb855201@apache.org<mailto:attach1=c187f5da-fa5d-4ab9-81db-33c2bb855201@apache.org>>");
        msg.addAttachmentPart(att);

See the testSwaTypesWithDispatchAPI() in https://svn.apache.org/repos/asf/cxf/branches/2.7.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/swa/ClientServerSwaTest.java
for details.

Regards,
Andrei.


From: Gumudavelli, Alekhya [mailto:Alekhya.Gumudavelli@in.pega.com]
Sent: Montag, 10. Februar 2014 08:36
To: Andrei Shakirin
Cc: users@cxf.apache.org<mailto:users@cxf.apache.org>
Subject: Query on CXF dispatch client with MTOM

Hi Andrei, team

I am writing a CXF client with MTOM by using dynamic dispatch style of service invocation.
I understand that dynamic dispatch requires request message to be constructed manually.
But I would like to avoid manual insertion of <inc:include href> XOP element in the
SOAP message to enable MTOM.

I am currently doing the following steps to generate a CXF mtom client

1.       Enable MTOM using



((SOAPBinding)binding).setMTOMEnabled(true);


2.       Construct SOAP request message programmatically



SOAPMessage request = MessageFactory.newInstance().createMessage();
//create attachment and add it to request
AttachmentPart attach = request.createAttachmentPart(new DataHandler(new FileDataSource("F:\\CXF3\\CXF3\\src\\me.bmp")));
      attach.setContentId("image");

request.addAttachmentPart(attach);


SOAPElement operation = body.addChildElement("testDataHandler", "typ",
           "http://cxf.apache.org/mime/types");

/*Here, I am creating the SOAP body with appropriate nodes needed for MTOM - <inc:include
href=”image”. . . */

SOAPElement value1 = operation.addChildElement("attachinfo", "tns","http://cxf.apache.org/mime/types");

SOAPElement xop = value1.addChildElement("Include","inc","http://www.w3.org/2004/08/xop/include");

xop.addAttribute(QName.valueOf("href"),"cid:image");



Generated request message :
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://cxf.apache.org/mime/types">
   <soapenv:Header xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"/>
   <soap:Body>
   <typ:testDataHandler>
<tns:attachinfo xmlns:tns="http://cxf.apache.org/mime/types"><inc:Include xmlns:inc="http://www.w3.org/2004/08/xop/include"
href="cid:image"/></tns:attachinfo>
</typ:testDataHandler>
</soap:Body>
</soap:Envelope>

The above request works well. However, manual inclusion of DOM elements like this does not
appear clean and maintainable. Could you tell me how else can we achieve this to generate
the request dynamically?

I have the same issue with SWA CXF dispatch client where I am including <cid:image>
node programmatically which I want to avoid.

Thanks,
Alekhya Gumudavelli




Mime
View raw message