Hi Manuel,

If its a timeout that's causing the request to the fail, surely a better
solution would be to increase the timeout expiry period, rather than causing
the request to be re-sent (possibly triggering the timeout a second time)?

> [server side] java.net.HttpRetryException: cannot retry due to server
> authentication, in streaming mode

To avoid this issue, you'll need to disable chunking, using something like
the emboldened sections in the following client-side config:

<beans xmlns="http://www.springframework.org/schema/beans";
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
            *xmlns:http-conf="
http://cxf.apache.org/transports/http/configuration";
*            xsi:schemaLocation="*
http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd
*http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd";>

*    <http-conf:conduit name="*.http-conduit">
       <http-conf:client AllowChunking="false" />
   </http-conf:conduit> *
</beans>

> [server side] org.apache.cxf.binding.soap.SoapFault: Duplicate Message ID
> urn:uuid:49f2fe2b-e2d5-4fec-8b4d-df8987bf829a

This error is caused by the server-side WS-Addressing layer rejecting the
resent message due to the duplicate message ID.

Now you can explicitly configure the WSAddressingFeature to allow duplicates
as follows:

<wsa:addressing allowDuplicates="true"/>

but this has actually been the default behaviour for quite some time. You're
overriding the default behaviour in src/main/resources/cxf-services.xml with
the following setting:

<wsa:addressing allowDuplicates="false" />

So you'll need to remove that allowDuplicates attribute.

Cheers,
Eoghan

2009/8/3 EVENO Manuel <[email protected]>:
>
> Hi everyone,
>
> I'm trying to create an sample with CXF and WS-ReliableMessaging.
> I'm specifically interested in the delivery assurance functionality.
> I'm trying to implement a AtLeastOnce message exchange but with no
success.
>
> My use case is a client calls a service but that service takes a long time
> to execute
> so the client side request ends with a timeout. In that case, I want the
> message
> to be sent again.
>
> I've already tried to add some policy rule in my wsdl but I don't really
> understand
> how to write this part (I've also tried to read W3C and OASIS
specifications
> but
> everything is not that simple and clear.
>
> So I'm trying to use CXF WS-Policy Framework but I don't really understand
> what's going on.
> Various exceptions occurs in my log and I don't know how to solve them :
> [server side] java.net.HttpRetryException: cannot retry due to server
> authentication, in streaming mode
> [server side] org.apache.cxf.binding.soap.SoapFault: Duplicate Message ID
> urn:uuid:49f2fe2b-e2d5-4fec-8b4d-df8987bf829a
>
> Here my reduced maven project, including the WebService that can be run
with
> Tomcat or jetty
> And a web service client implemented as a JUnit Test.
> <<reliable-webservice.zip>> <<server.log>> <<client.log>>
>
> If anybody has time to have a look or a sample (of delivery assurance
> feature), this would be very helpful !
>
> Regards,
> Manuel

Reply via email to