This is an automated email from the ASF dual-hosted git repository. remm pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/master by this push: new c1bbb10 Remove java.io based sender and receiver c1bbb10 is described below commit c1bbb10e73a110bafbf311017540dcdb4f53ec58 Author: remm <r...@apache.org> AuthorDate: Wed Apr 29 17:03:41 2020 +0200 Remove java.io based sender and receiver It's unlikely they are still used as they were not the default configuration. --- .../catalina/tribes/transport/bio/BioReceiver.java | 154 ----------- .../tribes/transport/bio/BioReplicationTask.java | 189 -------------- .../catalina/tribes/transport/bio/BioSender.java | 281 --------------------- .../tribes/transport/bio/LocalStrings.properties | 40 --- .../transport/bio/LocalStrings_cs.properties | 22 -- .../transport/bio/LocalStrings_de.properties | 18 -- .../transport/bio/LocalStrings_es.properties | 27 -- .../transport/bio/LocalStrings_fr.properties | 40 --- .../transport/bio/LocalStrings_ja.properties | 40 --- .../transport/bio/LocalStrings_ko.properties | 40 --- .../transport/bio/LocalStrings_pt_BR.properties | 18 -- .../transport/bio/LocalStrings_ru.properties | 16 -- .../tribes/transport/bio/MultipointBioSender.java | 156 ------------ .../tribes/transport/bio/PooledMultiSender.java | 62 ----- webapps/docs/changelog.xml | 4 + webapps/docs/config/cluster-receiver.xml | 14 +- webapps/docs/config/cluster-sender.xml | 11 +- 17 files changed, 12 insertions(+), 1120 deletions(-) diff --git a/java/org/apache/catalina/tribes/transport/bio/BioReceiver.java b/java/org/apache/catalina/tribes/transport/bio/BioReceiver.java deleted file mode 100644 index 3214ab5..0000000 --- a/java/org/apache/catalina/tribes/transport/bio/BioReceiver.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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.catalina.tribes.transport.bio; - -import java.io.IOException; -import java.net.ServerSocket; -import java.net.Socket; - -import org.apache.catalina.tribes.io.ObjectReader; -import org.apache.catalina.tribes.transport.AbstractRxTask; -import org.apache.catalina.tribes.transport.ReceiverBase; -import org.apache.catalina.tribes.transport.RxTaskPool; -import org.apache.catalina.tribes.util.StringManager; -import org.apache.juli.logging.Log; -import org.apache.juli.logging.LogFactory; - -public class BioReceiver extends ReceiverBase implements Runnable { - - private static final Log log = LogFactory.getLog(BioReceiver.class); - - protected static final StringManager sm = StringManager.getManager(BioReceiver.class); - - protected ServerSocket serverSocket; - - public BioReceiver() { - // NO-OP - } - - @Override - public void start() throws IOException { - super.start(); - try { - setPool(new RxTaskPool(getMaxThreads(),getMinThreads(),this)); - } catch (Exception x) { - log.fatal(sm.getString("bioReceiver.threadpool.fail"), x); - if ( x instanceof IOException ) throw (IOException)x; - else throw new IOException(x.getMessage()); - } - try { - getBind(); - bind(); - String channelName = ""; - if (getChannel().getName() != null) channelName = "[" + getChannel().getName() + "]"; - Thread t = new Thread(this, "BioReceiver" + channelName); - t.setDaemon(true); - t.start(); - } catch (Exception x) { - log.fatal(sm.getString("bioReceiver.start.fail"), x); - if ( x instanceof IOException ) throw (IOException)x; - else throw new IOException(x.getMessage()); - } - } - - @Override - public AbstractRxTask createRxTask() { - return getReplicationThread(); - } - - protected BioReplicationTask getReplicationThread() { - BioReplicationTask result = new BioReplicationTask(this); - result.setOptions(getWorkerThreadOptions()); - result.setUseBufferPool(this.getUseBufferPool()); - return result; - } - - @Override - public void stop() { - setListen(false); - try { - this.serverSocket.close(); - } catch (Exception x) { - if (log.isDebugEnabled()) { - log.debug(sm.getString("bioReceiver.socket.closeFailed"), x); - } - } - super.stop(); - } - - - protected void bind() throws IOException { - // allocate an unbound server socket channel - serverSocket = new ServerSocket(); - // set the port the server channel will listen to - //serverSocket.bind(new InetSocketAddress(getBind(), getTcpListenPort())); - bind(serverSocket,getPort(),getAutoBind()); - } - - - @Override - public void run() { - try { - listen(); - } catch (Exception x) { - log.error(sm.getString("bioReceiver.run.fail"), x); - } - } - - public void listen() throws Exception { - if (doListen()) { - log.warn(sm.getString("bioReceiver.already.started")); - return; - } - setListen(true); - - while ( doListen() ) { - Socket socket = null; - if ( getTaskPool().available() < 1 ) { - if ( log.isWarnEnabled() ) - log.warn(sm.getString("bioReceiver.threads.busy")); - } - BioReplicationTask task = (BioReplicationTask)getTaskPool().getRxTask(); - if ( task == null ) continue; //should never happen - try { - socket = serverSocket.accept(); - }catch ( Exception x ) { - if ( doListen() ) throw x; - } - if ( !doListen() ) { - task.serviceSocket(null,null); - getExecutor().execute(task); - task.close(); - break; //regular shutdown - } - if ( socket == null ) continue; - socket.setReceiveBufferSize(getRxBufSize()); - socket.setSendBufferSize(getTxBufSize()); - socket.setTcpNoDelay(getTcpNoDelay()); - socket.setKeepAlive(getSoKeepAlive()); - socket.setOOBInline(getOoBInline()); - socket.setReuseAddress(getSoReuseAddress()); - socket.setSoLinger(getSoLingerOn(),getSoLingerTime()); - socket.setSoTimeout(getTimeout()); - ObjectReader reader = new ObjectReader(socket); - task.serviceSocket(socket,reader); - getExecutor().execute(task); - }//while - } - - -} \ No newline at end of file diff --git a/java/org/apache/catalina/tribes/transport/bio/BioReplicationTask.java b/java/org/apache/catalina/tribes/transport/bio/BioReplicationTask.java deleted file mode 100644 index d35ee65..0000000 --- a/java/org/apache/catalina/tribes/transport/bio/BioReplicationTask.java +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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.catalina.tribes.transport.bio; - -import java.io.InputStream; -import java.io.OutputStream; -import java.net.Socket; - -import org.apache.catalina.tribes.ChannelMessage; -import org.apache.catalina.tribes.io.BufferPool; -import org.apache.catalina.tribes.io.ChannelData; -import org.apache.catalina.tribes.io.ListenCallback; -import org.apache.catalina.tribes.io.ObjectReader; -import org.apache.catalina.tribes.transport.AbstractRxTask; -import org.apache.catalina.tribes.transport.Constants; -import org.apache.catalina.tribes.util.StringManager; -import org.apache.juli.logging.Log; -import org.apache.juli.logging.LogFactory; - -/** - * A worker thread class which can drain channels and echo-back the input. Each - * instance is constructed with a reference to the owning thread pool object. - * When started, the thread loops forever waiting to be awakened to service the - * channel associated with a SelectionKey object. The worker is tasked by - * calling its serviceChannel() method with a SelectionKey object. The - * serviceChannel() method stores the key reference in the thread object then - * calls notify() to wake it up. When the channel has been drained, the worker - * thread returns itself to its parent pool. - */ -public class BioReplicationTask extends AbstractRxTask { - - private static final Log log = LogFactory.getLog(BioReplicationTask.class); - - protected static final StringManager sm = StringManager.getManager(BioReplicationTask.class); - - protected Socket socket; - protected ObjectReader reader; - - public BioReplicationTask (ListenCallback callback) { - super(callback); - } - - // loop forever waiting for work to do - @Override - public synchronized void run() - { - if ( socket == null ) return; - try { - drainSocket(); - } catch ( Exception x ) { - log.error(sm.getString("bioReplicationTask.unable.service"), x); - }finally { - try { - socket.close(); - }catch (Exception e) { - if (log.isDebugEnabled()) { - log.debug(sm.getString("bioReplicationTask.socket.closeFailed"), e); - } - } - try { - reader.close(); - }catch (Exception e) { - if (log.isDebugEnabled()) { - log.debug(sm.getString("bioReplicationTask.reader.closeFailed"), e); - } - } - reader = null; - socket = null; - } - // done, ready for more, return to pool - if ( getTaskPool() != null ) getTaskPool().returnWorker (this); - } - - - public synchronized void serviceSocket(Socket socket, ObjectReader reader) { - this.socket = socket; - this.reader = reader; - } - - protected void execute(ObjectReader reader) throws Exception{ - int pkgcnt = reader.count(); - - if ( pkgcnt > 0 ) { - ChannelMessage[] msgs = reader.execute(); - for ( int i=0; i<msgs.length; i++ ) { - /** - * Use send ack here if you want to ack the request to the remote - * server before completing the request - * This is considered an asynchronous request - */ - if (ChannelData.sendAckAsync(msgs[i].getOptions())) sendAck(Constants.ACK_COMMAND); - try { - //process the message - getCallback().messageDataReceived(msgs[i]); - /** - * Use send ack here if you want the request to complete on this - * server before sending the ack to the remote server - * This is considered a synchronized request - */ - if (ChannelData.sendAckSync(msgs[i].getOptions())) sendAck(Constants.ACK_COMMAND); - }catch ( Exception x ) { - if (ChannelData.sendAckSync(msgs[i].getOptions())) sendAck(Constants.FAIL_ACK_COMMAND); - log.error(sm.getString("bioReplicationTask.messageDataReceived.error"),x); - } - if ( getUseBufferPool() ) { - BufferPool.getBufferPool().returnBuffer(msgs[i].getMessage()); - msgs[i].setMessage(null); - } - } - } - - - } - - /** - * The actual code which drains the channel associated with - * the given key. This method assumes the key has been - * modified prior to invocation to turn off selection - * interest in OP_READ. When this method completes it - * re-enables OP_READ and calls wakeup() on the selector - * so the selector will resume watching this channel. - * @throws Exception IO exception or execute exception - */ - protected void drainSocket() throws Exception { - InputStream in = socket.getInputStream(); - // loop while data available, channel is non-blocking - byte[] buf = new byte[1024]; - int length = in.read(buf); - while ( length >= 0 ) { - int count = reader.append(buf,0,length,true); - if ( count > 0 ) execute(reader); - length = in.read(buf); - } - } - - - /** - * Send a reply-acknowledgment (6,2,3) - * @param command The command to write - */ - protected void sendAck(byte[] command) { - try { - OutputStream out = socket.getOutputStream(); - out.write(command); - out.flush(); - if (log.isTraceEnabled()) { - log.trace("ACK sent to " + socket.getPort()); - } - } catch ( java.io.IOException x ) { - log.warn(sm.getString("bioReplicationTask.unable.sendAck", x.getMessage())); - } - } - - @Override - public void close() { - try { - socket.close(); - }catch (Exception e) { - if (log.isDebugEnabled()) { - log.debug(sm.getString("bioReplicationTask.socket.closeFailed"), e); - } - } - try { - reader.close(); - }catch (Exception e) { - if (log.isDebugEnabled()) { - log.debug(sm.getString("bioReplicationTask.reader.closeFailed"), e); - } - } - reader = null; - socket = null; - super.close(); - } -} diff --git a/java/org/apache/catalina/tribes/transport/bio/BioSender.java b/java/org/apache/catalina/tribes/transport/bio/BioSender.java deleted file mode 100644 index 756e1eb..0000000 --- a/java/org/apache/catalina/tribes/transport/bio/BioSender.java +++ /dev/null @@ -1,281 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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.catalina.tribes.transport.bio; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.InetSocketAddress; -import java.net.Socket; -import java.util.Arrays; - -import org.apache.catalina.tribes.RemoteProcessException; -import org.apache.catalina.tribes.io.XByteBuffer; -import org.apache.catalina.tribes.transport.AbstractSender; -import org.apache.catalina.tribes.transport.Constants; -import org.apache.catalina.tribes.transport.SenderState; -import org.apache.catalina.tribes.util.StringManager; -import org.apache.juli.logging.Log; -import org.apache.juli.logging.LogFactory; - -/** - * Send cluster messages with only one socket. Ack and keep Alive Handling is - * supported - * - * @author Peter Rossbach - * @since 5.5.16 - */ -public class BioSender extends AbstractSender { - - private static final Log log = LogFactory.getLog(BioSender.class); - - /** - * The string manager for this package. - */ - protected static final StringManager sm = StringManager.getManager(BioSender.class); - - // ----------------------------------------------------- Instance Variables - - /** - * current sender socket - */ - private Socket socket = null; - private OutputStream soOut = null; - private InputStream soIn = null; - - protected final XByteBuffer ackbuf = - new XByteBuffer(Constants.ACK_COMMAND.length, true); - - - // ------------------------------------------------------------- Constructor - - public BioSender() { - // NO-OP - } - - - // --------------------------------------------------------- Public Methods - - /** - * Connect other cluster member receiver - * @see org.apache.catalina.tribes.transport.DataSender#connect() - */ - @Override - public void connect() throws IOException { - openSocket(); - } - - - /** - * disconnect and close socket - * - * @see org.apache.catalina.tribes.transport.DataSender#disconnect() - */ - @Override - public void disconnect() { - boolean connect = isConnected(); - closeSocket(); - if (connect) { - if (log.isDebugEnabled()) - log.debug(sm.getString("bioSender.disconnect", getAddress().getHostAddress(), Integer.valueOf(getPort()), Long.valueOf(0))); - } - - } - - /** - * Send message. - * @param data The data to send - * @param waitForAck Wait for an ack - * @throws IOException An IO error occurred sending the message - */ - public void sendMessage(byte[] data, boolean waitForAck) throws IOException { - IOException exception = null; - setAttempt(0); - try { - // first try with existing connection - pushMessage(data,false,waitForAck); - } catch (IOException x) { - SenderState.getSenderState(getDestination()).setSuspect(); - exception = x; - if (log.isTraceEnabled()) log.trace(sm.getString("bioSender.send.again", getAddress().getHostAddress(),Integer.valueOf(getPort())),x); - while ( getAttempt()<getMaxRetryAttempts() ) { - try { - setAttempt(getAttempt()+1); - // second try with fresh connection - pushMessage(data, true,waitForAck); - exception = null; - } catch (IOException xx) { - exception = xx; - closeSocket(); - } - } - } finally { - setRequestCount(getRequestCount()+1); - keepalive(); - if ( exception != null ) throw exception; - } - } - - - @Override - public String toString() { - StringBuilder buf = new StringBuilder("DataSender[("); - buf.append(super.toString()).append(")"); - buf.append(getAddress()).append(":").append(getPort()).append("]"); - return buf.toString(); - } - - // --------------------------------------------------------- Protected Methods - - /** - * Open real socket and set time out when waitForAck is enabled - * is socket open return directly. - * @throws IOException Error opening socket - */ - protected void openSocket() throws IOException { - if(isConnected()) return ; - try { - socket = new Socket(); - InetSocketAddress sockaddr = new InetSocketAddress(getAddress(), getPort()); - socket.connect(sockaddr,(int)getTimeout()); - socket.setSendBufferSize(getTxBufSize()); - socket.setReceiveBufferSize(getRxBufSize()); - socket.setSoTimeout( (int) getTimeout()); - socket.setTcpNoDelay(getTcpNoDelay()); - socket.setKeepAlive(getSoKeepAlive()); - socket.setReuseAddress(getSoReuseAddress()); - socket.setOOBInline(getOoBInline()); - socket.setSoLinger(getSoLingerOn(),getSoLingerTime()); - socket.setTrafficClass(getSoTrafficClass()); - setConnected(true); - soOut = socket.getOutputStream(); - soIn = socket.getInputStream(); - setRequestCount(0); - setConnectTime(System.currentTimeMillis()); - if (log.isDebugEnabled()) - log.debug(sm.getString("bioSender.openSocket", getAddress().getHostAddress(), Integer.valueOf(getPort()), Long.valueOf(0))); - } catch (IOException ex1) { - SenderState.getSenderState(getDestination()).setSuspect(); - if (log.isDebugEnabled()) - log.debug(sm.getString("bioSender.openSocket.failure",getAddress().getHostAddress(), Integer.valueOf(getPort()), Long.valueOf(0)), ex1); - throw ex1; - } - - } - - /** - * Close socket. - * - * @see #disconnect() - */ - protected void closeSocket() { - if(isConnected()) { - if (socket != null) { - try { - socket.close(); - } catch (IOException x) { - // Ignore - } finally { - socket = null; - soOut = null; - soIn = null; - } - } - setRequestCount(0); - setConnected(false); - if (log.isDebugEnabled()) - log.debug(sm.getString("bioSender.closeSocket",getAddress().getHostAddress(), Integer.valueOf(getPort()), Long.valueOf(0))); - } - } - - /** - * Push messages with only one socket at a time - * Wait for ack is needed and make auto retry when write message is failed. - * After sending error close and reopen socket again. - * - * After successful sending update stats - * - * WARNING: Subclasses must be very careful that only one thread call this pushMessage at once!!! - * - * @see #closeSocket() - * @see #openSocket() - * @see #sendMessage(byte[], boolean) - * - * @param data Data to send - * @param reconnect Do a reconnect (close socket then reopen) - * @param waitForAck Wait for an acknowledgement - * @throws IOException IO error writing data - * @since 5.5.10 - */ - - protected void pushMessage(byte[] data, boolean reconnect, boolean waitForAck) throws IOException { - keepalive(); - if ( reconnect ) closeSocket(); - if (!isConnected()) openSocket(); - soOut.write(data); - soOut.flush(); - if (waitForAck) waitForAck(); - SenderState.getSenderState(getDestination()).setReady(); - - } - - /** - * Wait for Acknowledgement from other server. - * FIXME Please, not wait only for three characters, better control that the wait ack message is correct. - * @throws IOException An IO error occurred - */ - protected void waitForAck() throws java.io.IOException { - try { - boolean ackReceived = false; - boolean failAckReceived = false; - ackbuf.clear(); - int bytesRead = 0; - int i = soIn.read(); - while ((i != -1) && (bytesRead < Constants.ACK_COMMAND.length)) { - bytesRead++; - byte d = (byte)i; - ackbuf.append(d); - if (ackbuf.doesPackageExist() ) { - byte[] ackcmd = ackbuf.extractDataPackage(true).getBytes(); - ackReceived = Arrays.equals(ackcmd,org.apache.catalina.tribes.transport.Constants.ACK_DATA); - failAckReceived = Arrays.equals(ackcmd,org.apache.catalina.tribes.transport.Constants.FAIL_ACK_DATA); - ackReceived = ackReceived || failAckReceived; - break; - } - i = soIn.read(); - } - if (!ackReceived) { - if (i == -1) throw new IOException(sm.getString("bioSender.ack.eof",getAddress(), Integer.valueOf(socket.getLocalPort()))); - else throw new IOException(sm.getString("bioSender.ack.wrong",getAddress(), Integer.valueOf(socket.getLocalPort()))); - } else if ( failAckReceived && getThrowOnFailedAck()) { - throw new RemoteProcessException(sm.getString("bioSender.fail.AckReceived")); - } - } catch (IOException x) { - String errmsg = sm.getString("bioSender.ack.missing", getAddress(), Integer.valueOf(socket.getLocalPort()), Long.valueOf(getTimeout())); - if ( SenderState.getSenderState(getDestination()).isReady() ) { - SenderState.getSenderState(getDestination()).setSuspect(); - if ( log.isWarnEnabled() ) log.warn(errmsg, x); - } else { - if ( log.isDebugEnabled() )log.debug(errmsg, x); - } - throw x; - } finally { - ackbuf.clear(); - } - } -} diff --git a/java/org/apache/catalina/tribes/transport/bio/LocalStrings.properties b/java/org/apache/catalina/tribes/transport/bio/LocalStrings.properties deleted file mode 100644 index 089e44a..0000000 --- a/java/org/apache/catalina/tribes/transport/bio/LocalStrings.properties +++ /dev/null @@ -1,40 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. - -bioReceiver.already.started=ServerSocket already started -bioReceiver.run.fail=Unable to run replication listener. -bioReceiver.socket.closeFailed=Failed to close socket -bioReceiver.start.fail=Unable to start cluster receiver -bioReceiver.threadpool.fail=ThreadPool cannot be initialized. Listener not started -bioReceiver.threads.busy=All BIO server replication threads are busy, unable to handle more requests until a thread is freed up. - -bioReplicationTask.messageDataReceived.error=Error thrown from messageDataReceived. -bioReplicationTask.reader.closeFailed=Failed to close reader -bioReplicationTask.socket.closeFailed=Failed to close socket -bioReplicationTask.unable.sendAck=Unable to send ACK back through channel, channel disconnected?: [{0}] -bioReplicationTask.unable.service=Unable to service bio socket - -bioSender.ack.eof=EOF reached at local port [{0}:{1,number,integer}] -bioSender.ack.missing=Unable to read acknowledgement from [{0}:{1,number,integer}] in {2,number,integer} ms. Disconnecting socket, and trying again. -bioSender.ack.wrong=Missing correct ACK after 10 bytes read at local port [{0}:{1,number,integer}] -bioSender.closeSocket=Sender close socket to [{0}:{1,number,integer}] (close count {2,number,integer}) -bioSender.disconnect=Sender disconnect from [{0}:{1,number,integer}] (disconnect count {2,number,integer}) -bioSender.fail.AckReceived=Received a failed ack:org.apache.catalina.tribes.transport.Constants.FAIL_ACK_DATA -bioSender.openSocket=Sender open socket to [{0}:{1,number,integer}] (open count {2,number,integer}) -bioSender.openSocket.failure=Open sender socket [{0}:{1,number,integer}] failure! (open failure count {2,number,integer}) -bioSender.send.again=Send data again to [{0}:{1,number,integer}] - -pooledMultiSender.retrieve.fail=Unable to retrieve a sender from the sender pool -pooledMultiSender.unable.retrieve.sender=Unable to retrieve a data sender, time out([{0}] ms) error. diff --git a/java/org/apache/catalina/tribes/transport/bio/LocalStrings_cs.properties b/java/org/apache/catalina/tribes/transport/bio/LocalStrings_cs.properties deleted file mode 100644 index 9e6f09c..0000000 --- a/java/org/apache/catalina/tribes/transport/bio/LocalStrings_cs.properties +++ /dev/null @@ -1,22 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. - -bioReceiver.socket.closeFailed=Uzavření socketu selhalo - -bioReplicationTask.socket.closeFailed=Uzavření socketu selhalo - -bioSender.ack.wrong=Chybí správné ACK po čtení 10 bytů na portu [{0}:{1,number,integer}] -bioSender.openSocket=Odesílatel otevřel socket na [{0}:{1,number,integer}] (počet otevřených {2,number,integer}) -bioSender.send.again=Poslat data znovu na [{0}:{1,number,integer}] diff --git a/java/org/apache/catalina/tribes/transport/bio/LocalStrings_de.properties b/java/org/apache/catalina/tribes/transport/bio/LocalStrings_de.properties deleted file mode 100644 index 891f863..0000000 --- a/java/org/apache/catalina/tribes/transport/bio/LocalStrings_de.properties +++ /dev/null @@ -1,18 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. - -bioReceiver.socket.closeFailed=Socket konnte nicht geschlossen werden - -bioSender.send.again=Sende Daten erneut an [{0}:{1,number,integer}] diff --git a/java/org/apache/catalina/tribes/transport/bio/LocalStrings_es.properties b/java/org/apache/catalina/tribes/transport/bio/LocalStrings_es.properties deleted file mode 100644 index 7a92ed6..0000000 --- a/java/org/apache/catalina/tribes/transport/bio/LocalStrings_es.properties +++ /dev/null @@ -1,27 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. - -bioReceiver.socket.closeFailed=Fallo al cerrar el socket - -bioReplicationTask.reader.closeFailed=Fallo al cerrar el lector - -bioSender.ack.eof=EOF alcanzado en puerto local [{0}:{1,number,integer}] -bioSender.ack.missing=No puedo leer reconocimiento desde [{0}:{1,number,integer}] en {2,number,integer} ms. Desconectando conector e intentando otra vez. -bioSender.ack.wrong=Falta ACK correcto tras 10 bytes leídos en puerto local [{0}:{1,number,integer}] -bioSender.closeSocket=El remitente cerró el conector con [{0}:{1,number,integer}] (contador de cierre {2,number,integer}) -bioSender.disconnect=Remitente desconectado de [{0}:{1,number,integer}] (contador de desconexión {2,number,integer}) -bioSender.openSocket=Remitente abrió conector con [{0}:{1,number,integer}] (contador de apertura {2,number,integer}) -bioSender.openSocket.failure=¡No pude abrir conector de remitente [{0}:{1,number,integer}]! (contador de fallo de apertura {2,number,integer}) -bioSender.send.again=Enviar datos de nuevo a [{0}:{1,number,integer}] diff --git a/java/org/apache/catalina/tribes/transport/bio/LocalStrings_fr.properties b/java/org/apache/catalina/tribes/transport/bio/LocalStrings_fr.properties deleted file mode 100644 index a746bf8..0000000 --- a/java/org/apache/catalina/tribes/transport/bio/LocalStrings_fr.properties +++ /dev/null @@ -1,40 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. - -bioReceiver.already.started=Le ServerSocket a déjà démarré -bioReceiver.run.fail=Impossible d'exécuter l’écouteur de réplication -bioReceiver.socket.closeFailed=Echec de fermeture de la connection -bioReceiver.start.fail=Impossible de démarrer le receveur du cluster -bioReceiver.threadpool.fail=Le ThreadPool n'a pas pu être initialisé, l'écouteur n'a pas démarré -bioReceiver.threads.busy=Tous les fils d'exécution du serveur de réplication sont occupés, impossible de traiter plus de requêtes avant qu'un ne se libère - -bioReplicationTask.messageDataReceived.error=Erreur lors de messageDataReceived -bioReplicationTask.reader.closeFailed=Echec de fermeture du lecteur -bioReplicationTask.socket.closeFailed=Ecech de la fermeture du socket -bioReplicationTask.unable.sendAck=Impossible de renvoyer une confirmation par le canal, il peut être déconnecté : [{0}] -bioReplicationTask.unable.service=Incapable de traiter un socket BIO - -bioSender.ack.eof=EOF recontré sur le port local [{0}:{1,number,integer}] -bioSender.ack.missing=Incapable de lire l'accusé de réception de [{0}:{1,number,integer}] en {2,number,integer] ms. Déconnexion de la socket et nouvel tentative. -bioSender.ack.wrong=Il manque un ACK correct après la lecture de 10 octets sur le port local [{0}:{1,number,integer}] -bioSender.closeSocket=Sender fermeture du socket vers [{0}:{1,number,integer}] (nombre de fermetures {2,number,integer}) -bioSender.disconnect=L'envoyeur s'est déconnecté de [{0}:{1,number,integer}] (nombre de déconnections {2,number,integer}) -bioSender.fail.AckReceived=Reçu une confirmation en échec : org.apache.catalina.tribes.transport.Constants.FAIL_ACK_DATA -bioSender.openSocket=L''expéditeur ouvre une socket vers [{0}:{1,number,integer}] ({2,number,integer} sockets ouvertes}) -bioSender.openSocket.failure=Echec d'ouverture du socket d'envoi [{0}:{1,number,integer} (nombre d'écecs d'ouverture {2,number,integer}) -bioSender.send.again=Envoyer les données à nouveau à [{0}:{1,number,integer}] - -pooledMultiSender.retrieve.fail=Impossible d'obtenir un envoyeur à partir du pool -pooledMultiSender.unable.retrieve.sender=Impossible de récupéré un expéditeur de données. délai d''attente ([{0}] ms) dépassé diff --git a/java/org/apache/catalina/tribes/transport/bio/LocalStrings_ja.properties b/java/org/apache/catalina/tribes/transport/bio/LocalStrings_ja.properties deleted file mode 100644 index 2fde08e..0000000 --- a/java/org/apache/catalina/tribes/transport/bio/LocalStrings_ja.properties +++ /dev/null @@ -1,40 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. - -bioReceiver.already.started=サーバーソケットはすでに開始しています。 -bioReceiver.run.fail=レプリケーションリスナーを実行できません。 -bioReceiver.socket.closeFailed=ソケットを切断できませんでした。 -bioReceiver.start.fail=クラスタレシーバを起動できません -bioReceiver.threadpool.fail=スレッドプールを初期化できません。リスナーを開始しませんでした。 -bioReceiver.threads.busy=全ての BIO サーバーレプリケーションスレッドがビジー状態です。スレッドが解放されるまで新しいリクエストは処理できません。 - -bioReplicationTask.messageDataReceived.error=messageDataReceivedから送出されたエラー -bioReplicationTask.reader.closeFailed=Readerを閉じることに失敗しました。 -bioReplicationTask.socket.closeFailed=ソケットクロースに失敗 -bioReplicationTask.unable.sendAck=チャンネルへACKを送信できません。チャンネルが切断されているかもしれません: [{0}] -bioReplicationTask.unable.service=bio ソケットを開始できません。 - -bioSender.ack.eof=ローカルポート[{0}:{1、number、integer}]でEOF -bioSender.ack.missing=[{0}:{1,number,integer}] から [{2,number,integer}] ms 以内に確認応答(ACK)を読み取ることができませんでした。ソケットを切断して再試行してください。 -bioSender.ack.wrong=ローカルポート [{0}:{1,number,integer}] から 10 バイト読み込んだ後に正しい ACK が見つかりません。 -bioSender.closeSocket=[{0}:{1、number、integer}](close count {2、number、integer})に送信側のクローズソケット -bioSender.disconnect=[{0}:{1,number,integer}](切断カウント{2,number,integer})からのSender切断 -bioSender.fail.AckReceived=失敗したACK:org.apache.catalina.tribes.transport.Constants.FAIL_ACK_DATAの受信 -bioSender.openSocket=Sender オブジェクトが [{0}:{1,number,integer}] (接続数 {2,number,integer}) へソケット接続を開始しました。 -bioSender.openSocket.failure=開いているSender側ソケット[{0}:{1,number,integer}]失敗! (オープン失敗カウント{2,number,integer})) -bioSender.send.again=[{0}:{1,number,integer}] へデータを再送します。 - -pooledMultiSender.retrieve.fail=SenderプールからSenderを取得できません。 -pooledMultiSender.unable.retrieve.sender=データSenderを取得できません。タイムアウト([{0}] ms)エラー。 diff --git a/java/org/apache/catalina/tribes/transport/bio/LocalStrings_ko.properties b/java/org/apache/catalina/tribes/transport/bio/LocalStrings_ko.properties deleted file mode 100644 index 37bc523..0000000 --- a/java/org/apache/catalina/tribes/transport/bio/LocalStrings_ko.properties +++ /dev/null @@ -1,40 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. - -bioReceiver.already.started=ServerSocket이 이미 시작되었습니다. -bioReceiver.run.fail=복제 리스너를 실행할 수 없습니다. -bioReceiver.socket.closeFailed=소켓을 닫지 못했습니다. -bioReceiver.start.fail=클러스터 Receiver를 시작할 수 없습니다. -bioReceiver.threadpool.fail=쓰레드풀이 초기화될 수 없습니다. 리스너가 시작되지 않았습니다. -bioReceiver.threads.busy=모든 BIO 서버 복제 쓰레드들이 작업 중입니다. 유휴 쓰레드가 하나라도 생기기 전에는, 더 이상 요청을 처리할 수 없습니다. - -bioReplicationTask.messageDataReceived.error=messageDataReceived로부터 오류 발생 -bioReplicationTask.reader.closeFailed=Reader를 닫지 못했습니다. -bioReplicationTask.socket.closeFailed=소켓을 닫지 못했습니다. -bioReplicationTask.unable.sendAck=채널을 통해 ACK을 되돌려 보낼 수 없습니다. 채널의 연결이 끊겼나요?: [{0}] -bioReplicationTask.unable.service=BIO 소켓을 서비스할 수 없습니다. - -bioSender.ack.eof=로컬 포트 [{0}:{1,number,integer}]에서 EOF에 도달했습니다. -bioSender.ack.missing=[{0}:{1,number,integer}](으)로부터 ACK을 {2,number,integer} 밀리초 내에 읽을 수 없습니다. 소켓 연결을 끊고, 다시 시도합니다. -bioSender.ack.wrong=10 바이트들을 로컬 포트 [{0}]에서 읽고 난 후 올바른 ACK를 받지 못했습니다: {1,number,integer}] -bioSender.closeSocket=Sender가 소켓 닫기 메시지를 [{0}:{1,number,integer}]에 전송합니다. (전송 회수: {2,number,integer}) -bioSender.disconnect=Sender가 [{0}:{1,number,integer}](으)로부터 연결을 끊습니다. (연결 끊기 회수: {2,number,integer}) -bioSender.fail.AckReceived=실패한 ACK을 받았습니다: org.apache.catalina.tribes.transport.Constants.FAIL_ACK_DATA -bioSender.openSocket=Sender가 [{0}:{1,number,integer}]을(를) 향해 소켓을 엽니다. (연 소켓 개수: {2,number,integer}) -bioSender.openSocket.failure=Sender 소켓 [{0}:{1,number,integer}]을(를) 열지 못했습니다! (열기 실패 회수: {2,number,integer}) -bioSender.send.again=데이터를 [{0}:{1,number,integer}](으)로 다시 전송합니다. - -pooledMultiSender.retrieve.fail=Sender 풀로부터 sender를 검색할 수 없습니다. -pooledMultiSender.unable.retrieve.sender=데이터 sender를 조회할 수 없습니다. 제한 시간 초과 ([{0}] 밀리초) 오류 발생. diff --git a/java/org/apache/catalina/tribes/transport/bio/LocalStrings_pt_BR.properties b/java/org/apache/catalina/tribes/transport/bio/LocalStrings_pt_BR.properties deleted file mode 100644 index a56f384..0000000 --- a/java/org/apache/catalina/tribes/transport/bio/LocalStrings_pt_BR.properties +++ /dev/null @@ -1,18 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. - -bioReceiver.socket.closeFailed=Falha ao encerrar a conexão do socket - -bioSender.send.again=Enviar dados novamente para [{0}:{1,number,integer}] diff --git a/java/org/apache/catalina/tribes/transport/bio/LocalStrings_ru.properties b/java/org/apache/catalina/tribes/transport/bio/LocalStrings_ru.properties deleted file mode 100644 index 1d40449..0000000 --- a/java/org/apache/catalina/tribes/transport/bio/LocalStrings_ru.properties +++ /dev/null @@ -1,16 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. - -bioSender.send.again=Послать данные ещё раз в [{0}:{1,number,integer}] diff --git a/java/org/apache/catalina/tribes/transport/bio/MultipointBioSender.java b/java/org/apache/catalina/tribes/transport/bio/MultipointBioSender.java deleted file mode 100644 index 5edd1e1..0000000 --- a/java/org/apache/catalina/tribes/transport/bio/MultipointBioSender.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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.catalina.tribes.transport.bio; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - -import org.apache.catalina.tribes.Channel; -import org.apache.catalina.tribes.ChannelException; -import org.apache.catalina.tribes.ChannelMessage; -import org.apache.catalina.tribes.Member; -import org.apache.catalina.tribes.io.ChannelData; -import org.apache.catalina.tribes.io.XByteBuffer; -import org.apache.catalina.tribes.transport.AbstractSender; -import org.apache.catalina.tribes.transport.MultiPointSender; - -public class MultipointBioSender extends AbstractSender implements MultiPointSender { - public MultipointBioSender() { - // NO-OP - } - - protected final HashMap<Member, BioSender> bioSenders = new HashMap<>(); - - @Override - public synchronized void sendMessage(Member[] destination, ChannelMessage msg) throws ChannelException { - byte[] data = XByteBuffer.createDataPackage((ChannelData)msg); - BioSender[] senders = setupForSend(destination); - ChannelException cx = null; - for ( int i=0; i<senders.length; i++ ) { - try { - senders[i].sendMessage(data,(msg.getOptions()&Channel.SEND_OPTIONS_USE_ACK)==Channel.SEND_OPTIONS_USE_ACK); - } catch (Exception x) { - if (cx == null) cx = new ChannelException(x); - cx.addFaultyMember(destination[i],x); - } - } - if (cx!=null ) throw cx; - } - - - - protected BioSender[] setupForSend(Member[] destination) throws ChannelException { - ChannelException cx = null; - BioSender[] result = new BioSender[destination.length]; - for ( int i=0; i<destination.length; i++ ) { - try { - BioSender sender = bioSenders.get(destination[i]); - if (sender == null) { - sender = new BioSender(); - AbstractSender.transferProperties(this,sender); - sender.setDestination(destination[i]); - bioSenders.put(destination[i], sender); - } - result[i] = sender; - if (!result[i].isConnected() ) result[i].connect(); - result[i].keepalive(); - }catch (Exception x ) { - if ( cx== null ) cx = new ChannelException(x); - cx.addFaultyMember(destination[i],x); - } - } - if ( cx!=null ) throw cx; - else return result; - } - - @Override - public void connect() throws IOException { - //do nothing, we connect on demand - setConnected(true); - } - - - private synchronized void close() throws ChannelException { - ChannelException x = null; - Object[] members = bioSenders.keySet().toArray(); - for (int i=0; i<members.length; i++ ) { - Member mbr = (Member)members[i]; - try { - BioSender sender = bioSenders.get(mbr); - sender.disconnect(); - }catch ( Exception e ) { - if ( x == null ) x = new ChannelException(e); - x.addFaultyMember(mbr,e); - } - bioSenders.remove(mbr); - } - if ( x != null ) throw x; - } - - @Override - public void add(Member member) { - // NO-OP - // Members are defined by the array of members specified in the call to - // sendMessage() - } - - @Override - public void remove(Member member) { - //disconnect senders - BioSender sender = bioSenders.remove(member); - if ( sender != null ) sender.disconnect(); - } - - - @Override - public synchronized void disconnect() { - try { - close(); - } catch (Exception x) { - // Ignore - } - setConnected(false); - } - - @Override - protected void finalize() throws Throwable { - try { - disconnect(); - } catch (Exception e) { - // Ignore - } - super.finalize(); - } - - - @Override - public boolean keepalive() { - boolean result = false; - @SuppressWarnings("unchecked") - Map.Entry<Member,BioSender>[] entries = bioSenders.entrySet().toArray(new Map.Entry[0]); - for ( int i=0; i<entries.length; i++ ) { - BioSender sender = entries[i].getValue(); - if ( sender.keepalive() ) { - bioSenders.remove(entries[i].getKey()); - } - } - return result; - } - -} \ No newline at end of file diff --git a/java/org/apache/catalina/tribes/transport/bio/PooledMultiSender.java b/java/org/apache/catalina/tribes/transport/bio/PooledMultiSender.java deleted file mode 100644 index 8c92311..0000000 --- a/java/org/apache/catalina/tribes/transport/bio/PooledMultiSender.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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.catalina.tribes.transport.bio; - -import org.apache.catalina.tribes.ChannelException; -import org.apache.catalina.tribes.ChannelMessage; -import org.apache.catalina.tribes.Member; -import org.apache.catalina.tribes.transport.AbstractSender; -import org.apache.catalina.tribes.transport.DataSender; -import org.apache.catalina.tribes.transport.MultiPointSender; -import org.apache.catalina.tribes.transport.PooledSender; -import org.apache.catalina.tribes.util.StringManager; - -public class PooledMultiSender extends PooledSender { - - protected static final StringManager sm = StringManager.getManager(PooledMultiSender.class); - - public PooledMultiSender() { - // NO-OP - } - - @Override - public void sendMessage(Member[] destination, ChannelMessage msg) throws ChannelException { - MultiPointSender sender = null; - try { - sender = (MultiPointSender)getSender(); - if (sender == null) { - ChannelException cx = new ChannelException(sm.getString( - "pooledMultiSender.unable.retrieve.sender", Long.toString(getMaxWait()))); - for (int i = 0; i < destination.length; i++) - cx.addFaultyMember(destination[i], new NullPointerException(sm.getString("pooledMultiSender.retrieve.fail"))); - throw cx; - } else { - sender.sendMessage(destination, msg); - } - sender.keepalive(); - }finally { - if ( sender != null ) returnSender(sender); - } - } - - @Override - public DataSender getNewDataSender() { - MultipointBioSender sender = new MultipointBioSender(); - AbstractSender.transferProperties(this,sender); - return sender; - } -} diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index eb7c435..61129f8 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -157,6 +157,10 @@ <code>org.apache.catalina.tribes.io.BufferPool.DEFAULT_POOL_SIZE</code> system property to configure its size. (remm) </update> + <update> + Remove java.io based Tribes receiver and sender, in favor of NIO which + was the default. (remm) + </update> </changelog> </subsection> <subsection name="Web applications"> diff --git a/webapps/docs/config/cluster-receiver.xml b/webapps/docs/config/cluster-receiver.xml index 9bc1b53..7edf9e7 100644 --- a/webapps/docs/config/cluster-receiver.xml +++ b/webapps/docs/config/cluster-receiver.xml @@ -46,11 +46,9 @@ </p> </section> -<section name="Blocking vs Non-Blocking Receiver"> +<section name="Receiver"> <p> - The receiver supports both a non blocking, <code>org.apache.catalina.tribes.transport.nio.NioReceiver</code>, and a - blocking, <code>org.apache.catalina.tribes.transport.bio.BioReceiver</code>. It is preferred to use the non blocking receiver - to be able to grow your cluster without running into thread starvation.<br/> + The receiver supports a non blocking <code>org.apache.catalina.tribes.transport.nio.NioReceiver</code> reciever.<br/> Using the non blocking receiver allows you to with a very limited thread count to serve a large number of messages. Usually the rule is to use 1 thread per node in the cluster for small clusters, and then depending on your message frequency and your hardware, you'll find an optimal number of threads peak out at a certain number. @@ -61,11 +59,9 @@ <subsection name="Common Attributes"> <attributes> <attribute name="className" required="true"> - The implementation of the receiver component. Two implementations available, - <code>org.apache.catalina.tribes.transport.nio.NioReceiver</code> and - <code>org.apache.catalina.tribes.transport.bio.BioReceiver</code>.<br/> - The <code>org.apache.catalina.tribes.transport.nio.NioReceiver</code> is the - preferred implementation + The implementation of the receiver component. + <code>org.apache.catalina.tribes.transport.nio.NioReceiver</code> + is provided by Tomcat. </attribute> <attribute name="address" required="false"> The address (network interface) to listen for incoming traffic. diff --git a/webapps/docs/config/cluster-sender.xml b/webapps/docs/config/cluster-sender.xml index 66f9707..a539647 100644 --- a/webapps/docs/config/cluster-sender.xml +++ b/webapps/docs/config/cluster-sender.xml @@ -62,11 +62,6 @@ <p> The nested element <code><Transport></code> is not required, but encouraged, as this is where you would set all the socket options for the outgoing messages. Please see its attributes below. - There are two implementations, in a similar manner to the <a href="cluster-receiver.html">receiver</a>, one is non-blocking - based and the other is built using blocking IO. <br/> - <code>org.apache.catalina.tribes.transport.bio.PooledMultiSender</code> is the blocking implementation and - <code>org.apache.catalina.tribes.transport.nio.PooledParallelSender</code>. - Parallel delivery is not available for the blocking implementation due to the fact that it is blocking a thread on sending data. </p> </section> @@ -81,9 +76,9 @@ <subsection name="Common Transport Attributes"> <attributes> <attribute name="className" required="true"> - Required, an implementation of the <code>org.apache.catalina.tribes.transport.MultiPointSender</code>.<br/> - Non-blocking implementation is <code>org.apache.catalina.tribes.transport.nio.PooledParallelSender</code><br/> - Blocking implementation is <code>org.apache.catalina.tribes.transport.bio.PooledMultiSender</code> + The implementation of the sender component. + <code>org.apache.catalina.tribes.transport.nio.PooledParallelSender</code> + is provided by Tomcat. </attribute> <attribute name="rxBufSize" required="false"> The receive buffer size on the socket. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org