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