use of org.apache.catalina.tribes.Member in project tomcat by apache.
the class FarmWarDeployer method install.
/**
* Install a new web application, whose web application archive is at the
* specified URL, into this container and all the other members of the
* cluster with the specified context name.
* <p>
* If this application is successfully installed locally, a ContainerEvent
* of type <code>INSTALL_EVENT</code> will be sent to all registered
* listeners, with the newly created <code>Context</code> as an argument.
*
* @param contextName
* The context name to which this application should be installed
* (must be unique)
* @param webapp
* A WAR file or unpacked directory structure containing the web
* application to be installed
*
* @exception IllegalArgumentException
* if the specified context name is malformed
* @exception IllegalStateException
* if the specified context name is already deployed
* @exception IOException
* if an input/output error was encountered during
* installation
*/
@Override
public void install(String contextName, File webapp) throws IOException {
Member[] members = getCluster().getMembers();
if (members.length == 0) {
return;
}
Member localMember = getCluster().getLocalMember();
FileMessageFactory factory = FileMessageFactory.getInstance(webapp, false);
FileMessage msg = new FileMessage(localMember, webapp.getName(), contextName);
if (log.isDebugEnabled()) {
log.debug(sm.getString("farmWarDeployer.sendStart", contextName, webapp));
}
msg = factory.readMessage(msg);
while (msg != null) {
for (Member member : members) {
if (log.isDebugEnabled()) {
log.debug(sm.getString("farmWarDeployer.sendFragment", contextName, webapp, member));
}
getCluster().send(msg, member);
}
msg = factory.readMessage(msg);
}
if (log.isDebugEnabled()) {
log.debug(sm.getString("farmWarDeployer.sendEnd", contextName, webapp));
}
}
use of org.apache.catalina.tribes.Member in project tomcat by apache.
the class PooledParallelSender method sendMessage.
@Override
public void sendMessage(Member[] destination, ChannelMessage message) throws ChannelException {
if (!isConnected()) {
throw new ChannelException(sm.getString("pooledParallelSender.sender.disconnected"));
}
ParallelNioSender sender = (ParallelNioSender) getSender();
if (sender == null) {
ChannelException cx = new ChannelException(sm.getString("pooledParallelSender.unable.retrieveSender.timeout", Long.toString(getMaxWait())));
for (Member member : destination) {
cx.addFaultyMember(member, new NullPointerException(sm.getString("pooledParallelSender.unable.retrieveSender")));
}
throw cx;
} else {
try {
if (!sender.isConnected()) {
sender.connect();
}
sender.sendMessage(destination, message);
sender.keepalive();
} catch (ChannelException x) {
sender.disconnect();
throw x;
} finally {
returnSender(sender);
}
}
}
use of org.apache.catalina.tribes.Member in project tomcat by apache.
the class Arrays method extract.
public static Member[] extract(Member[] all, Member[] remove) {
List<Member> alist = java.util.Arrays.asList(all);
ArrayList<Member> list = new ArrayList<>(alist);
for (Member member : remove) {
list.remove(member);
}
return list.toArray(new Member[0]);
}
use of org.apache.catalina.tribes.Member in project tomcat by apache.
the class DNSMembershipProvider method accept.
@Override
public boolean accept(Serializable msg, Member sender) {
// Check if the sender is in the member list.
boolean found = false;
Member[] members = membership.getMembers();
if (members != null) {
for (Member member : members) {
if (Arrays.equals(sender.getHost(), member.getHost()) && sender.getPort() == member.getPort()) {
found = true;
break;
}
}
}
if (!found) {
MemberImpl member = new MemberImpl();
member.setHost(sender.getHost());
member.setPort(sender.getPort());
byte[] host = sender.getHost();
int i = 0;
StringBuilder buf = new StringBuilder();
buf.append(host[i++] & 0xff);
for (; i < host.length; i++) {
buf.append(".").append(host[i] & 0xff);
}
byte[] id = md5.digest(buf.toString().getBytes());
member.setUniqueId(id);
member.setMemberAliveTime(-1);
updateMember(member, true);
}
return false;
}
use of org.apache.catalina.tribes.Member in project tomcat by apache.
the class AbstractReplicatedMap method broadcast.
/**
* Helper method to broadcast a message to all members in a channel
* @param msgtype int
* @param rpc boolean
* @throws ChannelException Send error
*/
protected void broadcast(int msgtype, boolean rpc) throws ChannelException {
Member[] members = channel.getMembers();
// No destination.
if (members.length == 0) {
return;
}
// send out a map membership message, only wait for the first reply
MapMessage msg = new MapMessage(this.mapContextName, msgtype, false, null, null, null, channel.getLocalMember(false), null);
if (rpc) {
Response[] resp = rpcChannel.send(members, msg, RpcChannel.FIRST_REPLY, (channelSendOptions), rpcTimeout);
if (resp.length > 0) {
for (Response response : resp) {
mapMemberAdded(response.getSource());
messageReceived(response.getMessage(), response.getSource());
}
} else {
log.warn(sm.getString("abstractReplicatedMap.broadcast.noReplies"));
}
} else {
channel.send(channel.getMembers(), msg, channelSendOptions);
}
}
Aggregations