cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Kulp <dk...@apache.org>
Subject Re: Intercepting SOAP Message when using JMS Transport
Date Fri, 04 Jan 2013 22:18:35 GMT

On Jan 4, 2013, at 5:10 PM, Larry Presswood <lpresswood@me.com> wrote:

> i am using text
> 
> I thought i would get writer on outbound and reader in inbound

Yea.  You're correct.   My mistake.


> but i want to mutate message both before send and after read
> 
> at least in the phase i was using on out didnt seem like soap message was there?

It should behave the same as with the Streams used for HTTP.   For outbound, you can probably
cast to a StringWriter and call the getBuffer() on it to manipulate the string buffer directly
assuming you are very late in the chain.   If not, you can also wrap the writer with a new
FilterWriter that overrides close() to do whatever you want and then call message.setContent(Writer.class,
filteredWriter);


Dan


> 
> Sent from my iPhone
> 
> On Jan 4, 2013, at 17:05, Daniel Kulp <dkulp@apache.org> wrote:
> 
>> 
>> On Jan 4, 2013, at 3:48 PM, Larry Presswood <lpresswood@me.com> wrote:
>> 
>>> I tried using the stream interceptor when using CXF configured with JMS Transport
but it seems that
>>> 
>>> boolean isOutbound = false;
>>>       isOutbound = message == message.getExchange().getOutMessage()
>>>              || message == message.getExchange().getOutFaultMessage();
>>> 
>>>       if (isOutbound) {
>>>           OutputStream os = message.getContent(OutputStream.class);
>>> 
>>> os is null when using jms but not when using straight http 
>>> 
>>> both are soap
>>> 
>>> is this a bug or doe i need to intercept in a different stream
>>> 
>>> i can see in the code where the message is being put into a JMSMessage but don't
seem to find a way to intercept handily like with HTTP
>>> 
>>> Any ideas or examples?
>> 
>> Are you using a text JMS message or binary JMS message?   If using a Text message,
we keep it as a string and provide a Reader instead to avoid a lot of String -> byte[]
-> String type conversions.   Try:
>> 
>> Reader r = message.getContent(Reader.class);
>> 
>> or switch the JMS setup to use binary messages.
>> 
>> 
>> -- 
>> Daniel Kulp
>> dkulp@apache.org - http://dankulp.com/blog
>> Talend Community Coder - http://coders.talend.com
>> 

-- 
Daniel Kulp
dkulp@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com


Mime
View raw message