jaliya 2005/02/02 05:41:55
Modified: sandesha/interop/org/apache/sandesha/samples/interop
EchoStringService.java
sandesha/src/org/apache/sandesha EnvelopeCreator.java
IStorageManager.java
sandesha/src/org/apache/sandesha/client RMSender.java
sandesha/src/org/apache/sandesha/server
AcknowledgementProcessor.java
CompositeProcessor.java
CreateSequenceProcessor.java RMInvoker.java
Sender.java ServerStorageManager.java
sandesha/src/org/apache/sandesha/server/queue
ResponseSequenceHash.java ServerQueue.java
sandesha/src/org/apache/sandesha/ws/rm RMHeaders.java
sandesha/src/org/apache/sandesha/ws/rm/handlers
RMHandler.java RMServerRequestHandler.java
sandesha/src/org/apache/sandesha/ws/rm/providers
RMProvider.java
Log:
Fixed some bugs in the code, by testing the inter-op with IBM end point
Revision Changes Path
1.4 +14 -0
ws-fx/sandesha/interop/org/apache/sandesha/samples/interop/EchoStringService.java
Index: EchoStringService.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/interop/org/apache/sandesha/samples/interop/EchoStringService.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- EchoStringService.java 7 May 2004 15:18:20 -0000 1.3
+++ EchoStringService.java 2 Feb 2005 13:41:55 -0000 1.4
@@ -33,6 +33,20 @@
sequences.put(sequence,(new String(text)));
}
+ System.out.println("ECHO-STRING SERVICE "+ text);
return text;
}
+
+ public void pingString(String text,String sequence){
+
+ if(sequences.get(sequence)!=null){
+ text=(String) sequences.get(sequence)+text;
+ sequences.put(sequence,new String(text));
+ }else{
+ sequences.put(sequence,(new String(text)));
+
+ }
+ System.out.println("PING-STRING SERVICE "+ text);
+
+ }
}
1.14 +64 -75
ws-fx/sandesha/src/org/apache/sandesha/EnvelopeCreator.java
Index: EnvelopeCreator.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/EnvelopeCreator.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- EnvelopeCreator.java 10 Jan 2005 12:11:26 -0000 1.13
+++ EnvelopeCreator.java 2 Feb 2005 13:41:55 -0000 1.14
@@ -1,19 +1,19 @@
/*
- * Copyright 1999-2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
+* Copyright 1999-2004 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
package org.apache.sandesha;
import java.net.URL;
@@ -27,13 +27,7 @@
import org.apache.axis.components.uuid.UUIDGenFactory;
import org.apache.axis.message.SOAPBody;
import org.apache.axis.message.SOAPEnvelope;
-import org.apache.axis.message.addressing.Action;
-import org.apache.axis.message.addressing.Address;
-import org.apache.axis.message.addressing.AddressingHeaders;
-import org.apache.axis.message.addressing.From;
-import org.apache.axis.message.addressing.MessageID;
-import org.apache.axis.message.addressing.ReplyTo;
-import org.apache.axis.message.addressing.To;
+import org.apache.axis.message.addressing.*;
import org.apache.axis.types.URI;
import org.apache.axis.types.URI.MalformedURIException;
import org.apache.sandesha.ws.rm.CreateSequence;
@@ -71,14 +65,12 @@
try {
- AddressingHeaders outGoingAddressingHaders = new
AddressingHeaders(
- envelope, null, true, false, true, false, null);
+ AddressingHeaders outGoingAddressingHaders = new
AddressingHeaders(envelope);
Action action = new Action(new URI(
Constants.ACTION_CREATE_SEQUENCE_RESPONSE));
-
- SOAPHeaderElement actionElement = action
- .toSOAPHeaderElement(envelope);
+ //TODO actor??
+ SOAPHeaderElement actionElement =
action.toSOAPHeaderElement(envelope,null);
//actionElement.setMustUnderstand(true);
outGoingAddressingHaders.setAction(action);
@@ -102,12 +94,13 @@
incommingMessageId.toString(), new QName(
Constants.WSA_PREFIX, Constants.WSA_NS));
- //Setting the <To>
- ReplyTo incommingReplyTo = (ReplyTo)
addressingHeaders.getReplyTo();
- Address incommingAddress = incommingReplyTo.getAddress();
- To to = new To(new URI(incommingAddress.toString()));
- outGoingAddressingHaders.setTo(to);
-
+ //SettingTo
+ if(!rmMessageContext.getSync()){
+ ReplyTo incommingReplyTo = (ReplyTo)
addressingHeaders.getReplyTo();
+ AttributedURI incommingAddress =
incommingReplyTo.getAddress();
+ To to = new To(new URI(incommingAddress.toString()));
+ outGoingAddressingHaders.setTo(to);
+ }
outGoingAddressingHaders.toEnvelope(envelope, null);
//now set the body elements
@@ -135,17 +128,16 @@
//Constants.SERVER
public static SOAPEnvelope createCreateSequenceEnvelope(String uuid,
- RMMessageContext message, int endPoint) {
+ RMMessageContext
message, int endPoint) {
AddressingHeaders addressingHeaders = message.getAddressingHeaders();
SOAPEnvelope envelope = createBasicEnvelop();
try {
- AddressingHeaders outGoingAddressingHaders = new
AddressingHeaders(
- envelope, null, true, false, true, false, null);
+ AddressingHeaders outGoingAddressingHaders = new
AddressingHeaders(envelope);
Action action = new Action( new
URI(Constants.ACTION_CREATE_SEQUENCE));
- SOAPHeaderElement acionElement =
action.toSOAPHeaderElement(envelope);
+ SOAPHeaderElement acionElement =
action.toSOAPHeaderElement(envelope,null);
outGoingAddressingHaders.setAction(action);
MessageID messageId = new MessageID(new URI("uuid:" + uuid));
@@ -159,9 +151,9 @@
outGoingAddressingHaders.setReplyTo(new ReplyTo(new
Address(Constants.ANONYMOUS_URI)));
}
else{
- if (addressingHeaders.getReplyTo() != null)
- outGoingAddressingHaders.setReplyTo(addressingHeaders
- .getReplyTo());
+ if (addressingHeaders.getReplyTo() != null)
+ outGoingAddressingHaders.setReplyTo(addressingHeaders
+ .getReplyTo());
}
} else if (endPoint == 1) {
//Setting from the Server
@@ -177,7 +169,7 @@
//Setting To
ReplyTo incommingReplyTo = (ReplyTo) addressingHeaders
.getReplyTo();
- Address incommingAddress = incommingReplyTo.getAddress();
+ AttributedURI incommingAddress =
incommingReplyTo.getAddress();
To to = new To(new URI(incommingAddress.toString()));
outGoingAddressingHaders.setTo(to);
}
@@ -232,14 +224,13 @@
.getAddressingHeaders();
SOAPEnvelope envelope = createBasicEnvelop();
try {
- AddressingHeaders outGoingAddressingHaders = new
AddressingHeaders(
- envelope, null, true, false, true, false, null);
+ AddressingHeaders outGoingAddressingHaders = new
AddressingHeaders(envelope);
//Action for sequence acknowledgement.
Action action = new Action(new URI(
Constants.RM_SEQUENCE_ACKNOWLEDMENT_ACTION));
SOAPHeaderElement actionElement = action
- .toSOAPHeaderElement(envelope);
+ .toSOAPHeaderElement(envelope,null);
//actionElement.setMustUnderstand(true);
outGoingAddressingHaders.setAction(action);
@@ -258,7 +249,7 @@
outGoingAddressingHaders.setFrom(from);
//Add to <To>
- Address inFrom = addressingHeaders.getFrom().getAddress();
+ AttributedURI inFrom = addressingHeaders.getFrom().getAddress();
To to = new To(new URI(inFrom.toString()));
outGoingAddressingHaders.setTo(to);
@@ -289,8 +280,7 @@
.getAddressingHeaders();
SOAPEnvelope responseEnvelope = createBasicEnvelop();
try {
- AddressingHeaders outGoingAddressingHaders = new
AddressingHeaders(
- responseEnvelope, null, true, false, true, false, null);
+ AddressingHeaders outGoingAddressingHaders = new
AddressingHeaders(responseEnvelope);
//TODO Action for RESPONSE MESSAGE
//Do we need this????
Identifier seqId = new Identifier();
@@ -311,7 +301,7 @@
//outGoingAddressingHaders.setRelatesTo(relatesToList);
///RelatesTo relatesTo = new RelatesTo();
if (rmMessageContext.getOldSequenceID() != null)
- //Needs to verify the relatesTo Header.
+ //Needs to verify the relatesTo Header.
outGoingAddressingHaders.addRelatesTo(rmMessageContext
.getMessageID(), new QName("aa", "bb"));
@@ -332,13 +322,13 @@
//TODO
//HARD CODED REPLYTO
//THIS SHOULD BE SET USING A PROPERTY FOR THE SEVER SIDE
- ReplyTo replyTo = new ReplyTo(
- new Address(
-
"http://localhost:8080/axis/services/EchoStringService?wsdl"));
+ // ReplyTo replyTo = new ReplyTo(
+ // new Address(
+ //
"http://localhost:8080/axis/services/EchoStringService?wsdl"));
outGoingAddressingHaders.setReplyTo(from);
//Add to <To>
- Address inFrom = addressingHeaders.getFrom().getAddress();
+ AttributedURI inFrom = addressingHeaders.getFrom().getAddress();
To to = new To(new URI(inFrom.toString()));
outGoingAddressingHaders.setTo(to);
@@ -352,10 +342,11 @@
e.printStackTrace();
}
+
//Set the addressing headers to the SOAPEnvelope.
outGoingAddressingHaders.toEnvelope(responseEnvelope, null);
- responseEnvelope.setBody((SOAPBody)
rmMessageContext.getMsgContext().getResponseMessage().getSOAPBody());
-
+ responseEnvelope.setBody((SOAPBody)
rmMessageContext.getMsgContext().getResponseMessage().getSOAPEnvelope().getBody());
+
} catch (SOAPException e) {
// TODO Auto-generated catch block
@@ -390,9 +381,9 @@
Identifier id = new Identifier();
id.setIdentifier(rmMessageContext.getSequenceID());
seq.setIdentifier(id);
-
+
if(rmMessageContext.isLastMessage()){
- seq.setLastMessage(new LastMessage());
+ seq.setLastMessage(new LastMessage());
}
//Message Number for the new message.
@@ -402,8 +393,8 @@
rmHeaders.setSequence(seq);
rmMessageContext.setRMHeaders(rmHeaders);
-
-
+
+
try {
@@ -412,8 +403,7 @@
.getRequestMessage().getSOAPEnvelope();
rmMessageContext.getRMHeaders().toSoapEnvelop(requestEnvelope);
- AddressingHeaders outGoingAddressingHaders = new
AddressingHeaders(
- requestEnvelope, null, true, false, true, false, null);
+ AddressingHeaders outGoingAddressingHaders = new
AddressingHeaders(requestEnvelope);
//Set the messageID
//UUIDGen uuidGen = UUIDGenFactory.getUUIDGen();
@@ -430,7 +420,7 @@
outGoingAddressingHaders.setFrom(addressingHeaders.getFrom());
outGoingAddressingHaders.setTo(addressingHeaders.getTo());
if(addressingHeaders.getReplyTo()!=null)
-
outGoingAddressingHaders.setReplyTo(addressingHeaders.getReplyTo());
+
outGoingAddressingHaders.setReplyTo(addressingHeaders.getReplyTo());
//TODO
//Action should be taken from the server-config.wsdd.
@@ -440,8 +430,8 @@
} catch (Exception e) {
e.printStackTrace();
}
-
-
+
+
//Set the addressing headers to the SOAPEnvelope.
outGoingAddressingHaders.toEnvelope(requestEnvelope, null);
//System.out.println(requestEnvelope.toString());
@@ -464,33 +454,32 @@
AddressingHeaders addressingHeaders =
rmMessageContext.getAddressingHeaders();
SOAPEnvelope terSeqEnv = createBasicEnvelop();
try {
- AddressingHeaders outGoingAddressingHaders = new
AddressingHeaders(terSeqEnv,
- null, true, false, true, false, null);
+ AddressingHeaders outGoingAddressingHaders = new
AddressingHeaders(terSeqEnv);
Identifier seqId = new Identifier();
seqId.setIdentifier(rmMessageContext.getSequenceID());
Sequence seq = new Sequence();
seq.setIdentifier(seqId);
seq.toSoapEnvelop(terSeqEnv);
-
-
+
+
Action terSeqAction = new Action(new
URI(Constants.ACTION_TERMINATE_SEQUENCE));
outGoingAddressingHaders.setAction(terSeqAction);
-
+
UUIDGen uuidGen = UUIDGenFactory.getUUIDGen();
MessageID messageId = new MessageID(new URI("uuid:"+
uuidGen.nextUUID()));
outGoingAddressingHaders.setMessageID(messageId);
-
+
outGoingAddressingHaders.setFrom(addressingHeaders.getFrom());
outGoingAddressingHaders.setTo(addressingHeaders.getTo());
-
+
outGoingAddressingHaders.toEnvelope(terSeqEnv, null);
-
-
+
+
TerminateSequence terSeq= new TerminateSequence();
terSeq.toSoapEnvelop( terSeqEnv);
-
-
-
+
+
+
} catch (Exception e) {
e.printStackTrace();
}
1.12 +1 -1
ws-fx/sandesha/src/org/apache/sandesha/IStorageManager.java
Index: IStorageManager.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/IStorageManager.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- IStorageManager.java 11 Jan 2005 13:49:34 -0000 1.11
+++ IStorageManager.java 2 Feb 2005 13:41:55 -0000 1.12
@@ -67,7 +67,7 @@
public void addAcknowledgement(RMMessageContext rmMessageContext);
//Need to implement this
- public boolean isMessageExist(String sequenceID, long messageNumber);
+ public boolean isMessageExist(String sequenceID, long messageNumber);
//Try to send me a sorted map as we disucssed.
public Map getListOfMessageNumbers(String sequenceID);
1.20 +16 -1
ws-fx/sandesha/src/org/apache/sandesha/client/RMSender.java
Index: RMSender.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/client/RMSender.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- RMSender.java 19 Jan 2005 06:50:25 -0000 1.19
+++ RMSender.java 2 Feb 2005 13:41:55 -0000 1.20
@@ -18,6 +18,8 @@
import java.io.IOException;
import java.net.ServerSocket;
+import java.util.Vector;
+import java.util.Iterator;
import javax.wsdl.extensions.soap.SOAPFault;
import javax.xml.namespace.QName;
@@ -35,6 +37,7 @@
import org.apache.axis.handlers.BasicHandler;
import org.apache.axis.handlers.soap.SOAPService;
import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.message.SOAPHeaderElement;
import org.apache.axis.message.addressing.Action;
import org.apache.axis.message.addressing.Address;
import org.apache.axis.message.addressing.AddressingHeaders;
@@ -104,7 +107,19 @@
requestMesssageContext.getMessageID());
Thread.sleep(Constants.CLIENT_RESPONSE_CHECKING_INTERVAL);
}
-
msgContext.setResponseMessage(responseMessageContext.getMsgContext()
+
+
+ Vector
headers=responseMessageContext.getMsgContext().getRequestMessage().getSOAPEnvelope().getHeaders();
+ Iterator ite=headers.iterator();
+
+ while(ite.hasNext()){
+ System.out.println("HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH");
+ SOAPHeaderElement headerElement =
(SOAPHeaderElement)ite.next();
+ headerElement.setMustUnderstand(false);
+ headerElement.setProcessed(true);
+ }
+
+
msgContext.setResponseMessage(responseMessageContext.getMsgContext()
.getRequestMessage());
} else {
boolean gotAck = false;
1.14 +16 -19
ws-fx/sandesha/src/org/apache/sandesha/server/AcknowledgementProcessor.java
Index: AcknowledgementProcessor.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/AcknowledgementProcessor.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- AcknowledgementProcessor.java 12 Jan 2005 12:19:31 -0000 1.13
+++ AcknowledgementProcessor.java 2 Feb 2005 13:41:55 -0000 1.14
@@ -33,14 +33,14 @@
/**
* @author
*/
-public class AcknowledgementProcessor implements IRMMessageProcessor {
- IStorageManager storageManger = null;
+public final class AcknowledgementProcessor implements
org.apache.sandesha.server.IRMMessageProcessor {
+ private IStorageManager storageManger = null;
public AcknowledgementProcessor(IStorageManager storageManger) {
this.storageManger = storageManger;
}
- public boolean processMessage(RMMessageContext rmMessageContext)
throws RMException {
+ public final boolean processMessage(RMMessageContext rmMessageContext)
throws RMException {
SequenceAcknowledgement seqAcknowledgement = rmMessageContext
.getRMHeaders().getSequenceAcknowledgement();
String seqID = seqAcknowledgement.getIdentifier().getIdentifier();
@@ -72,7 +72,7 @@
//Assume that the list is sorted and in the ascending order.
Map listOfMsgNumbers = storageManger.getListOfMessageNumbers(seqID);
- if(listOfMsgNumbers == null)
+ if(null == listOfMsgNumbers)
System.out.println("MSG Number list is NULL");
else{
Iterator ite = listOfMsgNumbers.keySet().iterator();
@@ -93,22 +93,20 @@
//FIX THIS FIX THIS //FIX THIS FIX THIS //FIX THIS FIX THIS
//Need to change this to the new Anonymous URI.
- if (((rmMessageContext.getAddressingHeaders().getFrom().getAddress()
- .toString()
-
.equals(org.apache.axis.message.addressing.Constants.NS_URI_ANONYMOUS)) == true)
- || (rmMessageContext.getAddressingHeaders().getFrom()
- .getAddress().toString()
-
.equals("http://schemas.xmlsoap.org/ws/2003/03/addressing/role/anonymous"))) {
+ if ((true ==
(rmMessageContext.getAddressingHeaders().getFrom().getAddress().toString()
+
.equals(org.apache.axis.message.addressing.Constants.NS_URI_ANONYMOUS)))
+ ||
("http://schemas.xmlsoap.org/ws/2003/03/addressing/role/anonymous".equals(rmMessageContext.getAddressingHeaders().getFrom()
+ .getAddress().toString()))) {
//Now we have synchronized ack.
//The original message context is used to send the ack
// asynchronously to the client.
//So the response message is replaced by the new ack message.
try{
- rmMessageContext.getMsgContext().setResponseMessage(
- new
Message(rmMsgContext.getMsgContext().getResponseMessage().getSOAPEnvelope()));
+ String
soapMsg=rmMsgContext.getMsgContext().getResponseMessage().getSOAPPartAsString();
+ rmMessageContext.getMsgContext().setResponseMessage(new
Message(soapMsg));
} catch(Exception e ){
throw new RMException(e.getLocalizedMessage());
- }
+ }
return true;
} else {
@@ -121,9 +119,9 @@
}
- private RMMessageContext getAckRMMsgCtx(RMMessageContext
rmMessageContext, Vector ackRangeVector){
+ private static RMMessageContext getAckRMMsgCtx(RMMessageContext
rmMessageContext, Vector ackRangeVector){
- SOAPEnvelope ackEnvelope = EnvelopeCreator
+ SOAPEnvelope ackEnvelope = EnvelopeCreator
.createAcknowledgementEnvelope(rmMessageContext,
ackRangeVector);
//Add the envelope to the response message of the messageContext.
//rmMessageContext.getMsgContext().setResponseMessage(new
@@ -134,8 +132,7 @@
Message resMsg = new Message(ackEnvelope);
//Create a new message context to store the ack message.
- MessageContext msgContext = new MessageContext(rmMessageContext
- .getMsgContext().getAxisEngine());
+ MessageContext msgContext = new
MessageContext(rmMessageContext.getMsgContext().getAxisEngine());
//Copy the contents of the rmMessageContext to the rmMsgContext.
rmMessageContext.copyContents(rmMsgContext);
//Set the response message using the Ack message
@@ -183,9 +180,9 @@
.longValue();
} else {
- if ((((Long) listOfMsgNumbers.get(new Long(i + 1)))
+ if (1 == (((Long) listOfMsgNumbers.get(new Long(i + 1)))
.longValue() - ((Long) listOfMsgNumbers
- .get(new Long(i))).longValue()) == 1) {
+ .get(new Long(i))).longValue())) {
max = ((Long) listOfMsgNumbers.get(new Long(i + 1)))
.longValue();
found = true;
1.14 +20 -33
ws-fx/sandesha/src/org/apache/sandesha/server/CompositeProcessor.java
Index: CompositeProcessor.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/CompositeProcessor.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- CompositeProcessor.java 12 Jan 2005 12:19:31 -0000 1.13
+++ CompositeProcessor.java 2 Feb 2005 13:41:55 -0000 1.14
@@ -39,62 +39,48 @@
public boolean processMessage(RMMessageContext rmMessageContext) throws
RMException{
//if the message is and Ack then process the ack
- //if the message has a body then insert it to the inqueue
+ //if the message has a body then insert it to the queue
RMHeaders rmHeaders = rmMessageContext.getRMHeaders();
- AcknowledgementProcessor ackProcessor = new AcknowledgementProcessor(
- this.storageManger);
+ AcknowledgementProcessor ackProcessor = new
AcknowledgementProcessor(this.storageManger);
if (rmHeaders.getSequenceAcknowledgement() != null) {
-
- ackProcessor.processMessage(rmMessageContext);
+ ackProcessor.processMessage(rmMessageContext);
}
if (rmHeaders.getSequence() != null) {
if (rmHeaders.getSequence().getMessageNumber() != null) {
- String sequenceID = rmHeaders.getSequence().getIdentifier()
- .getIdentifier();
- long messageNumber =
rmHeaders.getSequence().getMessageNumber()
- .getMessageNumber();
+ String sequenceID =
rmHeaders.getSequence().getIdentifier().getIdentifier();
+ long messageNumber =
rmHeaders.getSequence().getMessageNumber().getMessageNumber();
if (storageManger.isMessageExist(sequenceID, messageNumber)
!= true) {
//Create a copy of the RMMessageContext.
RMMessageContext rmMsgContext = new RMMessageContext();
-
- System.out.println("SETTING THE RESPONSE "+sequenceID+"
"+messageNumber) ;
+ //Copy the RMMEssageContext
+ rmMessageContext.copyContents(rmMsgContext);
+ System.out.println("SETTING THE RESPONSE "+sequenceID+"
"+messageNumber) ;
rmMsgContext.setSequenceID(sequenceID);
rmMsgContext.setMsgNumber(messageNumber);
-
try {
+ //Create a new MessageContext, by pasing the axis
engine.
+ MessageContext msgContext = new
MessageContext(rmMessageContext.getMsgContext().getAxisEngine());
+ //Copy the existing message context to the new
message context.
+
RMMessageContext.copyMessageContext(rmMessageContext.getMsgContext(),
msgContext);
//Copy the request and response messages.
- Message reqMsg = new Message(rmMessageContext
- .getMsgContext().getRequestMessage()
- .getSOAPPartAsString());
- Message resMsg = new Message(rmMessageContext
- .getMsgContext().getResponseMessage()
- .getSOAPPartAsString());
-
- //Create a new MessageContext, by pasing the axis
- // engine.
- MessageContext msgContext = new MessageContext(
- rmMessageContext.getMsgContext()
- .getAxisEngine());
- //Copy the existing message context to the new
message
- // context.
- RMMessageContext.copyMessageContext(rmMessageContext
- .getMsgContext(), msgContext);
- //Copy the RMMEssageContext
- rmMessageContext.copyContents(rmMsgContext);
+ String
soapMsg=rmMessageContext.getMsgContext().getRequestMessage().getSOAPPartAsString();
+ Message reqMsg = new Message(soapMsg);
+ //Message resMsg = new Message(rmMessageContext
+ // .getMsgContext().getResponseMessage()
+ // .getSOAPPartAsString());
//Set the request and response messages of the
message
// context.
msgContext.setRequestMessage(reqMsg);
- msgContext.setResponseMessage(resMsg);
+ //msgContext.setResponseMessage(resMsg);
//rmMsgContext.setReqEnv(reqMsg.getSOAPEnvelope());
//rmMsgContext.setResEnv(resMsg.getSOAPEnvelope());
rmMsgContext.setMsgContext(msgContext);
//Set the message type for this message.
- rmMsgContext
-
.setMessageType(Constants.MSG_TYPE_SERVICE_REQUEST);
+
rmMsgContext.setMessageType(Constants.MSG_TYPE_SERVICE_REQUEST);
} catch (Exception e) {
e.printStackTrace();
//TODO: Add to log.
@@ -110,6 +96,7 @@
return ackProcessor.sendAcknowledgement(rmMessageContext);
}
}
+ //If we don't have the sequence in the message then we have to send
some errors.
return false;
}
1.13 +10 -12
ws-fx/sandesha/src/org/apache/sandesha/server/CreateSequenceProcessor.java
Index: CreateSequenceProcessor.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/CreateSequenceProcessor.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- CreateSequenceProcessor.java 12 Jan 2005 12:19:31 -0000 1.12
+++ CreateSequenceProcessor.java 2 Feb 2005 13:41:55 -0000 1.13
@@ -46,7 +46,10 @@
AddressingHeaders addrHeaders =
rmMessageContext.getAddressingHeaders();
RMHeaders rmHeaders = rmMessageContext.getRMHeaders();
- if (addrHeaders.getReplyTo() != null) {
+ if (addrHeaders.getReplyTo() == null)
+ rmMessageContext.setSync(true);
+ else
+ rmMessageContext.setSync(false);
/*
* We may let the user to decide on the UUID generation process.
If
@@ -76,12 +79,12 @@
//FIX THIS FIX THIS
//Need to change the ANONYMOUS URI to the new one after
completion.
//We have some synchronous stuff here
-
- if ((addrHeaders.getReplyTo().getAddress().toString()
-
-
.equals("http://schemas.xmlsoap.org/ws/2003/03/addressing/role/anonymous"))
- || (addrHeaders.getReplyTo().getAddress().toString()
- .equals(Constants.NS_URI_ANONYMOUS))) {
+ //TODO Do we need to support the null replyZo case?
+ //If the from is also missing, and the reply to is alos null
then we will assume it is
+ //synchornous.
+ if (addrHeaders.getReplyTo() == null ||
addrHeaders.getReplyTo().getAddress().toString()
+
.equals("http://schemas.xmlsoap.org/ws/2003/03/addressing/role/anonymous") ||
addrHeaders.getReplyTo().getAddress().toString()
+ .equals(Constants.NS_URI_ANONYMOUS)) {
//Inform that we have a synchronous response.
rmMessageContext.getMsgContext().setResponseMessage(
@@ -89,8 +92,6 @@
rmMessageContext.setSync(true);
return true;
} else {
- //FIX THIS FIX THIS
- //This should be storageManger.addCreateSequenceResponse();
MessageContext msgContext = new
MessageContext(rmMessageContext
.getMsgContext().getAxisEngine());
@@ -104,9 +105,6 @@
return false;
}
- } else {
- throw new RMException("REPLY TO CANNOT BE NULL!");
- }
}
1.9 +7 -10
ws-fx/sandesha/src/org/apache/sandesha/server/RMInvoker.java
Index: RMInvoker.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/RMInvoker.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- RMInvoker.java 11 Jan 2005 13:51:57 -0000 1.8
+++ RMInvoker.java 2 Feb 2005 13:41:55 -0000 1.9
@@ -58,8 +58,7 @@
//Get the next message to invoke.
//storeManager is responsible of giving the correct message
to
// invoke.
- RMMessageContext rmMessageContext = storageManager
- .getNextMessageToProcess();
+ RMMessageContext rmMessageContext =
storageManager.getNextMessageToProcess();
//If not return is null then proceed with invokation.
if (rmMessageContext != null) {
@@ -78,11 +77,10 @@
storageManager.insertTerminateSeqMessage(getTerminateSeqMessage(rmMessageContext));
}
rpcProvider.invoke(rmMessageContext.getMsgContext());
-
+
//Check whether we have an output (response) or not.
- if (rmMessageContext.getMsgContext().getOperation()
- .getMethod().getReturnType() != Void.TYPE) {
+ if
(rmMessageContext.getMsgContext().getOperation().getMethod().getReturnType() !=
Void.TYPE) {
//System.out
// .println("STORING THE RESPONSE
MESSAGE.....\n");
//Store the message in the response queue.
@@ -91,8 +89,7 @@
//a new HTTP connection and the <replyTo> header is
// used in this case.
//This is done by the RMSender.
- rmMessageContext
-
.setMessageType(Constants.MSG_TYPE_SERVICE_RESPONSE);
+
rmMessageContext.setMessageType(Constants.MSG_TYPE_SERVICE_RESPONSE);
//System.out.println("TESTING FOR RESPONSE
SEQUENCE");
boolean firstMsgOfResponseSeq = !storageManager
@@ -124,9 +121,9 @@
MessageContext msgContext = new MessageContext(
rmMessageContext.getMsgContext()
.getAxisEngine());
- // RMMessageContext.copyMessageContext(
- // rmMessageContext.getMsgContext(),
- // msgContext);
+ RMMessageContext.copyMessageContext(
+ rmMessageContext.getMsgContext(),
+ msgContext);
//Set this new msgContext to the rmMsgContext.
rmMsgContext.setMsgContext(msgContext);
1.20 +39 -10 ws-fx/sandesha/src/org/apache/sandesha/server/Sender.java
Index: Sender.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/Sender.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- Sender.java 12 Jan 2005 12:19:31 -0000 1.19
+++ Sender.java 2 Feb 2005 13:41:55 -0000 1.20
@@ -22,15 +22,20 @@
import org.apache.axis.AxisFault;
import org.apache.axis.Message;
+import org.apache.axis.SimpleChain;
+import org.apache.axis.Handler;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.message.addressing.AddressingHeaders;
+import org.apache.axis.message.addressing.handler.AddressingHandler;
import org.apache.sandesha.Constants;
import org.apache.sandesha.EnvelopeCreator;
import org.apache.sandesha.IStorageManager;
import org.apache.sandesha.RMException;
import org.apache.sandesha.RMMessageContext;
import org.apache.sandesha.ws.rm.RMHeaders;
+import org.apache.sandesha.ws.rm.handlers.RMHandler;
+import org.apache.sandesha.ws.rm.handlers.RMServerRequestHandler;
/**
* @author JEkanayake
@@ -193,9 +198,11 @@
private void sendServiceResponse(RMMessageContext rmMessageContext) {
SOAPEnvelope responseEnvelope = null;
- //This sho
responseEnvelope =
EnvelopeCreator.createServiceResponseEnvelope(rmMessageContext);
- rmMessageContext.getMsgContext().setRequestMessage(new
Message(responseEnvelope));
+ //org.apache.axis.MessageContext resMsgCtx=new
org.apache.axis.MessageContext(rmMessageContext.getMsgContext().getAxisEngine());
+ rmMessageContext.getMsgContext().setRequestMessage(new
Message(responseEnvelope));
+ rmMessageContext.getMsgContext().setResponseMessage(new
Message(responseEnvelope));
+ //resMsgCtx.setRequestMessage(new Message(responseEnvelope));
try {
Service service = new Service();
Call call = (Call) service.createCall();
@@ -203,8 +210,9 @@
call.setTargetEndpointAddress(rmMessageContext.getAddressingHeaders().getReplyTo()
.getAddress().toString());
//NOTE: WE USE THE REQUEST MESSAGE TO SEND THE RESPONSE.
-
call.setRequestMessage(rmMessageContext.getMsgContext().getRequestMessage());
- try {
+ String
soapMsg=rmMessageContext.getMsgContext().getRequestMessage().getSOAPPartAsString();
+ call.setRequestMessage(new Message(soapMsg));
+
rmMessageContext.setLastPrecessedTime(System.currentTimeMillis());
rmMessageContext
.setReTransmissionCount(rmMessageContext.getReTransmissionCount() + 1);
@@ -212,14 +220,17 @@
// same HTTP connection.
call.invoke();
//System.out.println(call.getResponseMessage().getSOAPPartAsString());
- } catch (AxisFault e) {
- e.printStackTrace();
- }
+
} catch (ServiceException e1) {
System.err.println("ERROR: SENDING RESPONSE MESSAGE ....");
e1.printStackTrace();
}
+ catch(AxisFault af){
+ af.printStackTrace();
+ }
+
+
}
private void sendCreateSequenceRequest(RMMessageContext
rmMessageContext) {
@@ -274,6 +285,7 @@
Call call = prepareCall(rmMessageContext);
call.setRequestMessage(rmMessageContext.getMsgContext().getResponseMessage());
call.invoke();
+
} catch (ServiceException e) {
e.printStackTrace();
} catch (AxisFault e) {
@@ -294,6 +306,10 @@
Call call = prepareCall(rmMessageContext);
call.setRequestMessage(rmMessageContext.getMsgContext().getResponseMessage());
call.invoke();
+ if (call.getResponseMessage() != null) {
+ System.out.println("RESPONSE MESSAGE IS NOT NULL");
+
System.out.println(call.getResponseMessage().getSOAPEnvelope().toString());
+ }
} catch (ServiceException e1) {
System.err.println("ERROR: SERVICE EXCEPTION WHEN SENDING
RESPONSE");
e1.printStackTrace();
@@ -307,10 +323,23 @@
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(rmMessageContext.getOutGoingAddress());
+
+ //We need these two handlers in our
+ SimpleChain sc= new SimpleChain();
+ Handler serverRequestHandler= new RMServerRequestHandler();
+ Handler addressingHandler = new AddressingHandler();
+
+ sc.addHandler(addressingHandler);
+ sc.addHandler(serverRequestHandler);
+
+ call.setClientHandlers(null,sc);
+
//call.setRequestMessage(rmMessageContext.getMsgContext().getRequestMessage());
- if (rmMessageContext.getMsgContext().getRequestMessage() != null)
- call.setRequestMessage(new
Message(rmMessageContext.getMsgContext().getRequestMessage()
- .getSOAPPartAsString()));
+
+ if (rmMessageContext.getMsgContext().getRequestMessage() != null){
+ String
soapMsg=rmMessageContext.getMsgContext().getRequestMessage().getSOAPPartAsString();
+ call.setRequestMessage(new Message(soapMsg));
+ }
return call;
}
1.15 +4 -2
ws-fx/sandesha/src/org/apache/sandesha/server/ServerStorageManager.java
Index: ServerStorageManager.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/ServerStorageManager.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- ServerStorageManager.java 11 Jan 2005 13:51:57 -0000 1.14
+++ ServerStorageManager.java 2 Feb 2005 13:41:55 -0000 1.15
@@ -174,9 +174,11 @@
return results;
}
- public boolean isMessageExist(String sequenceID, long messageNumber) {
- return accessor.isIncomingMessageExists(sequenceID, new Long(
+ public boolean isMessageExist(String sequenceID, long messageNumber) {
+ synchronized(accessor){
+ return accessor.isIncomingMessageExists(sequenceID, new Long(
messageNumber));
+ }
}
/*
1.14 +0 -2
ws-fx/sandesha/src/org/apache/sandesha/server/queue/ResponseSequenceHash.java
Index: ResponseSequenceHash.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/queue/ResponseSequenceHash.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- ResponseSequenceHash.java 11 Jan 2005 13:52:01 -0000 1.13
+++ ResponseSequenceHash.java 2 Feb 2005 13:41:55 -0000 1.14
@@ -23,8 +23,6 @@
import java.util.Set;
import java.util.Vector;
-import java_cup.version;
-
import org.apache.sandesha.Constants;
import org.apache.sandesha.RMMessageContext;
1.14 +2 -0
ws-fx/sandesha/src/org/apache/sandesha/server/queue/ServerQueue.java
Index: ServerQueue.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/queue/ServerQueue.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- ServerQueue.java 11 Jan 2005 13:52:01 -0000 1.13
+++ ServerQueue.java 2 Feb 2005 13:41:55 -0000 1.14
@@ -867,10 +867,12 @@
if(complete)
//lowPriorityQueue.remove(i);
terminateMsg = temp;
+ if(terminateMsg!=null){
terminateMsg.setSequenceID(hash.getOutSequenceId());
lowPriorityQueue.remove(i);
break;
}
+ }
}
1.9 +3 -3
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/RMHeaders.java
Index: RMHeaders.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/RMHeaders.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- RMHeaders.java 13 Sep 2004 11:25:01 -0000 1.8
+++ RMHeaders.java 2 Feb 2005 13:41:55 -0000 1.9
@@ -133,13 +133,13 @@
if
(headerElement.getName().equals("SequenceAcknowledgement")) {
sequenceAcknowledgement = new SequenceAcknowledgement();
-
+ headerElement.setMustUnderstand(false);
sequenceAcknowledgement.fromSOAPEnveploe(headerElement);
}
if (headerElement.getName().equals("AckRequested")) {
ackRequest = new AckRequested();
-
+ headerElement.setMustUnderstand(false);
ackRequest.fromSOAPEnveploe(headerElement);
}
}
@@ -153,7 +153,7 @@
if (bodyElement.getName().equals("CreateSequence")) {
createSequence = new CreateSequence();
-
+
createSequence.fromSOAPEnveploe(bodyElement);
}
1.8 +2 -0
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/handlers/RMHandler.java
Index: RMHandler.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/handlers/RMHandler.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- RMHandler.java 13 Sep 2004 11:25:45 -0000 1.7
+++ RMHandler.java 2 Feb 2005 13:41:55 -0000 1.8
@@ -46,6 +46,7 @@
RMHeaders rmHeaders = new RMHeaders();
+ if(msgContext.getCurrentMessage()!=null){
rmHeaders.fromSOAPEnvelope(msgContext.getCurrentMessage()
.getSOAPEnvelope());
if ((rmHeaders.getAckRequest() != null)
@@ -56,6 +57,7 @@
|| (rmHeaders.getTerminateSequence() != null)) {
msgContext.setProperty(property, rmHeaders);
}
+ }
}
1.12 +4 -5
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/handlers/RMServerRequestHandler.java
Index: RMServerRequestHandler.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/handlers/RMServerRequestHandler.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- RMServerRequestHandler.java 13 Sep 2004 11:25:45 -0000 1.11
+++ RMServerRequestHandler.java 2 Feb 2005 13:41:55 -0000 1.12
@@ -48,17 +48,16 @@
*/
public void invoke(MessageContext msgContext) throws AxisFault {
try {
-
- Iterator iterator = msgContext.getRequestMessage()
+ Iterator iterator = msgContext.getRequestMessage()
.getSOAPEnvelope().getHeader().getChildElements();
SOAPHeaderElement elements;
while (iterator.hasNext()) {
elements = (SOAPHeaderElement) iterator.next();
elements.setProcessed(true);
- }
+ }
+
+ setPropertyToMessageContext(msgContext,
Constants.ENV_RM_REQUEST_HEADERS);
- setPropertyToMessageContext(msgContext,
- Constants.ENV_RM_REQUEST_HEADERS);
} catch (SOAPException e) {
throw AxisFault.makeFault(e);
}
1.26 +6 -0
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/providers/RMProvider.java
Index: RMProvider.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/providers/RMProvider.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- RMProvider.java 12 Jan 2005 12:30:22 -0000 1.25
+++ RMProvider.java 2 Feb 2005 13:41:55 -0000 1.26
@@ -19,6 +19,7 @@
import org.apache.axis.MessageContext;
import org.apache.axis.AxisFault;
import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.message.SOAPHeaderElement;
import org.apache.axis.message.addressing.AddressingHeaders;
import org.apache.axis.providers.java.RPCProvider;
import org.apache.sandesha.IStorageManager;
@@ -29,6 +30,9 @@
import org.apache.sandesha.server.RMMessageProcessorIdentifier;
import org.apache.sandesha.ws.rm.RMHeaders;
+import java.util.Vector;
+import java.util.Iterator;
+
/**
* class RMProvider
*
@@ -60,6 +64,7 @@
/**
********************************************************************* */
System.out.println("RMProvider GOT SOAP REQUEST.....\n");
+
// System.out.println(reqEnv.toString());
//Initiates the StorageManager
IStorageManager storageManager = RMInitiator.init(client);
@@ -74,6 +79,7 @@
RMHeaders rmHeaders = new RMHeaders();
rmHeaders.fromSOAPEnvelope(reqEnv);
+
//Set the RMMessageContext
RMMessageContext rmMessageContext = new RMMessageContext();