Right, that's caused by one condition check in the WSAContextUtils.retrieveUsingAddressing if the override is null it should return true as the default value, not the false.

James


Hi ,

I digged further into this issue . WsaFeature is not working when explicitly set UsingAddressingAdvisory to true
caused by there is another WsaFeature configured for bus  :
   <cxf:bus>
       <cxf:features>
           <wsa:addressing/>
       </cxf:features>
   </cxf:bus>

Runtime always uses the MAPAggregator interceptor(which UsingAddressingAdvisory value is false) provided by bus to process message instead of MAPAggregator contains true value from WsaFeature configured for JaxWsProxyFactoryBean.

Our feature seems does not support override. It needs fix or enhancement.

Regards

Jim




James Mao wrote:
OK, I'll take that into account.

Thanks,
James

There might be another issue in the MAPAggregator as well. The messageIds field has two issues:

1) It's not thread safe. Probably change to ConcurrentHashMap or use a synchronized map.

2) There is a put, but I don't see any removes anywhere. That concerns me.

Dan


On Wednesday 07 November 2007, James Mao wrote:
Thanks Jim,

There's couple ways to enable the ws-a, and it's in
MAPAggregator.usingAddressing, i guess you probably saw the code
already.

James

Hi ,

It seems do not work even I  explicitly set UsingAddressingAdvisory
to true.  This is an issue in the WSAddressingFeature.

The only way I can get it working is add wsdl url , service name and
endpoint name to JaxWsProxyFactoryBean :

       factory.setServiceName(SERVICE_NAME);
       factory.setEndpointName(PORT_NAME);
       factory.setWsdlURL(wsdl.toURL().toString());

And MAPAggregator can get the UsingAdressing information through
wsdl .

Regards

Jim

James,

This is one of the things of the ws-addressing feature that I
personally think is totally broken.
If you do:

WSAddressingFeature feature = new WSAddressingFeature();
feature.setUsingAddressingAdvisory(true);
factory.getFeatures().add(feature);

it probably will work.   IMO, the "true" flag should be the DEFAULT
when using the WSAddressingFeature.

Dan

On Wednesday 07 November 2007, James Mao wrote:
Hi,

I'm trying to enable the ws-a through the API approach which
described in the doc [1], but the message i captured told me that
the ws-a is definitely not working.

Client side code:

        JaxWsProxyFactoryBean factory = new
JaxWsProxyFactoryBean(); factory.setServiceClass(Greeter.class);

factory.setAddress("http://localhost:8080/SoapContext/SoapPort";);
factory.getFeatures().add(new WSAddressingFeature()); Greeter port
= (Greeter) factory.create();

Service side code:

        EndpointImpl ep = (EndpointImpl)
Endpoint.create(implementor); ep.getFeatures().add(new
WSAddressingFeature());
        ep.publish(address);

Am I miss anything?

Or

We have to use the Spring config to enable to ws-a?


Thanks in advance!
James



[1]http://cwiki.apache.org/CXF20DOC/ws-addressing.html





Reply via email to