You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ff...@apache.org on 2010/10/29 10:49:29 UTC
svn commit: r1028647 - in /cxf/branches/2.3.x-fixes: ./
rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/
rt/ws/rm/src/main/resources/schemas/configuration/
rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/
systests/ws-specs/src/test/java/org/apache/cxf/systest/...
Author: ffang
Date: Fri Oct 29 08:49:28 2010
New Revision: 1028647
URL: http://svn.apache.org/viewvc?rev=1028647&view=rev
Log:
Merged revisions 1028170 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1028170 | ffang | 2010-10-28 10:20:46 +0800 (四, 28 10 2010) | 1 line
[CXF-3097]ws-rm ImmediateAcknowledgement doesn't work for ws-rm client side
........
Modified:
cxf/branches/2.3.x-fixes/ (props changed)
cxf/branches/2.3.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/DestinationSequence.java
cxf/branches/2.3.x-fixes/rt/ws/rm/src/main/resources/schemas/configuration/wsrm-manager-types.xsd
cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/DestinationSequenceTest.java
cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerConfigurationTest.java
cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/feature.xml
cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/manager-bean.xml
cxf/branches/2.3.x-fixes/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/ServerPersistenceTest.java
Propchange: cxf/branches/2.3.x-fixes/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Fri Oct 29 08:49:28 2010
@@ -1 +1 @@
-/cxf/trunk:1-1022129,1022154,1022194,1022401-1022402,1022911,1023068,1023121,1023597-1026352,1026549,1026551,1027244,1027269,1027274,1027462,1027509,1027553,1027599
+/cxf/trunk:1-1022129,1022154,1022194,1022401-1022402,1022911,1023068,1023121,1023597-1026352,1026549,1026551,1027244,1027269,1027274,1027462,1027509,1027553,1027599,1028170
Modified: cxf/branches/2.3.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/DestinationSequence.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/DestinationSequence.java?rev=1028647&r1=1028646&r2=1028647&view=diff
==============================================================================
--- cxf/branches/2.3.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/DestinationSequence.java (original)
+++ cxf/branches/2.3.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/DestinationSequence.java Fri Oct 29 08:49:28 2010
@@ -292,6 +292,9 @@ public class DestinationSequence extends
} else {
LOG.fine("Schedule immediate acknowledgment");
scheduleImmediateAcknowledgement();
+ destination.getManager().getTimer().schedule(
+ new ImmediateFallbackAcknowledgment(), ap.getImmediaAcksTimeout().longValue());
+
}
}
@@ -370,6 +373,26 @@ public class DestinationSequence extends
}
}
+ final class ImmediateFallbackAcknowledgment extends TimerTask {
+
+ public void run() {
+ LOG.fine("timer task: send acknowledgment.");
+ if (!sendAcknowledgement()) {
+ //Acknowledgment already get send out
+ return;
+ }
+
+ try {
+ RMEndpoint rme = destination.getReliableEndpoint();
+ Proxy proxy = rme.getProxy();
+ proxy.acknowledge(DestinationSequence.this);
+ } catch (RMException ex) {
+ // already logged
+ }
+
+ }
+ }
+
final class SequenceTermination extends TimerTask {
private long maxInactivityTimeout;
Modified: cxf/branches/2.3.x-fixes/rt/ws/rm/src/main/resources/schemas/configuration/wsrm-manager-types.xsd
URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/ws/rm/src/main/resources/schemas/configuration/wsrm-manager-types.xsd?rev=1028647&r1=1028646&r2=1028647&view=diff
==============================================================================
--- cxf/branches/2.3.x-fixes/rt/ws/rm/src/main/resources/schemas/configuration/wsrm-manager-types.xsd (original)
+++ cxf/branches/2.3.x-fixes/rt/ws/rm/src/main/resources/schemas/configuration/wsrm-manager-types.xsd Fri Oct 29 08:49:28 2010
@@ -168,6 +168,16 @@
</xs:documentation>
</xs:annotation>
</xs:attribute>
+ <xs:attribute name="ImmediaAcksTimeout" type="xs:unsignedLong" use="optional" default="1000">
+ <xs:annotation>
+ <xs:documentation>
+ Timeout in millisecond. If timeout for a immediateAcks, then consider there's no
+ next invocation request in this sequence which can piggyback the SequenceAcknowledgement header.
+ Need create and send out a out-of-band SequenceAcknowledgement message
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
</xs:complexType>
<xs:complexType name="DeliveryAssuranceType">
Modified: cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/DestinationSequenceTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/DestinationSequenceTest.java?rev=1028647&r1=1028646&r2=1028647&view=diff
==============================================================================
--- cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/DestinationSequenceTest.java (original)
+++ cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/DestinationSequenceTest.java Fri Oct 29 08:49:28 2010
@@ -140,7 +140,8 @@ public class DestinationSequenceTest ext
@Test
public void testAcknowledgeBasic() throws SequenceFault {
- setUpDestination();
+ Timer timer = control.createMock(Timer.class);
+ setUpDestination(timer);
Message message1 = setUpMessage("1");
Message message2 = setUpMessage("2");
control.replay();
@@ -166,7 +167,8 @@ public class DestinationSequenceTest ext
@Test
public void testAcknowledgeLastMessageNumberExceeded() throws SequenceFault {
- setUpDestination();
+ Timer timer = control.createMock(Timer.class);
+ setUpDestination(timer);
Message message1 = setUpMessage("1");
Message message2 = setUpMessage("2");
control.replay();
@@ -187,7 +189,8 @@ public class DestinationSequenceTest ext
@Test
public void testAcknowledgeAppendRange() throws SequenceFault {
- setUpDestination();
+ Timer timer = control.createMock(Timer.class);
+ setUpDestination(timer);
Message[] messages = new Message [] {
setUpMessage("1"),
setUpMessage("2"),
@@ -216,7 +219,8 @@ public class DestinationSequenceTest ext
@Test
public void testAcknowledgeInsertRange() throws SequenceFault {
- setUpDestination();
+ Timer timer = control.createMock(Timer.class);
+ setUpDestination(timer);
Message[] messages = new Message [] {
setUpMessage("1"),
setUpMessage("2"),
@@ -250,7 +254,8 @@ public class DestinationSequenceTest ext
@Test
public void testAcknowledgePrependRange() throws SequenceFault {
- setUpDestination();
+ Timer timer = control.createMock(Timer.class);
+ setUpDestination(timer);
Message[] messages = new Message [] {
setUpMessage("4"),
setUpMessage("5"),
@@ -323,7 +328,8 @@ public class DestinationSequenceTest ext
@Test
public void testMonitor() throws SequenceFault {
- setUpDestination();
+ Timer timer = control.createMock(Timer.class);
+ setUpDestination(timer);
Message[] messages = new Message[15];
for (int i = 0; i < messages.length; i++) {
messages[i] = setUpMessage(Integer.toString(i + 1));
@@ -365,7 +371,8 @@ public class DestinationSequenceTest ext
@Test
public void testAcknowledgeImmediate() throws SequenceFault {
- setUpDestination();
+ Timer timer = control.createMock(Timer.class);
+ setUpDestination(timer);
Message message = setUpMessage("1");
control.replay();
Modified: cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerConfigurationTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerConfigurationTest.java?rev=1028647&r1=1028646&r2=1028647&view=diff
==============================================================================
--- cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerConfigurationTest.java (original)
+++ cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerConfigurationTest.java Fri Oct 29 08:49:28 2010
@@ -77,6 +77,8 @@ public class RMManagerConfigurationTest
assertNotNull(manager);
assertTrue(manager.getSourcePolicy().getSequenceTerminationPolicy().isTerminateOnShutdown());
assertEquals(0L, manager.getDestinationPolicy().getAcksPolicy().getIntraMessageThreshold());
+ assertEquals(2000L, manager.getDestinationPolicy().getAcksPolicy().
+ getImmediaAcksTimeout().longValue());
assertEquals(10000L, manager.getRMAssertion().getBaseRetransmissionInterval()
.getMilliseconds().longValue());
assertEquals(10000L, manager.getRMAssertion().getAcknowledgementInterval()
Modified: cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/feature.xml
URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/feature.xml?rev=1028647&r1=1028646&r2=1028647&view=diff
==============================================================================
--- cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/feature.xml (original)
+++ cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/feature.xml Fri Oct 29 08:49:28 2010
@@ -43,7 +43,7 @@ http://www.springframework.org/schema/be
<wsrm-mgr:sequenceTerminationPolicy terminateOnShutdown="true"/>
</wsrm-mgr:sourcePolicy>
<wsrm-mgr:destinationPolicy>
- <wsrm-mgr:acksPolicy intraMessageThreshold="0"/>
+ <wsrm-mgr:acksPolicy ImmediaAcksTimeout="2000" intraMessageThreshold="0"/>
</wsrm-mgr:destinationPolicy>
<wsrm-mgr:store>
<bean class="org.apache.cxf.ws.rm.RMManagerConfigurationTest$TestStore">
Modified: cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/manager-bean.xml
URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/manager-bean.xml?rev=1028647&r1=1028646&r2=1028647&view=diff
==============================================================================
--- cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/manager-bean.xml (original)
+++ cxf/branches/2.3.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/manager-bean.xml Fri Oct 29 08:49:28 2010
@@ -42,7 +42,7 @@ http://www.springframework.org/schema/be
<wsrm-mgr:sequenceTerminationPolicy terminateOnShutdown="true"/>
</wsrm-mgr:sourcePolicy>
<wsrm-mgr:destinationPolicy>
- <wsrm-mgr:acksPolicy intraMessageThreshold="0"/>
+ <wsrm-mgr:acksPolicy ImmediaAcksTimeout="2000" intraMessageThreshold="0"/>
</wsrm-mgr:destinationPolicy>
<wsrm-mgr:store>
<bean class="org.apache.cxf.ws.rm.RMManagerConfigurationTest$TestStore">
Modified: cxf/branches/2.3.x-fixes/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/ServerPersistenceTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/ServerPersistenceTest.java?rev=1028647&r1=1028646&r2=1028647&view=diff
==============================================================================
--- cxf/branches/2.3.x-fixes/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/ServerPersistenceTest.java (original)
+++ cxf/branches/2.3.x-fixes/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/ServerPersistenceTest.java Fri Oct 29 08:49:28 2010
@@ -163,7 +163,7 @@ public class ServerPersistenceTest exten
awaitMessages(4, 6, 20000);
// wait another while to prove that response to second request is indeed lost
- Thread.sleep(1000);
+ Thread.sleep(4000);
int nDone = 0;
for (int i = 0; i < responses.length; i++) {
if (responses[i].isDone()) {
@@ -177,12 +177,13 @@ public class ServerPersistenceTest exten
String[] expectedActions = new String[] {RMConstants.getCreateSequenceAction(),
GREETME_ACTION,
GREETME_ACTION,
- GREETME_ACTION};
+ GREETME_ACTION,
+ RMConstants.getSequenceAckAction()};
mf.verifyActions(expectedActions, true);
// mf.verifyMessageNumbers(new String[] {null, "1", "2", "3"}, true);
// mf.verifyAcknowledgements(new boolean[] {false, false, true, false}, true);
- mf.verifyPartialResponses(4);
+ mf.verifyPartialResponses(5);
mf.purgePartialResponses();
expectedActions = new String[] {RMConstants.getCreateSequenceResponseAction(),
GREETME_RESPONSE_ACTION,