# See the License for the specific language governing permissions and
# limitations under the License.
-AsyncSocketSender.create.thread=Create sender [{0}:{1,number,integer}] queue thread to tcp background replication
-AsyncSocketSender.queue.message=Queue message to [{0}:{1,number,integer}] id=[{2}] size={3}
-AsyncSocketSender.send.error=Unable to asynchronously send session with id=[{0}] - message will be ignored.
-AsyncSocketSender.queue.empty=Queue in sender [{0}:{1,number,integer}] returned null element!
-cluster.mbean.register.already=MBean {0} already registered!
IDataSender.ack.eof=EOF reached at local port [{0}:{1,number,integer}]
IDataSender.ack.receive=Got ACK at local port [{0}:{1,number,integer}]
IDataSender.ack.missing=Unable to read acknowledgement from [{0}:{1,number,integer}] in {2,number,integer} ms. Disconnecting socket, and trying again.
IDataSender.senderModes.Missing=Can't configure a data replication sender for mode {0}
IDataSender.senderModes.Resources=Can't load data replication sender mapping list
IDataSender.stats=Send stats from [{0}:{1,number,integer}], Nr of bytes sent={2,number,integer} over {3} = {4,number,integer} bytes/request, processing time {5,number,integer} msec, avg processing time {6,number,integer} msec
-PoolSocketSender.senderQueue.sender.failed=PoolSocketSender create new sender to [{0}:{1,number,integer}] failed
-PoolSocketSender.noMoreSender=No socket sender available for client [{0}:{1,number,integer}] did it disappeared?
-ReplicationTransmitter.getProperty=get property {0}
-ReplicationTransmitter.setProperty=set property {0}: {1} old value {2}
-ReplicationTransmitter.started=Start ClusterSender at cluster {0} with name {1}
-ReplicationTransmitter.stopped=Stopped ClusterSender at cluster {0} with name {1}
+PooledSender.senderDisconnectFail=Failed to disconnect sender
ReplicationValve.crossContext.add=add Cross Context session replication container to replicationValve threadlocal
ReplicationValve.crossContext.registerSession=register Cross context session id={0} from context {1}
ReplicationValve.crossContext.remove=remove Cross Context session replication container from replicationValve threadlocal
import java.util.List;
import org.apache.catalina.tribes.Member;
+import org.apache.catalina.tribes.util.StringManager;
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
/**
* <p>Title: </p>
*/
public abstract class PooledSender extends AbstractSender implements MultiPointSender {
+ private static final Log log = LogFactory.getLog(PooledSender.class);
+ protected static final StringManager sm =
+ StringManager.getManager(Constants.Package);
+
private SenderQueue queue = null;
private int poolSize = 25;
public PooledSender() {
inuse.remove(sender);
//just in case the limit has changed
if ( notinuse.size() < this.getLimit() ) notinuse.add(sender);
- else try {sender.disconnect(); } catch ( Exception ignore){}
+ else
+ try {
+ sender.disconnect();
+ } catch (Exception e) {
+ if (log.isDebugEnabled()) {
+ log.debug(sm.getString(
+ "PooledSender.senderDisconnectFail"), e);
+ }
+ }
notify();
}