try {
final ConfigContext configContext = getConfigContext();
ConfigContextImpl.lock();
//validate name uniqueness
if (!ConfigAPIHelper.isNameUnique(configContext, serverName)) {
throw new InstanceException(_strMgr.getString("serverNameNotUnique",
serverName));
}
ConfigAPIHelper.checkLegalName(serverName);
// see if nodeagent exists, if not create an empty reference
Domain domain = ConfigAPIHelper.getDomainConfigBean(configContext);
NodeAgents agents=domain.getNodeAgents();
NodeAgent agent=agents.getNodeAgentByName(nodeAgentName);
if (agent == null) {
// create an implnodeagent reference
NodeAgentsConfigBean naMBean = getNodeAgentsConfigBean();
naMBean.createNodeAgentConfig(nodeAgentName);
}
//a configuration and cluster cannot both be specified
if (configName != null && clusterName != null) {
throw new InstanceException(_strMgr.getString("configAndClusterMutuallyExclusive"));
}
//Ensure that server specified by serverName does not already exist.
//Given that we've already checked for uniqueness earlier, this should never
//be the case, but we'll be extra safe here.
Servers servers = domain.getServers();
Server server = servers.getServerByName(serverName);
if (server != null) {
throw new InstanceException(_strMgr.getString("serverAlreadyExists",
serverName));
}
//Create the new server instance
server = new Server();