User: norbert
Date: 00/05/31 11:10:18
Added: src/java/org/spydermq/distributed/server
ConnectionReceiverRMI.java
ConnectionReceiverRMIImpl.java
DistributedJMSServerRMI.java
DistributedJMSServerRMIImpl.java
DistributedQueueConnectionFactoryRMI.java
DistributedQueueConnectionFactoryRMIImpl.java
DistributedTopicConnectionFactoryRMI.java
DistributedTopicConnectionFactoryRMIImpl.java
Log:
Change the directory name
Revision Changes Path
1.1
spyderMQ/src/java/org/spydermq/distributed/server/ConnectionReceiverRMI.java
Index: ConnectionReceiverRMI.java
===================================================================
/*
* spyderMQ, the OpenSource JMS implementation
*
* Distributable under GPL license.
* See terms of license at gnu.org.
*/
package org.spydermq.distributed.server;
import javax.jms.Destination;
import javax.jms.JMSException;
import org.spydermq.SpyMessage;
import org.spydermq.SpyDestination;
import java.rmi.Remote;
import java.rmi.RemoteException;
import org.spydermq.distributed.interfaces.ConnectionReceiver;
/**
* The RMI interface of the ConnectionReceiver object
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
* @version $Revision: 1.1 $
*/
public interface ConnectionReceiverRMI extends ConnectionReceiver, Remote
{
// Public --------------------------------------------------------
//A message has arrived for the Connection
public void receive(Destination b,SpyMessage c) throws RemoteException,
JMSException;
//Messages have arrived for the Connection
public void receiveMultiple(Destination dest,SpyMessage mes[]) throws
RemoteException, JMSException;
//One TemporaryDestination has been deleted
public void deleteTemporaryDestination(SpyDestination dest) throws
RemoteException, JMSException;
}
1.1
spyderMQ/src/java/org/spydermq/distributed/server/ConnectionReceiverRMIImpl.java
Index: ConnectionReceiverRMIImpl.java
===================================================================
/*
* spyderMQ, the OpenSource JMS implementation
*
* Distributable under GPL license.
* See terms of license at gnu.org.
*/
package org.spydermq.distributed.server;
import javax.jms.Destination;
import javax.jms.JMSException;
import org.spydermq.SpyConnection;
import org.spydermq.ConnectionQueue;
import org.spydermq.SpyMessage;
import org.spydermq.SpySession;
import org.spydermq.SessionQueue;
import org.spydermq.SpyDestination;
import org.spydermq.SpyTopicConnection;
import org.spydermq.SpyQueueSession;
import org.spydermq.Log;
import org.spydermq.NoReceiverException;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.Hashtable;
import java.util.HashSet;
import java.util.Iterator;
/**
* The RMI implementation of the ConnectionReceiver object
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
* @version $Revision: 1.1 $
*/
public class ConnectionReceiverRMIImpl extends UnicastRemoteObject implements
ConnectionReceiverRMI
{
// Attributes ----------------------------------------------------
//A link on my connection
private SpyConnection connection;
//Is my connection closed ?
private boolean closed;
// Constructor ---------------------------------------------------
public ConnectionReceiverRMIImpl() throws RemoteException
{
super();
closed=false;
}
// Public --------------------------------------------------------
public void setConnection(SpyConnection connection)
{
this.connection=connection;
}
//A message has arrived for this Connection, We have to dispatch it to the
sessions
public void receive(Destination dest,SpyMessage mes) throws JMSException
{
if (closed) throw new IllegalStateException("The connection is
closed");
Log.log("ConnectionReceiver:
Receive(Destination="+dest.toString()+",Mes="+mes.toString()+")");
if (connection instanceof SpyTopicConnection) {
//Get the set of subscribers for this Topic
ConnectionQueue
connectionQueue=(ConnectionQueue)connection.destinations.get(dest);
if (connectionQueue==null) return;
Iterator i=connectionQueue.subscribers.iterator();
while (i.hasNext()) {
SpySession session=(SpySession)i.next();
//add the new message to the session's queue
session.dispatchMessage(dest,mes);
//There is work to do...
synchronized (session.thread) {
//We should not have to wait for the lock...
session.thread.notify();
}
}
} else {
//Find one session waiting for this Queue
if (connection.modeStop) throw new NoReceiverException("This
connection is stopped !");
ConnectionQueue
connectionQueue=(ConnectionQueue)connection.destinations.get(dest);
if (connectionQueue==null) throw new
NoReceiverException("There is no connectionQueue for this destination !");
if (connectionQueue.NumListeningSessions==0) throw new
NoReceiverException("There are no listening sessions for this destination !");
Iterator i=connectionQueue.subscribers.iterator();
SessionQueue sq=null;
while (i.hasNext()) {
SpySession session=(SpySession)i.next();
sq=(SessionQueue)session.destinations.get(dest);
if (sq.NumListeningSubscribers!=0) break;
}
if (sq==null||sq.NumListeningSubscribers==0) {
connectionQueue.NumListeningSessions=0;
Log.error("WARNING: The listeners count was invalid
!");
throw new NoReceiverException("There are no listening
sessions for this destination !");
}
//try/catch NoReceiverException
sq.dispatchMessage(dest,mes);
}
}
public void receiveMultiple(Destination dest,SpyMessage mes[]) throws
JMSException
{
for(int i=0;i<mes.length;i++) {
receive(dest,mes[i]);
}
}
public void close() throws Exception
{
closed=true;
}
//One TemporaryDestination has been deleted
public void deleteTemporaryDestination(SpyDestination dest) throws JMSException
{
if (closed) throw new IllegalStateException("The connection is
closed");
connection.deleteTemporaryDestination(dest);
}
}
1.1
spyderMQ/src/java/org/spydermq/distributed/server/DistributedJMSServerRMI.java
Index: DistributedJMSServerRMI.java
===================================================================
/*
* spyderMQ, the OpenSource JMS implementation
*
* Distributable under GPL license.
* See terms of license at gnu.org.
*/
package org.spydermq.distributed.server;
import javax.jms.JMSException;
import javax.jms.Destination;
import javax.jms.Topic;
import javax.jms.Queue;
import javax.jms.TemporaryTopic;
import javax.jms.TemporaryQueue;
import org.spydermq.SpyMessage;
import org.spydermq.SpyDestination;
import org.spydermq.SpyDistributedConnection;
import org.spydermq.distributed.interfaces.DistributedJMSServer;
import java.rmi.Remote;
import java.rmi.RemoteException;
/**
* The RMI interface of the DistributedJMSServer object
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
* @version $Revision: 1.1 $
*/
public interface DistributedJMSServerRMI extends DistributedJMSServer, Remote
{
// Public --------------------------------------------------------
public String getID() throws JMSException, RemoteException;
public void newMessage(SpyMessage val[],String id) throws JMSException,
RemoteException;
public void subscribe(Destination dest,SpyDistributedConnection who) throws
JMSException, RemoteException;
public void unsubscribe(Destination dest,SpyDistributedConnection who) throws
JMSException, RemoteException;
public Topic createTopic(String dest) throws JMSException, RemoteException;
public Queue createQueue(String dest) throws JMSException, RemoteException;
public TemporaryTopic getTemporaryTopic(SpyDistributedConnection dc) throws
JMSException, RemoteException;
public TemporaryQueue getTemporaryQueue(SpyDistributedConnection dc) throws
JMSException, RemoteException;
public void connectionClosing(SpyDistributedConnection dc) throws
JMSException, RemoteException;
public void deleteTemporaryDestination(SpyDestination dest) throws
JMSException, RemoteException;
public void checkID(String ID) throws JMSException, RemoteException;
public SpyMessage queueReceiveNoWait(Queue queue) throws Exception,
RemoteException;
public void connectionListening(boolean mode,Destination
dest,SpyDistributedConnection dc) throws Exception, RemoteException;
}
1.1
spyderMQ/src/java/org/spydermq/distributed/server/DistributedJMSServerRMIImpl.java
Index: DistributedJMSServerRMIImpl.java
===================================================================
/*
* spyderMQ, the OpenSource JMS implementation
*
* Distributable under GPL license.
* See terms of license at gnu.org.
*/
package org.spydermq.distributed.server;
import javax.jms.JMSException;
import javax.jms.Destination;
import javax.jms.Topic;
import javax.jms.Queue;
import javax.jms.TemporaryTopic;
import javax.jms.TemporaryQueue;
import org.spydermq.SpyMessage;
import org.spydermq.SpyDestination;
import org.spydermq.JMSServer;
import org.spydermq.SpyDistributedConnection;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.RemoteException;
/**
* The RMI implementation of the DistributedJMSServer object
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
* @version $Revision: 1.1 $
*/
public class DistributedJMSServerRMIImpl extends UnicastRemoteObject implements
DistributedJMSServerRMI
{
// Attributes ----------------------------------------------------
//The server implementation
private JMSServer server;
// Constructor ---------------------------------------------------
public DistributedJMSServerRMIImpl() throws RemoteException
{
super();
}
// Public --------------------------------------------------------
public void setServer(JMSServer s)
{
server=s;
}
public String getID() throws JMSException
{
return server.getID();
}
public void newMessage(SpyMessage val[],String id) throws JMSException
{
server.newMessage(val,id);
}
public void subscribe(Destination dest,SpyDistributedConnection who) throws
JMSException
{
server.subscribe(dest,who);
}
public void unsubscribe(Destination dest,SpyDistributedConnection who) throws
JMSException
{
server.unsubscribe(dest,who);
}
public Topic createTopic(String dest) throws JMSException
{
return server.createTopic(dest);
}
public Queue createQueue(String dest) throws JMSException
{
return server.createQueue(dest);
}
public TemporaryTopic getTemporaryTopic(SpyDistributedConnection dc) throws
JMSException
{
return server.getTemporaryTopic(dc);
}
public TemporaryQueue getTemporaryQueue(SpyDistributedConnection dc) throws
JMSException
{
return server.getTemporaryQueue(dc);
}
public void connectionClosing(SpyDistributedConnection dc) throws JMSException
{
server.connectionClosing(dc,null);
}
public void deleteTemporaryDestination(SpyDestination dest) throws JMSException
{
server.deleteTemporaryDestination(dest);
}
public void checkID(String ID) throws JMSException
{
server.checkID(ID);
}
public SpyMessage queueReceiveNoWait(Queue queue) throws JMSException
{
return server.queueReceiveNoWait(queue);
}
public void connectionListening(boolean mode,Destination
dest,SpyDistributedConnection dc) throws JMSException
{
server.connectionListening(mode,dest,dc);
}
}
1.1
spyderMQ/src/java/org/spydermq/distributed/server/DistributedQueueConnectionFactoryRMI.java
Index: DistributedQueueConnectionFactoryRMI.java
===================================================================
/*
* spyderMQ, the OpenSource JMS implementation
*
* Distributable under GPL license.
* See terms of license at gnu.org.
*/
package org.spydermq.distributed.server;
import org.spydermq.distributed.interfaces.DistributedQueueConnectionFactory;
import javax.jms.QueueConnection;
import java.rmi.Remote;
import java.rmi.RemoteException;
/**
* The RMI interface of the DistributedQueueConnectionFactory object
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
* @version $Revision: 1.1 $
*/
public interface DistributedQueueConnectionFactoryRMI extends
DistributedQueueConnectionFactory, Remote
{
// Public --------------------------------------------------------
public QueueConnection createQueueConnection() throws Exception;
public QueueConnection createQueueConnection(String userName, String password)
throws Exception;
}
1.1
spyderMQ/src/java/org/spydermq/distributed/server/DistributedQueueConnectionFactoryRMIImpl.java
Index: DistributedQueueConnectionFactoryRMIImpl.java
===================================================================
/*
* spyderMQ, the OpenSource JMS implementation
*
* Distributable under GPL license.
* See terms of license at gnu.org.
*/
package org.spydermq.distributed.server;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.JMSException;
import org.spydermq.distributed.interfaces.DistributedJMSServer;
import org.spydermq.SpyQueueConnection;
import org.spydermq.security.SecurityManager;
import java.util.Hashtable;
/**
* The RMI implementation of the DistributedQueueConnectionFactory object
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
* @version $Revision: 1.1 $
*/
public class DistributedQueueConnectionFactoryRMIImpl extends UnicastRemoteObject
implements DistributedQueueConnectionFactoryRMI
{
// Attributes ----------------------------------------------------
protected DistributedJMSServer server;
private String crCN;
private SecurityManager securityManager;
// Constructor ---------------------------------------------------
public DistributedQueueConnectionFactoryRMIImpl() throws RemoteException
{
super();
}
// Public --------------------------------------------------------
public void setServer(DistributedJMSServer theServer)
{
server=theServer;
}
public void setCRClassName(String className)
{
crCN=className;
}
public void setSecurityManager(SecurityManager securityManager)
{
this.securityManager=securityManager;
}
public QueueConnection createQueueConnection() throws JMSException
{
SpyQueueConnection obj=new SpyQueueConnection(server,null,crCN);
return obj;
}
public QueueConnection createQueueConnection(String userName, String password)
throws JMSException
{
String id=securityManager.checkUser(userName,password);
return new SpyQueueConnection(server,id,crCN);
}
}
1.1
spyderMQ/src/java/org/spydermq/distributed/server/DistributedTopicConnectionFactoryRMI.java
Index: DistributedTopicConnectionFactoryRMI.java
===================================================================
/*
* spyderMQ, the OpenSource JMS implementation
*
* Distributable under GPL license.
* See terms of license at gnu.org.
*/
package org.spydermq.distributed.server;
import org.spydermq.distributed.interfaces.DistributedTopicConnectionFactory;
import javax.jms.TopicConnection;
import java.rmi.Remote;
import java.rmi.RemoteException;
/**
* The RMI interface of the DistributedTopicConnectionFactory object
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
* @version $Revision: 1.1 $
*/
public interface DistributedTopicConnectionFactoryRMI extends
DistributedTopicConnectionFactory, Remote
{
// Public --------------------------------------------------------
public TopicConnection createTopicConnection() throws Exception;
public TopicConnection createTopicConnection(String userName, String password)
throws Exception;
}
1.1
spyderMQ/src/java/org/spydermq/distributed/server/DistributedTopicConnectionFactoryRMIImpl.java
Index: DistributedTopicConnectionFactoryRMIImpl.java
===================================================================
/*
* spyderMQ, the OpenSource JMS implementation
*
* Distributable under GPL license.
* See terms of license at gnu.org.
*/
package org.spydermq.distributed.server;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import org.spydermq.SpyTopicConnection;
import org.spydermq.security.SecurityManager;
import org.spydermq.distributed.interfaces.DistributedJMSServer;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.JMSException;
import java.util.Hashtable;
/**
* The RMI implementation of the DistributedTopicConnectionFactory object
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
* @version $Revision: 1.1 $
*/
public class DistributedTopicConnectionFactoryRMIImpl extends UnicastRemoteObject
implements DistributedTopicConnectionFactoryRMI
{
// Attributes ----------------------------------------------------
protected DistributedJMSServer server;
private String crCN;
private SecurityManager securityManager;
// Constructor ---------------------------------------------------
public DistributedTopicConnectionFactoryRMIImpl() throws RemoteException
{
super();
}
// Public --------------------------------------------------------
public void setServer(DistributedJMSServer theServer)
{
server=theServer;
}
public void setCRClassName(String className)
{
crCN=className;
}
public void setSecurityManager(SecurityManager securityManager)
{
this.securityManager=securityManager;
}
public TopicConnection createTopicConnection() throws JMSException
{
SpyTopicConnection obj=new SpyTopicConnection(server,null,crCN);
return obj;
}
public TopicConnection createTopicConnection(String userName, String password)
throws JMSException
{
String id=securityManager.checkUser(userName,password);
SpyTopicConnection obj=new SpyTopicConnection(server,id,crCN);
return obj;
}
}