cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Larry Presswood <lpressw...@me.com>
Subject Re: Intercepting SOAP Message when using JMS Transport
Date Fri, 04 Jan 2013 22:26:34 GMT
Any idea where in stream

I am doing what the StreamIntercepter example had

Phase.PRE_STREAM
addBefore(SoapPreProtocolOutIntercepter )

But nothing in the writer buffer just empty string so i must be too early?


thanks
Sent from iCloud

On Jan 04, 2013, at 05:18 PM, Daniel Kulp <dkulp@apache.org> wrote:


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
  • Unnamed multipart/alternative (inline, None, 0 bytes)
    • Unnamed multipart/related (inline, None, 0 bytes)
View raw message