cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dennis Sosnoski <...@sosnoski.com>
Subject WS-ReliableMessaging issues
Date Tue, 04 Jan 2011 10:18:57 GMT
I've tried some quick evaluations of the WS-ReliableMessaging support
and ran into some problems.

Starting with the supplied 2.3.1 ws_rm sample code I first removed the
<cxf:logging/> in the server ws_rm.xml to declutter the output. Then
running the client gives:

server:
     [java] Starting Server
     [java] Server ready...
     [java] Executing operation greetMeOneWay

     [java] Hello there Chris
     [java] Executing operation greetMeOneWay

     [java] Hello there Anne
     [java] Executing operation greetMeOneWay

     [java] Hello there Bill
     [java] Executing operation greetMeOneWay

     [java] Hello there Daisy

So far so good. These are out of order (the requests are "Anne", "Bill",
"Chris", and "Daisy", in that order), but since the default delivery
assurance appears to be AtLeastOnce that's ok.

Next I tried changing the delivery assurance to ExactlyOnce and InOrder
by adding this (deduced from the schemas) to the
<wsrm-mgr:reliableMessaging> element in the server ws_rm.xml:

                <wsrm-mgr:deliveryAssurance>
                    <wsrm-mgr:ExactlyOnce/>
                    <wsrm-mgr:InOrder/>
                </wsrm-mgr:deliveryAssurance>

So now the requests should be received in order on the server, right? Well:

server:
     [java] Starting Server
     [java] Server ready...
     [java] Executing operation greetMeOneWay

     [java] Hello there Anne
     [java] Executing operation greetMeOneWay

     [java] Hello there Chris
     [java] Executing operation greetMeOneWay

     [java] Hello there Bill
     [java] Executing operation greetMeOneWay

     [java] Hello there Daisy

Huh. Have I set up the server ws_rm.xml wrong to get the delivery
assurances, or do these just not work correctly?

Next I tried removing the decoupled endpoint on the client (by removing
the <http:conduit> element from the client ws_rm.xml) so that all the
server responses would come back on the same channel:

server:
     [java] Starting Server
     [java] Server ready...
     [java] Executing operation greetMeOneWay

     [java] Executing operation greetMeOneWay

     [java] Hello there Anne
     [java] Hello there Chris
     [java] Jan 4, 2011 8:55:03 PM org.apache.cxf.ws.rm.Proxy acknowledge
     [java] WARNING: It is not possible to send out-of-band
acknowledgments to the anonymous address.
     [java] An acknowledgement will be piggybacked on the next response.
     [java] Executing operation greetMeOneWay

     [java] Hello there Anne
     [java] Executing operation greetMeOneWay

     [java] Hello there Bill
     [java] Executing operation greetMeOneWay

     [java] Hello there Daisy
     [java] Jan 4, 2011 8:55:07 PM org.apache.cxf.ws.rm.Proxy acknowledge
     [java] WARNING: It is not possible to send out-of-band
acknowledgments to the anonymous address.
     [java] An acknowledgement will be piggybacked on the next response.
     [java] Executing operation greetMeOneWay

     [java] Hello there Bill
     [java] Jan 4, 2011 8:55:11 PM org.apache.cxf.ws.rm.Proxy acknowledge
     [java] WARNING: It is not possible to send out-of-band
acknowledgments to the anonymous address.
     [java] An acknowledgement will be piggybacked on the next response.

Ok, the WARNINGs make sense - but now I'm getting the requests on the
server not only out of order but also with repeats (still using my
server ws_rm.xml with the delivery assurance).

Finally, I added request-response calls to the Client.java code,
following the one-way calls. Now the output is:

server:
     [java] Starting Server
     [java] Server ready...
     [java] Executing operation greetMeOneWay

     [java] Hello there Anne
     [java] Executing operation greetMeOneWay

     [java] Hello there Chris
     [java] Jan 4, 2011 9:02:54 PM org.apache.cxf.ws.rm.Proxy acknowledge
     [java] WARNING: It is not possible to send out-of-band
acknowledgments to the anonymous address.
     [java] An acknowledgement will be piggybacked on the next response.
     [java] Jan 4, 2011 9:02:56 PM
org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging
     [java] WARNING: Interceptor for
{http://cxf.apache.org/hello_world_soap_http}GreeterService#{http://cxf.apache.org/hello_world_soap_http}greetMeOneWay
has thrown exception, unwinding now
     [java] java.util.ConcurrentModificationException
     [java]     at
java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)
     [java]     at java.util.AbstractList$Itr.next(AbstractList.java:420)
     [java]     at
com.sun.xml.bind.v2.runtime.reflect.Lister$CollectionLister$1.next(Lister.java:284)
     [java]     ...
     [java] Executing operation greetMeOneWay
     [java]     at
org.apache.cxf.ws.rm.soap.RMSoapInterceptor.encodeProperty(RMSoapInterceptor.java:396)
     [java]     at
