The problem here seems to be that the WS-RM layer cannot retrieve the
addressing properties that WS-A layer should have stored in the context.
A couple of questions:
1. In a previous mail on this thread you talked about adding the
RMInterceptors explicitly in code - I presume you're no longer doing
this and are now just relying on the RMAssertion & Addressing policies
attached to the WSDL and the PolicyEngine config bean?
2. What version of CXF are you using? Up to quite recently, the
<wsaw:UsingAddressing> extension element was also required in the WSDL
in order to enable WS-A. Try adding the following child element to your
<wsdl:port>:
<wswa:UsingAddressing
xmlns:wswa="http://www.w3.org/2005/02/addressing/wsdl"/>
Cheers,
Eoghan
> -----Original Message-----
> From: Bharath Ganesh [mailto:[EMAIL PROTECTED]
> Sent: 26 September 2007 05:43
> To: [email protected]
> Subject: Re: WS-RM Usage
>
> My wsdl now contains the RM-Assertion and I have enabled the
> policy engine (by getting hold of PolicyEngine from the bus).
>
> But when I invoke the webservice, I get the following message:
>
> Failed to retrieve message addressing properties from context
> - not ensuring reliable delivery.
> Messages Trace:
> retrieving MAPs from context property {0};(
> org.apache.cxf.ws.addressing.ContextUtils)
> WS-Addressing - failed to retrieve Message Addressing
> Properties from
> context;(org.apache.cxf.ws.addressing.ContextUtils)
> retrieving MAPs from context property {0};(
> org.apache.cxf.ws.addressing.ContextUtils)
> WS-Addressing - failed to retrieve Message Addressing
> Properties from
> context;(org.apache.cxf.ws.addressing.ContextUtils)
> retrieving MAPs from context property {0};(
> org.apache.cxf.ws.addressing.ContextUtils)
> WS-Addressing - failed to retrieve Message Addressing
> Properties from
> context;(org.apache.cxf.ws.addressing.ContextUtils)
> Failed to retrieve message addressing properties from
> context - not ensuring reliable
> delivery.;(org.apache.cxf.ws.rm.RMOutInterceptor)
>
>
> What could have gone wrong?
>
> -Bharath
>
>
>
>
> On 9/25/07, Glynn, Eoghan <[EMAIL PROTECTED]> wrote:
> >
> >
> >
> > The presence of RMAssertion in the WSDL is enough for WS-RM to be
> > engaged in the client-runtime *if* the policy engine is
> turned on the
> > client config, via something like the following:
> >
> > <bean id="org.apache.cxf.ws.policy.PolicyEngine"
> > class="org.apache.cxf.ws.policy.spring.InitializingPolicyEngine">
> > <property name="bus" ref="cxf"/>
> > <property name="enabled" value="true"/>
> > </bean>
> >
> > See the ws_policy demo for an example of this usage and also the
> > docco[1] for more details.
> >
> > This automatic injection of capability into the runtime
> triggered by
> > the presence of policy assertions is one of the main goals
> of the CXF
> > WS-Policy framework[2].
> >
> > Cheers,
> > Eoghan
> >
> > [1] http://cwiki.apache.org/CXF20DOC/wspconfiguration.html
> > [2]
> http://cwiki.apache.org/CXF20DOC/ws-policy-framework-overview.html
> >
> >
> > > -----Original Message-----
> > > From: Bharath Ganesh [mailto:[EMAIL PROTECTED]
> > > Sent: 25 September 2007 14:12
> > > To: [email protected]
> > > Subject: WS-RM Usage
> > >
> > > Hi
> > >
> > > I have been trying to get WS-RM to work in CXF. These are
> the steps
> > > I followed.
> > >
> > > WSDL: Reference to a WS-policy, containing a RMAssertion.
> > >
> > > <wsp:Policy wsu:Id="RM">
> > > <wsam:Addressing>
> > > <wsp:Policy/>
> > > </wsam:Addressing>
> > > <wsrmp:RMAssertion>
> > > <wsrmp:BaseRetransmissionInterval Milliseconds="10000"/>
> > > </wsrmp:RMAssertion>
> > > </wsp:Policy>
> > >
> > > But this was not enough for the client side RM configuration.
> > > The RM Interceptors were not added even thought the
> service client
> > > (Generated JAX-WS Service class) pointed to this wsdl.
> > >
> > > So I chose to programatically get hold of the bus, enable
> WS-Policy,
> > > create the RMFeature, set the RM Store and add the RMInterceptors
> > > explicitly.
> > > Is that really needed? Shouldn't the runtime do this if wsdl
> > > contains a WS-Policy reference, which has a RM assertion?
> > >
> > > In added RMOutInterceptor, RMInInterceptor,
> RMSoapInterceptor (to in
> > > and out), RetransmissionInterceptor (to in and out) to the client
> > > side org.apache.cxf.endpoint.Endpoint.
> > >
> > > After configuring all this when the message goes outward from the
> > > client I get this exception:
> > >
> > > Caused by: java.lang.NullPointerException
> > > at
> > >
> org.apache.cxf.ws.rm.soap.RetransmissionQueueImpl.cacheUnacknowledge
> > > d
> > > (RetransmissionQueueImpl.java:202)
> > > at
> > >
> org.apache.cxf.ws.rm.soap.RetransmissionQueueImpl.addUnacknowledged(
> > > RetransmissionQueueImpl.java:92)
> > > at org.apache.cxf.ws.rm.RetransmissionCallback.onClose(
> > > RetransmissionCallback.java:56)
> > > at
> > > org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java
> > > :113)
> > > at
> > >
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java
> > > :66)
> > > at
> > >
> org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:576)
> > > at
> > > org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSen
> > > derEndingInterceptor.handleMessage
> > > (MessageSenderInterceptor.java:62)
> > > at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(
> > > PhaseInterceptorChain.java:207)
> > > at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
> > > at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
> > > at
> > >
> org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> > > at
> > > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java
> > > :135)
> > >
> > > This means the RMProperties is not set in the message.
> > > What could go wrong?
> > >
> >
> > ----------------------------
> > IONA Technologies PLC (registered in Ireland) Registered Number:
> > 171387 Registered Address: The IONA Building, Shelbourne
> Road, Dublin
> > 4, Ireland
> >
>
----------------------------
IONA Technologies PLC (registered in Ireland)
Registered Number: 171387
Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland