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