public void addComponentItem(String jid, String node, String name) {
        Lock lock = serverItems.getLock(jid);
        lock.lock();
        try {
            ClusteredServerItem item = serverItems.get(jid);
            if (item == null) {
                // First time a node registers a server item for this component
                item = new ClusteredServerItem();

                Element element = DocumentHelper.createElement("item");
                element.addAttribute("jid", jid);
                element.addAttribute("node", node);
                element.addAttribute("name", name);
                item.element = element;
            }
            if (item.nodes.add(XMPPServer.getInstance().getNodeID())) {
                // Update the cache with latest info
                serverItems.put(jid, item);
            }
            // Keep track of the new server item added by this JVM
            localServerItems.put(jid, item.element);
        }
        finally {
            lock.unlock();
        }
    }
Registers a new disco item for a component. The jid attribute of the item will match the jid
of the component and the name should be the name of the component discovered using disco.

@param jid the jid of the component.
@param node the node that complements the jid address.
@param name the discovered name of the component.
xmppserver/src/main/java/org/jivesoftware/openfire/disco/IQDiscoItemsHandler.java