public class SingleConnectionFactory extends Object implements ConnectionFactory, org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.DisposableBean
ConnectionFactory
implementation that returns the same Connections from all
createConnection()
calls, and ignores calls to Connection.close()
.
Provides a more traditional API to creating a connection to a remote erlang
node than the JInterface API.
The following is taken from the JInterface javadocs that describe the valid node names that can be used. These naming constraints apply to the string values you pass into the node names in SimpleConnectionFactory's constructor.
About nodenames: Erlang nodenames consist of two components, an alivename and a hostname separated by '@'. Additionally, there are two nodename formats: short and long. Short names are of the form "alive@hostname", while long names are of the form "[email protected]". Erlang has special requirements regarding the use of the short and long formats, in particular they cannot be mixed freely in a network of communicating nodes, however Jinterface makes no distinction. See the Erlang documentation for more information about nodenames.
The constructors for the AbstractNode classes will create names exactly as you provide them as long as the name contains '@'. If the string you provide contains no '@', it will be treated as an alivename and the name of the local host will be appended, resulting in a shortname. Nodenames longer than 255 characters will be truncated without warning.
Upon initialization, this class attempts to read the file .erlang.cookie in the user's home directory, and uses the trimmed first line of the file as the default cookie by those constructors lacking a cookie argument. If for any reason the file cannot be found or read, the default cookie will be set to the empty string (""). The location of a user's home directory is determined using the system property "user.home", which may not be automatically set on all platforms.
Modifier and Type | Field and Description |
---|---|
protected org.apache.commons.logging.Log |
logger |
Constructor and Description |
---|
SingleConnectionFactory(String selfNodeName,
String peerNodeName) |
SingleConnectionFactory(String selfNodeName,
String cookie,
String peerNodeName) |
Modifier and Type | Method and Description |
---|---|
void |
afterPropertiesSet() |
protected void |
closeConnection(Connection connection)
Close the given Connection.
|
Connection |
createConnection() |
void |
destroy()
Close the underlying shared connection.
|
protected Connection |
doCreateConnection()
Create a JInterface Connection via this class's ConnectionFactory.
|
protected Connection |
getSharedConnectionProxy(Connection target)
Wrap the given OtpConnection with a proxy that delegates every method
call to it but suppresses close calls.
|
void |
initConnection() |
boolean |
isUniqueSelfNodeName() |
protected void |
prepareConnection(Connection con) |
void |
resetConnection()
Reset the underlying shared Connection, to be reinitialized on next access.
|
void |
setUniqueSelfNodeName(boolean uniqueSelfNodeName) |
public SingleConnectionFactory(String selfNodeName, String cookie, String peerNodeName)
public boolean isUniqueSelfNodeName()
public void setUniqueSelfNodeName(boolean uniqueSelfNodeName)
public Connection createConnection() throws UnknownHostException, com.ericsson.otp.erlang.OtpAuthException
createConnection
in interface ConnectionFactory
UnknownHostException
com.ericsson.otp.erlang.OtpAuthException
public void initConnection() throws IOException, com.ericsson.otp.erlang.OtpAuthException
IOException
com.ericsson.otp.erlang.OtpAuthException
public void destroy()
As this bean implements DisposableBean, a bean factory will automatically invoke this on destruction of its cached singletons.
destroy
in interface org.springframework.beans.factory.DisposableBean
public void resetConnection()
protected void closeConnection(Connection connection)
connection
- the Connection to closeprotected Connection doCreateConnection() throws IOException, com.ericsson.otp.erlang.OtpAuthException
com.ericsson.otp.erlang.OtpAuthException
- Any.IOException
- Any.protected void prepareConnection(Connection con) throws IOException
IOException
protected Connection getSharedConnectionProxy(Connection target)
target
- the original Connection to wrappublic void afterPropertiesSet()
afterPropertiesSet
in interface org.springframework.beans.factory.InitializingBean