Search in sources :

Example 66 with Member

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));
    }
}
Also used : Member(org.apache.catalina.tribes.Member)

Example 67 with Member

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);
        }
    }
}
Also used : Member(org.apache.catalina.tribes.Member) ChannelException(org.apache.catalina.tribes.ChannelException)

Example 68 with Member

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]);
}
Also used : ArrayList(java.util.ArrayList) Member(org.apache.catalina.tribes.Member)

Example 69 with Member

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;
}
Also used : MemberImpl(org.apache.catalina.tribes.membership.MemberImpl) Member(org.apache.catalina.tribes.Member)

Example 70 with Member

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);
    }
}
Also used : Response(org.apache.catalina.tribes.group.Response) FaultyMember(org.apache.catalina.tribes.ChannelException.FaultyMember) Member(org.apache.catalina.tribes.Member)

Aggregations

Member (org.apache.catalina.tribes.Member)93 ChannelException (org.apache.catalina.tribes.ChannelException)28 FaultyMember (org.apache.catalina.tribes.ChannelException.FaultyMember)17 Test (org.junit.Test)17 IOException (java.io.IOException)16 MemberImpl (org.apache.catalina.tribes.membership.MemberImpl)15 ReceiverBase (org.apache.catalina.tribes.transport.ReceiverBase)11 ArrayList (java.util.ArrayList)10 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)10 UniqueId (org.apache.catalina.tribes.UniqueId)9 Serializable (java.io.Serializable)6 BigDecimal (java.math.BigDecimal)6 DecimalFormat (java.text.DecimalFormat)6 Response (org.apache.catalina.tribes.group.Response)6 ChannelData (org.apache.catalina.tribes.io.ChannelData)6 XByteBuffer (org.apache.catalina.tribes.io.XByteBuffer)6 SelectionKey (java.nio.channels.SelectionKey)4 Selector (java.nio.channels.Selector)4 Membership (org.apache.catalina.tribes.membership.Membership)4 StaticMember (org.apache.catalina.tribes.membership.StaticMember)4