You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by "erskine.dedios" <er...@gmail.com> on 2009/12/18 06:29:38 UTC

sending attachments using JaxWsProxyFactoryBean and ClientProxy

Hi.

I'm very new to cxf, could you help me sort this out?  I am able to send a
soap message successfully, but attachments don't seem to get sent.

Below is a snippet of my code. ..

            JaxWsProxyFactoryBean proxyFactory = new
JaxWsProxyFactoryBean();
            proxyFactory.setServiceClass(SendMessage.class);
           
proxyFactory.setAddress("http://nelson:8089/mockSendMessageBinding");
            remoteSendMessageService = (SendMessage) proxyFactory.create();
            
            bindAttachmentsToSoapRequest(remoteSendMessageService,
attachments);

            remoteSendMessageService.sendMessage(destinationList, 
                                                 origin, 
                                                 subject);


//...

    void bindAttachmentsToSoapRequest(Object proxyObject, byte[]
attachments) {
        //...
        
        final Client client = ClientProxy.getClient(proxyObject);
       
client.getEndpoint().put(MessageContext.OUTBOUND_MESSAGE_ATTACHMENTS, 
                                 new DataHandler(new
ByteArrayDataSource(attachments, "content/type")));
    }

I use soapui to receive my soap messages.



Thanks.
Kin
-- 
View this message in context: http://old.nabble.com/sending-attachments-using-JaxWsProxyFactoryBean-and-ClientProxy-tp26839375p26839375.html
Sent from the cxf-user mailing list archive at Nabble.com.


Re: sending attachments using JaxWsProxyFactoryBean and ClientProxy

Posted by "erskine.dedios" <er...@gmail.com>.
Hi Dan.

I tried your code snippet, but attachments still don't get sent.  I checked
my byte[] attachment param, and it's not null.

Any suggestions?

Many thanks.
Kin



dkulp wrote:
> 
> 
>>     void bindAttachmentsToSoapRequest(Object proxyObject, byte[]
>> attachments) {
>>         //...
>> 
>>         final Client client = ClientProxy.getClient(proxyObject);
>> 
>> client.getEndpoint().put(MessageContext.OUTBOUND_MESSAGE_ATTACHMENTS,
>>                                  new DataHandler(new
>> ByteArrayDataSource(attachments, "content/type")));
>>     }
> 
> That definitely won't work.     I think the best way to get this to work
> is:
> import org.apache.cxf.attachment.AttachmentImpl;
> import org.apache.cxf.message.Attachment;
> import org.apache.cxf.message.Message;
> 
> Collection<Attachment> atts = new ArrayList<Attachment>();
> atts.add(new AttachmentImpl("myId", new DataHandler(new
> 	ByteArrayDataSource(attachments, "content/type"));
> 
>  ((BindingProvider)proxyObject).getRequestContext().put(
>             Message.ATTACHMENTS,
>             atts);
> 
> 
> Dan
> 
> 
> 
> On Fri December 18 2009 12:29:38 am erskine.dedios wrote:
>> Hi.
>> 
>> I'm very new to cxf, could you help me sort this out?  I am able to send
>> a
>> soap message successfully, but attachments don't seem to get sent.
>> 
>> Below is a snippet of my code. ..
>> 
>>             JaxWsProxyFactoryBean proxyFactory = new
>> JaxWsProxyFactoryBean();
>>             proxyFactory.setServiceClass(SendMessage.class);
>> 
>> proxyFactory.setAddress("http://nelson:8089/mockSendMessageBinding");
>>             remoteSendMessageService = (SendMessage)
>> proxyFactory.create();
>> 
>>             bindAttachmentsToSoapRequest(remoteSendMessageService,
>> attachments);
>> 
>>             remoteSendMessageService.sendMessage(destinationList,
>>                                                  origin,
>>                                                  subject);
>> 
>> 
>> //...
>> 
>>     void bindAttachmentsToSoapRequest(Object proxyObject, byte[]
>> attachments) {
>>         //...
>> 
>>         final Client client = ClientProxy.getClient(proxyObject);
>> 
>> client.getEndpoint().put(MessageContext.OUTBOUND_MESSAGE_ATTACHMENTS,
>>                                  new DataHandler(new
>> ByteArrayDataSource(attachments, "content/type")));
>>     }
>> 
>> I use soapui to receive my soap messages.
>> 
>> 
>> 
>> Thanks.
>> Kin
>> 
> 
> -- 
> Daniel Kulp
> dkulp@apache.org
> http://www.dankulp.com/blog
> 
> 

-- 
View this message in context: http://old.nabble.com/sending-attachments-using-JaxWsProxyFactoryBean-and-ClientProxy-tp26839375p26883372.html
Sent from the cxf-user mailing list archive at Nabble.com.


Re: sending attachments using JaxWsProxyFactoryBean and ClientProxy

Posted by Daniel Kulp <dk...@apache.org>.
>     void bindAttachmentsToSoapRequest(Object proxyObject, byte[]
> attachments) {
>         //...
> 
>         final Client client = ClientProxy.getClient(proxyObject);
> 
> client.getEndpoint().put(MessageContext.OUTBOUND_MESSAGE_ATTACHMENTS,
>                                  new DataHandler(new
> ByteArrayDataSource(attachments, "content/type")));
>     }

That definitely won't work.     I think the best way to get this to work is:
import org.apache.cxf.attachment.AttachmentImpl;
import org.apache.cxf.message.Attachment;
import org.apache.cxf.message.Message;

Collection<Attachment> atts = new ArrayList<Attachment>();
atts.add(new AttachmentImpl("myId", new DataHandler(new
	ByteArrayDataSource(attachments, "content/type"));

 ((BindingProvider)proxyObject).getRequestContext().put(
            Message.ATTACHMENTS,
            atts);


Dan



On Fri December 18 2009 12:29:38 am erskine.dedios wrote:
> Hi.
> 
> I'm very new to cxf, could you help me sort this out?  I am able to send a
> soap message successfully, but attachments don't seem to get sent.
> 
> Below is a snippet of my code. ..
> 
>             JaxWsProxyFactoryBean proxyFactory = new
> JaxWsProxyFactoryBean();
>             proxyFactory.setServiceClass(SendMessage.class);
> 
> proxyFactory.setAddress("http://nelson:8089/mockSendMessageBinding");
>             remoteSendMessageService = (SendMessage) proxyFactory.create();
> 
>             bindAttachmentsToSoapRequest(remoteSendMessageService,
> attachments);
> 
>             remoteSendMessageService.sendMessage(destinationList,
>                                                  origin,
>                                                  subject);
> 
> 
> //...
> 
>     void bindAttachmentsToSoapRequest(Object proxyObject, byte[]
> attachments) {
>         //...
> 
>         final Client client = ClientProxy.getClient(proxyObject);
> 
> client.getEndpoint().put(MessageContext.OUTBOUND_MESSAGE_ATTACHMENTS,
>                                  new DataHandler(new
> ByteArrayDataSource(attachments, "content/type")));
>     }
> 
> I use soapui to receive my soap messages.
> 
> 
> 
> Thanks.
> Kin
> 

-- 
Daniel Kulp
dkulp@apache.org
http://www.dankulp.com/blog