Hello,

I've just noticed that using the IssuedTokenInterceptorProvider along with
WS-RM breaks support for RM.

In particular, the problem is the following: the IssuedTokenOutInterceptor
in the client stores the TOKEN and TOKEN_ID in the endpoint
(message.getExchange().get(Endpoint.class).put(SecurityConstants.TOKEN_ID,
tok.getId()), line 147 in CXF 2.3.1). On the other hand, the RMManager keeps
a map between the endpoints the reliable endpoints created. The key of the
map is the Endpoint itself. Adding the token to the EndPoint changes is
hashcode (as the endpoint is a map itself and its hashcode depends on its
entries). As such, when the modified EndPoint is looked up in the
EndPoint-RME map, it is not found, and new RME is created and the sequence
gets out of synch.

I was not able to understand why the token is stored in the endpoint, as it
seems it never gets read from it (and, moreover, it is already stored in the
token store). I've tried a modified version of the interceptor that does not
store the token (nor the token id) and everything seems to work correctly,
including the RMManager which is not able to complete the sequence.

Would it be safe to remove those lines? Should I create a JIRA issue for
this and provide a patch?

Best,
Riccardo.
-- 
View this message in context: 
http://cxf.547215.n5.nabble.com/IssuedTokenInterceptorProvider-breaks-ReliableMessaging-tp3357235p3357235.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to