ObjectName serverSocketFactoryObjName = new ObjectName(serverSocketFactoryString);
if(server != null)
{
try
{
ServerSocketFactoryMBean serverSocketFactory = (ServerSocketFactoryMBean) MBeanServerInvocationHandler.newProxyInstance(server,
serverSocketFactoryObjName,
ServerSocketFactoryMBean.class,
false);
svrSocket = serverSocketFactory.createServerSocket(serverBindPort, backlog, bindAddress);
}
catch(Exception e)
{
log.error("Error creating mbean proxy for server socket factory for object name: " + serverSocketFactoryObjName, e);
throw new IOException("Error createing custom server socket factory.");
}
}
else
{
log.error("The 'serverSocketFactory' attribute was set with a value, but the MBeanServer reference is null.");
throw new IOException("Error creating custom server socket factory. The invoker does not have a reference to the mbean server.");
}
}
}
catch(MalformedObjectNameException e)
{
log.error("Error setting the server socket factory due to the attibute value passed not being a valid ObjectName.", e);
throw new IOException("Error creating custom server socket factory. The attributed value passed is not a valid object name.");
}
catch(NullPointerException e)
{
log.error("Error setting the server socket factory due to null pointer exception.", e);
throw new IOException("Error creating custom server socket factory.");
}
}
}
if(svrSocket == null)
{
log.debug("Creating default server socket.");
serverSocketFactory = SSLServerSocketFactory.getDefault();
svrSocket = serverSocketFactory.createServerSocket(serverBindPort, backlog, bindAddress);
}
log.debug("Created server socket: " + svrSocket);
return svrSocket;