pero 2004/12/01 01:41:11
Modified: modules/cluster/src/share/org/apache/catalina/cluster/deploy
FarmWarDeployer.java FileMessageFactory.java
WarWatcher.java
modules/cluster/src/share/org/apache/catalina/cluster/tcp
ReplicationTransmitter.java SimpleTcpCluster.java
Log:
Fix some log.
Change some names
Revision Changes Path
1.6 +8 -8
jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/deploy/FarmWarDeployer.java
Index: FarmWarDeployer.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/deploy/FarmWarDeployer.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- FarmWarDeployer.java 27 Nov 2004 21:16:14 -0000 1.5
+++ FarmWarDeployer.java 1 Dec 2004 09:41:11 -0000 1.6
@@ -82,11 +82,11 @@
private int count = 0;
/**
- * Frequency of the Form deploydir check. Cluster wide deployment will be
+ * Frequency of the Farm watchDir check. Cluster wide deployment will be
* done once for the specified amount of backgrondProcess calls (ie, the
* lower the amount, the most often the checks will occur).
*/
- protected int processExpiresFrequency = 2;
+ protected int processDeployFrequency = 2;
/**
* Path where context descriptors should be deployed.
@@ -562,7 +562,7 @@
*/
public void backgroundProcess() {
if (started) {
- count = (count + 1) % processExpiresFrequency;
+ count = (count + 1) % processDeployFrequency;
if (count == 0 && watchEnabled) {
watcher.check();
}
@@ -666,24 +666,24 @@
/**
* Return the frequency of watcher checks.
*/
- public int getProcessExpiresFrequency() {
+ public int getProcessDeployFrequency() {
- return (this.processExpiresFrequency);
+ return (this.processDeployFrequency);
}
/**
* Set the watcher checks frequency.
*
- * @param processExpiresFrequency
+ * @param processDeployFrequency
* the new manager checks frequency
*/
- public void setProcessExpiresFrequency(int processExpiresFrequency) {
+ public void setProcessDeployFrequency(int processExpiresFrequency) {
if (processExpiresFrequency <= 0) {
return;
}
- this.processExpiresFrequency = processExpiresFrequency;
+ this.processDeployFrequency = processExpiresFrequency;
}
/**
1.3 +180 -124
jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/deploy/FileMessageFactory.java
Index: FileMessageFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/deploy/FileMessageFactory.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- FileMessageFactory.java 27 Nov 2004 21:10:20 -0000 1.2
+++ FileMessageFactory.java 1 Dec 2004 09:41:11 -0000 1.3
@@ -15,19 +15,24 @@
*/
package org.apache.catalina.cluster.deploy;
+
import java.io.File;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
+
/**
- * This factory is used to read files and write files by splitting them up
into smaller
- * messages. So that entire files don't have to be read into memory.<BR>
+ * This factory is used to read files and write files by splitting them up
into
+ * smaller messages. So that entire files don't have to be read into memory.
+ * <BR>
* The factory can be used as a reader or writer but not both at the same
time.
- * When done reading or writing the factory will close the input or output
streams
- * and mark the factory as closed. It is not possible to use it after
that.<BR>
- * To force a cleanup, call cleanup() from the calling object.<BR>
- * This class is not thread safe.
+ * When done reading or writing the factory will close the input or output
+ * streams and mark the factory as closed. It is not possible to use it after
+ * that. <BR>
+ * To force a cleanup, call cleanup() from the calling object. <BR>
+ * This class is not thread safe.
+ *
* @author Filip Hanik
* @version 1.0
*/
@@ -35,122 +40,138 @@
/*--Static Variables----------------------------------------*/
public static org.apache.commons.logging.Log log =
org.apache.commons.logging.LogFactory
.getLog(FileMessageFactory.class);
-
+
/**
* The number of bytes that we read from file
*/
- public static final int READ_SIZE = 1024*10; //10kb
-
+ public static final int READ_SIZE = 1024 * 10; //10kb
+
/**
* The file that we are reading/writing
*/
protected File file = null;
-
+
/**
- * True means that we are writing with this factory.
- * False means that we are reading with this factory
+ * True means that we are writing with this factory. False means that we
are
+ * reading with this factory
*/
protected boolean openForWrite;
-
+
/**
* Once the factory is used, it can not be reused.
*/
protected boolean closed = false;
-
+
/**
- * When openForWrite=false, the input stream
- * is held by this variable
+ * When openForWrite=false, the input stream is held by this variable
*/
protected FileInputStream in;
-
+
/**
- * When openForWrite=true, the output stream
- * is held by this variable
+ * When openForWrite=true, the output stream is held by this variable
*/
protected FileOutputStream out;
-
+
/**
* The number of messages we have read or written
*/
protected int nrOfMessagesProcessed = 0;
-
+
/**
* The total size of the file
*/
protected long size = 0;
-
+
/**
* The total number of packets that we split this file into
*/
protected long totalNrOfMessages = 0;
-
+
/**
* The bytes that we hold the data in, not thread safe.
*/
protected byte[] data = new byte[READ_SIZE];
-
+
/**
- * Private constructor, either instantiates a factory to read or
write.<BR>
- * When openForWrite==true, then a the file, f, will be created and an
output
- * stream is opened to write to it.<BR>
- * When openForWrite==false, an input stream is opened, the file has to
exist.
- * @param f File - the file to be read/written
- * @param openForWrite boolean - true means we are writing to the file,
false
- * means we are reading from the file
- * @throws FileNotFoundException - if the file to be read doesn't exist
- * @throws IOException - if the system fails to open input/output
streams to the file
- * or if it fails to create the file to be written to.
+ * Private constructor, either instantiates a factory to read or write.
<BR>
+ * When openForWrite==true, then a the file, f, will be created and an
+ * output stream is opened to write to it. <BR>
+ * When openForWrite==false, an input stream is opened, the file has to
+ * exist.
+ *
+ * @param f
+ * File - the file to be read/written
+ * @param openForWrite
+ * boolean - true means we are writing to the file, false
means
+ * we are reading from the file
+ * @throws FileNotFoundException -
+ * if the file to be read doesn't exist
+ * @throws IOException -
+ * if the system fails to open input/output streams to the
file
+ * or if it fails to create the file to be written to.
*/
- private FileMessageFactory(File f, boolean openForWrite)
- throws FileNotFoundException, IOException{
+ private FileMessageFactory(File f, boolean openForWrite)
+ throws FileNotFoundException, IOException {
this.file = f;
this.openForWrite = openForWrite;
- if(log.isDebugEnabled())
- log.debug("open file " + f + " write " + openForWrite);
- if ( openForWrite ) {
- if (!file.exists()) file.createNewFile();
+ if (log.isDebugEnabled())
+ log.debug("open file " + f + " write " + openForWrite);
+ if (openForWrite) {
+ if (!file.exists())
+ file.createNewFile();
out = new FileOutputStream(f);
- } else {
+ } else {
size = file.length();
totalNrOfMessages = (size / READ_SIZE) + 1;
in = new FileInputStream(f);
}//end if
-
+
}
-
+
+ /**
+ * Creates a factory to read or write from a file. When opening for read,
+ * the readMessage can be invoked, and when opening for write the
+ * writeMessage can be invoked.
+ *
+ * @param f
+ * File - the file to be read or written
+ * @param openForWrite
+ * boolean - true, means we are writing to the file, false
means
+ * we are reading from it
+ * @throws FileNotFoundException -
+ * if the file to be read doesn't exist
+ * @throws IOException -
+ * if it fails to create the file that is to be written
+ * @return FileMessageFactory
+ */
+ public static FileMessageFactory getInstance(File f, boolean
openForWrite)
+ throws FileNotFoundException, IOException {
+ return new FileMessageFactory(f, openForWrite);
+ }
+
/**
- * Creates a factory to read or write from a file.
- * When opening for read, the readMessage can be invoked, and when
- * opening for write the writeMessage can be invoked.
- * @param f File - the file to be read or written
- * @param openForWrite boolean - true, means we are writing to the file,
false means we are
- * reading from it
- * @throws FileNotFoundException - if the file to be read doesn't exist
- * @throws IOException - if it fails to create the file that is to be
written
- * @return FileMessageFactory
- */
- public static FileMessageFactory getInstance(File f, boolean
openForWrite)
- throws FileNotFoundException, IOException {
- return new FileMessageFactory(f,openForWrite);
- }
-
- /**
- * Reads file data into the file message and sets the
- * size, totalLength, totalNrOfMsgs and the message number<BR>
- * If EOF is reached, the factory returns null, and closes itself,
- * otherwise the same message is returned as was passed in.
- * This makes sure that not more memory is ever used.
- * To remember, neither the file message or the factory are thread safe.
- * dont hand off the message to one thread and read the same with
another.
- * @param f FileMessage - the message to be populated with file data
- * @throws IllegalArgumentException - if the factory is for writing or
is closed
- * @throws IOException - if a file read exception occurs
- * @return FileMessage - returns the same message passed in as a
parameter, or null if EOF
+ * Reads file data into the file message and sets the size, totalLength,
+ * totalNrOfMsgs and the message number <BR>
+ * If EOF is reached, the factory returns null, and closes itself,
otherwise
+ * the same message is returned as was passed in. This makes sure that
not
+ * more memory is ever used. To remember, neither the file message or the
+ * factory are thread safe. dont hand off the message to one thread and
read
+ * the same with another.
+ *
+ * @param f
+ * FileMessage - the message to be populated with file data
+ * @throws IllegalArgumentException -
+ * if the factory is for writing or is closed
+ * @throws IOException -
+ * if a file read exception occurs
+ * @return FileMessage - returns the same message passed in as a
parameter,
+ * or null if EOF
*/
- public FileMessage readMessage(FileMessage f) throws
IllegalArgumentException, IOException {
+ public FileMessage readMessage(FileMessage f)
+ throws IllegalArgumentException, IOException {
checkState(false);
int length = in.read(data);
- if ( length == -1 ) {
+ if (length == -1) {
cleanup();
return null;
} else {
@@ -161,36 +182,64 @@
return f;
}//end if
}
-
+
/**
- * Writes a message to file. If (msg.getMessageNumber() ==
msg.getTotalNrOfMsgs())
- * the output stream will be closed after writing.
- * @param msg FileMessage - message containing data to be written
- * @throws IllegalArgumentException - if the factory is opened for read
or closed
- * @throws IOException - if a file write error occurs
- * @return returns true if the file is complete and outputstream is
closed, false otherwise.
- */
- public boolean writeMessage(FileMessage msg) throws
IllegalArgumentException, IOException {
- if ( !openForWrite ) throw new IllegalArgumentException("Can't write
message, this factory is reading.");
- if(log.isTraceEnabled())
- log.trace("Message " + msg + " data " + msg.getData() + " data
length " + msg.getDataLength() + " out " + out );
- out.write(msg.getData(),0,msg.getDataLength());
- nrOfMessagesProcessed++;
- out.flush();
- if ( msg.getMessageNumber() == msg.getTotalNrOfMsgs() ) {
- out.close();
- cleanup();
- return true;
- }//end if
+ * Writes a message to file. If (msg.getMessageNumber() ==
+ * msg.getTotalNrOfMsgs()) the output stream will be closed after
writing.
+ *
+ * @param msg
+ * FileMessage - message containing data to be written
+ * @throws IllegalArgumentException -
+ * if the factory is opened for read or closed
+ * @throws IOException -
+ * if a file write error occurs
+ * @return returns true if the file is complete and outputstream is
closed,
+ * false otherwise.
+ */
+ public boolean writeMessage(FileMessage msg)
+ throws IllegalArgumentException, IOException {
+ if (!openForWrite)
+ throw new IllegalArgumentException(
+ "Can't write message, this factory is reading.");
+ if (log.isDebugEnabled())
+ log.debug("Message " + msg + " data " + msg.getData()
+ + " data length " + msg.getDataLength() + " out " + out);
+ if (out != null) {
+ out.write(msg.getData(), 0, msg.getDataLength());
+ nrOfMessagesProcessed++;
+ out.flush();
+ if (msg.getMessageNumber() == msg.getTotalNrOfMsgs()) {
+ out.close();
+ cleanup();
+ return true;
+ }//end if
+ } else {
+ if (log.isWarnEnabled())
+ log.warn("Receive Message again -- Sender ActTimeout to
short [ path: "
+ + msg.getContextPath()
+ + " war: "
+ + msg.getFileName()
+ + " data: "
+ + msg.getData()
+ + " data length: " + msg.getDataLength() + "
]");
+ }
return false;
}//writeMessage
-
+
/**
* Closes the factory, its streams and sets all its references to null
*/
public void cleanup() {
- if ( in != null ) try { in.close(); } catch ( Exception ignore ){}
- if ( out != null ) try { out.close(); } catch ( Exception ignore ){}
+ if (in != null)
+ try {
+ in.close();
+ } catch (Exception ignore) {
+ }
+ if (out != null)
+ try {
+ out.close();
+ } catch (Exception ignore) {
+ }
in = null;
out = null;
size = 0;
@@ -199,57 +248,64 @@
nrOfMessagesProcessed = 0;
totalNrOfMessages = 0;
}
-
+
/**
- * Check to make sure the factory is able to perform the
- * function it is asked to do. Invoked by readMessage/writeMessage before
- * those methods proceed.
- * @param openForWrite boolean
+ * Check to make sure the factory is able to perform the function it is
+ * asked to do. Invoked by readMessage/writeMessage before those methods
+ * proceed.
+ *
+ * @param openForWrite
+ * boolean
* @throws IllegalArgumentException
*/
- protected void checkState(boolean openForWrite) throws
IllegalArgumentException {
- if ( this.openForWrite != openForWrite ) {
+ protected void checkState(boolean openForWrite)
+ throws IllegalArgumentException {
+ if (this.openForWrite != openForWrite) {
cleanup();
- if ( openForWrite )
- throw new IllegalArgumentException("Can't write message,
this factory is reading.");
- else
- throw new IllegalArgumentException("Can't read message, this
factory is writing.");
+ if (openForWrite)
+ throw new IllegalArgumentException(
+ "Can't write message, this factory is reading.");
+ else
+ throw new IllegalArgumentException(
+ "Can't read message, this factory is writing.");
}
- if ( this.closed ) {
+ if (this.closed) {
cleanup();
throw new IllegalArgumentException("Factory has been closed.");
}
}
-
+
/**
* Example usage.
- * @param args String[], args[0] - read from filename, args[1] write to
filename
+ *
+ * @param args
+ * String[], args[0] - read from filename, args[1] write to
+ * filename
* @throws Exception
*/
public static void main(String[] args) throws Exception {
-
-
- System.out.println("Usage: FileMessageFactory fileToBeRead
fileToBeWritten");
- System.out.println("Usage: This will make a copy of the file on the
local file system");
- FileMessageFactory read = getInstance(new File(args[0]),false);
- FileMessageFactory write = getInstance(new File(args[1]),true);
- FileMessage msg = new FileMessage(null,args[0],args[0]);
+
+ System.out
+ .println("Usage: FileMessageFactory fileToBeRead
fileToBeWritten");
+ System.out
+ .println("Usage: This will make a copy of the file on the
local file system");
+ FileMessageFactory read = getInstance(new File(args[0]), false);
+ FileMessageFactory write = getInstance(new File(args[1]), true);
+ FileMessage msg = new FileMessage(null, args[0], args[0]);
msg = read.readMessage(msg);
- System.out.println("Expecting to write " + msg.getTotalNrOfMsgs()+"
messages.");
+ System.out.println("Expecting to write " + msg.getTotalNrOfMsgs()
+ + " messages.");
int cnt = 0;
- while ( msg != null ) {
+ while (msg != null) {
write.writeMessage(msg);
cnt++;
msg = read.readMessage(msg);
}//while
- System.out.println("Actually wrote " + cnt+" messages.");
+ System.out.println("Actually wrote " + cnt + " messages.");
}///main
-
+
public File getFile() {
return file;
}
-
-
-
-}
+}
\ No newline at end of file
1.4 +12 -12
jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/deploy/WarWatcher.java
Index: WarWatcher.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/deploy/WarWatcher.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- WarWatcher.java 27 Nov 2004 21:10:20 -0000 1.3
+++ WarWatcher.java 1 Dec 2004 09:41:11 -0000 1.4
@@ -43,7 +43,7 @@
/**
* Directory to watch for war files
*/
- protected File deployDir = null;
+ protected File watchDir = null;
/**
* Parent to be notified of changes
@@ -60,9 +60,9 @@
public WarWatcher() {
}
- public WarWatcher(FileChangeListener listener, File deployDir) {
+ public WarWatcher(FileChangeListener listener, File watchDir) {
this.listener = listener;
- this.deployDir = deployDir;
+ this.watchDir = watchDir;
}
/*--Logic---------------------------------------------------*/
@@ -72,8 +72,8 @@
*/
public void check() {
if (log.isInfoEnabled())
- log.info("check cluster wars at " + deployDir);
- File[] list = deployDir.listFiles(new WarFilter());
+ log.info("check cluster wars at " + watchDir);
+ File[] list = watchDir.listFiles(new WarFilter());
if (list == null)
list = new File[0];
//first make sure all the files are listed in our current status
@@ -118,18 +118,18 @@
}
/**
- * @return Returns the deployDir.
+ * @return Returns the watchDir.
*/
- public File getDeployDir() {
- return deployDir;
+ public File getWatchDir() {
+ return watchDir;
}
/**
- * @param deployDir
- * The deployDir to set.
+ * @param watchDir
+ * The watchDir to set.
*/
- public void setDeployDir(File deployDir) {
- this.deployDir = deployDir;
+ public void setWatchDir(File watchDir) {
+ this.watchDir = watchDir;
}
/**
1.19 +11 -8
jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ReplicationTransmitter.java
Index: ReplicationTransmitter.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ReplicationTransmitter.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- ReplicationTransmitter.java 11 Nov 2004 14:47:27 -0000 1.18
+++ ReplicationTransmitter.java 1 Dec 2004 09:41:11 -0000 1.19
@@ -62,21 +62,24 @@
public synchronized void add(Member member)
{
try {
- IDataSender sender = IDataSenderFactory.getIDataSender(
- replicationMode, member);
- String key = sender.getAddress().getHostAddress() + ":" +
- sender.getPort();
- if (!map.containsKey(key))
- map.put(sender.getAddress().getHostAddress() + ":" +
- sender.getPort(), sender);
+ String key = getKey(member);
+ if (!map.containsKey(key)) {
+ IDataSender sender = IDataSenderFactory.getIDataSender(
+ replicationMode, member);
+ map.put(key, sender);
+ }
}catch ( java.io.IOException x ) {
log.error("Unable to create and add a IDataSender object.",x);
}
}//add
+ private String getKey(Member member) {
+ return member.getHost() + ":" + member.getPort();
+ }
+
public synchronized void remove(Member member)
{
- String key = member.getHost() + ":" + member.getPort();
+ String key = getKey(member);
IDataSender toberemoved = (IDataSender) map.get(key);
if (toberemoved == null)return;
toberemoved.disconnect();
1.56 +3 -5
jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/tcp/SimpleTcpCluster.java
Index: SimpleTcpCluster.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/tcp/SimpleTcpCluster.java,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -r1.55 -r1.56
--- SimpleTcpCluster.java 27 Nov 2004 21:10:20 -0000 1.55
+++ SimpleTcpCluster.java 1 Dec 2004 09:41:11 -0000 1.56
@@ -389,9 +389,6 @@
try {
if ( clusterDeployer != null ) {
clusterDeployer.setCluster(this);
- // Object deployer =
IntrospectionUtils.getProperty(getContainer(), "deployer");
- // FIXME: clusterDeployer.setDeployer(
(org.apache.catalina.Deployer) deployer);
- // clusterDeployer.setDeployer( deployer);
clusterDeployer.start();
}
} catch (Throwable x) {
@@ -494,7 +491,8 @@
public void memberDisappeared(Member member)
{
- log.info("Received member disappeared:"+member);
+ if(log.isInfoEnabled())
+ log.info("Received member disappeared:"+member);
try
{
clusterSender.remove(member);
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]