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: cxf-user@incubator.apache.org
> 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: cxf-user@incubator.apache.org
> > > 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

Reply via email to