static synchronized ICartagoContext joinRemoteWorkspace(String wspName, String address, String protocol, AgentCredential cred, ICartagoCallback eventListener) throws cartago.security.SecurityException, CartagoException{
try {
if ((protocol == null) || (protocol.equals("default"))){
protocol = defaultInfraLayer;
}
ICartagoInfrastructureLayer service = infraLayers.get(protocol);
ICartagoContext ctx = service.joinRemoteWorkspace(wspName, address, cred, eventListener);
LinkedNodeInfo nodeInfo = new LinkedNodeInfo(ctx.getWorkspaceId().getNodeId(), protocol, address);
boolean exists = false;
for(LinkedNodeInfo tempNodeInfo : linkedNodes) {
if(tempNodeInfo.equals(nodeInfo)) {
exists = true;