User: norbert
Date: 00/07/07 14:37:32
Modified: src/java/org/spydermq SpyConnection.java SpyMessage.java
SpyTopicPublisher.java SpyTopicSession.java
Log:
First shot for persistence :
Use an fs based persistence system
Revision Changes Path
1.11 +9 -1 spyderMQ/src/java/org/spydermq/SpyConnection.java
Index: SpyConnection.java
===================================================================
RCS file: /products/cvs/ejboss/spyderMQ/src/java/org/spydermq/SpyConnection.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- SpyConnection.java 2000/06/20 02:19:10 1.10
+++ SpyConnection.java 2000/07/07 21:37:31 1.11
@@ -20,6 +20,8 @@
import java.util.Iterator;
import java.io.Serializable;
import java.io.FileInputStream;
+import java.io.File;
+import java.io.IOException;
import org.spydermq.distributed.interfaces.DistributedJMSServer;
import org.spydermq.distributed.interfaces.ConnectionReceiver;
import org.spydermq.distributed.ConnectionReceiverFactory;
@@ -29,7 +31,7 @@
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
- * @version $Revision: 1.10 $
+ * @version $Revision: 1.11 $
*/
public class SpyConnection
implements Connection, Serializable
@@ -266,6 +268,12 @@
}
}*/
+
+ //Handle persistence
+ for(int i=0;i<mes.length;i++) {
+ if ((new
File(mes[i].getJMSMessageID())).delete()==false)
+ Log.log("Error: cannot delete file
"+mes[i].getJMSMessageID());
+ }
provider.newMessage(mes,clientID);
1.4 +3 -1 spyderMQ/src/java/org/spydermq/SpyMessage.java
Index: SpyMessage.java
===================================================================
RCS file: /products/cvs/ejboss/spyderMQ/src/java/org/spydermq/SpyMessage.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- SpyMessage.java 2000/06/20 02:19:10 1.3
+++ SpyMessage.java 2000/07/07 21:37:31 1.4
@@ -21,7 +21,7 @@
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
public class SpyMessage
implements Serializable, Cloneable, Message
@@ -35,6 +35,8 @@
// Attributes ----------------------------------------------------
+ public boolean persistent=false;
+
//Those attributes are not transient ---------------
//Header fields
1.3 +6 -2 spyderMQ/src/java/org/spydermq/SpyTopicPublisher.java
Index: SpyTopicPublisher.java
===================================================================
RCS file:
/products/cvs/ejboss/spyderMQ/src/java/org/spydermq/SpyTopicPublisher.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- SpyTopicPublisher.java 2000/06/09 20:03:58 1.2
+++ SpyTopicPublisher.java 2000/07/07 21:37:31 1.3
@@ -11,13 +11,14 @@
import javax.jms.Message;
import javax.jms.Topic;
import javax.jms.InvalidDestinationException;
+import javax.jms.DeliveryMode;
/**
* This class implements javax.jms.TopicPublisher
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
public class SpyTopicPublisher
extends SpyMessageProducer
@@ -88,7 +89,10 @@
message.setReadOnlyMode();
//This message is not redelivered
- message.setJMSRedelivered(false);
+ message.setJMSRedelivered(false);
+
+ //Handle the persistence
+ message.persistent=(deliveryMode==DeliveryMode.PERSISTENT);
//We must put a 'new message' in the Session's outgoing queue [3.9]
mySession.sendMessage(message.myClone());
1.4 +18 -2 spyderMQ/src/java/org/spydermq/SpyTopicSession.java
Index: SpyTopicSession.java
===================================================================
RCS file: /products/cvs/ejboss/spyderMQ/src/java/org/spydermq/SpyTopicSession.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- SpyTopicSession.java 2000/06/19 04:23:12 1.3
+++ SpyTopicSession.java 2000/07/07 21:37:31 1.4
@@ -17,14 +17,18 @@
import java.util.HashSet;
import java.util.HashMap;
import java.util.Iterator;
+import java.io.FileOutputStream;
+import java.io.ObjectOutputStream;
+import java.io.IOException;
import org.spydermq.selectors.Selector;
+import org.spydermq.Log;
/**
* This class implements javax.jms.TopicSession
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
public class SpyTopicSession
extends SpySession
@@ -161,9 +165,21 @@
}
}
-
+
//notify the thread that there is work to do
mutex.notifyLock();
+
+ //Handle persistence
+ //First shot : use a fs based persistence system
+ try {
+ if (m.persistent) {
+ ObjectOutputStream output=new ObjectOutputStream(new
FileOutputStream(m.getJMSMessageID()));
+ output.writeObject(m);
+ output.close();
+ }
+ } catch (IOException e) {
+ Log.log(e);
+ }
//DEBUG !
if (outgoingQueue.size()>9000)