org.apache.cxf.ws.rm.soap.RMSoapInterceptor.encode(RMSoapInterceptor.java:206)
     [java]    ...
     [java] Jan 4, 2011 9:02:56 PM
org.apache.cxf.ws.addressing.ContextUtils rebaseResponse
     [java] WARNING: SERVER_TRANSPORT_REBASE_FAILURE_MSG
     [java] org.apache.cxf.interceptor.Fault
     [java]     at
org.apache.cxf.ws.addressing.ContextUtils.rebaseResponse(ContextUtils.java:408)
     [java]     at
org.apache.cxf.ws.addressing.MAPAggregator.mediate(MAPAggregator.java:547)
     [java]     at
org.apache.cxf.ws.addressing.MAPAggregator.handleMessage(MAPAggregator.java:227)
     [java]     at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
     [java]     at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
     [java]     at
org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:311)

     [java] Hello there Bill
     [java]     at
org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:280)
    ...
     [java] Executing operation greetMeOneWay

     [java] Hello there Anne
     [java]     at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
     [java]     at
org.apache.cxf.ws.addressing.ContextUtils.rebaseResponse(ContextUtils.java:403)
     [java]     ... 23 more
     [java] Executing operation greetMeOneWay

     [java] Hello there Chris
     [java] Executing operation greetMeOneWay

     [java] Hello there Daisy
     [java] Jan 4, 2011 9:02:58 PM org.apache.cxf.ws.rm.Proxy acknowledge
     [java] WARNING: It is not possible to send out-of-band
acknowledgments to the anonymous address.
     [java] An acknowledgement will be piggybacked on the next response.
     [java] Executing operation greetMeOneWay

     [java] Hello there Anne
     [java] Executing operation greetMeOneWay

     [java] Hello there Bill
     [java] Jan 4, 2011 9:03:02 PM org.apache.cxf.ws.rm.Proxy acknowledge
     [java] WARNING: It is not possible to send out-of-band
acknowledgments to the anonymous address.
     [java] An acknowledgement will be piggybacked on the next response.
     [java] Executing operation greetMe
     [java] Message received: Anne

     [java] Jan 4, 2011 9:03:22 PM
org.apache.cxf.ws.rm.soap.RetransmissionQueueImpl$ResendCandidate <init>
     [java] INFO: Cannot resend to anonymous target.  Not scheduling a
resend.
     [java] Jan 4, 2011 9:03:24 PM org.apache.cxf.ws.rm.Proxy acknowledge
     [java] WARNING: It is not possible to send out-of-band
acknowledgments to the anonymous address.
     [java] An acknowledgement will be piggybacked on the next response.
     [java] Executing operation greetMe
     [java] Message received: Bill

     [java] Jan 4, 2011 9:03:26 PM
org.apache.cxf.ws.rm.soap.RetransmissionQueueImpl$ResendCandidate <init>
     [java] INFO: Cannot resend to anonymous target.  Not scheduling a
resend.
     [java] Executing operation greetMe
     [java] Message received: Chris

     [java] Jan 4, 2011 9:03:26 PM
org.apache.cxf.ws.rm.soap.RetransmissionQueueImpl$ResendCandidate <init>
     [java] INFO: Cannot resend to anonymous target.  Not scheduling a
resend.
     [java] Jan 4, 2011 9:03:28 PM org.apache.cxf.ws.rm.Proxy acknowledge
     [java] WARNING: It is not possible to send out-of-band
acknowledgments to the anonymous address.
     [java] An acknowledgement will be piggybacked on the next response.
     [java] Executing operation greetMe
     [java] Message received: Chris

     [java] Jan 4, 2011 9:03:30 PM
org.apache.cxf.ws.rm.soap.RetransmissionQueueImpl$ResendCandidate <init>
     [java] INFO: Cannot resend to anonymous target.  Not scheduling a
resend.
     [java] Executing operation greetMe
     [java] Message received: Daisy

     [java] Jan 4, 2011 9:03:30 PM
org.apache.cxf.ws.rm.soap.RetransmissionQueueImpl$ResendCandidate <init>
     [java] INFO: Cannot resend to anonymous target.  Not scheduling a
resend.
     [java] Jan 4, 2011 9:03:32 PM org.apache.cxf.ws.rm.Proxy acknowledge
     [java] WARNING: It is not possible to send out-of-band
acknowledgments to the anonymous address.
     [java] An acknowledgement will be piggybacked on the next response.
     [java] Server exiting

The exception doesn't happen every time, but was interesting to see.

Am I doing something wrong here?

  - Dennis

-- 

Dennis M. Sosnoski
Java SOA and Web Services Consulting <http://www.sosnoski.com/consult.html>
Axis2/CXF/Metro SOA and Web Services Training
<http://www.sosnoski.com/training.html>
Web Services Jump-Start <http://www.sosnoski.com/jumpstart.html>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message