Class TcpTransportServer
- java.lang.Object
-
- org.apache.activemq.util.ServiceSupport
-
- org.apache.activemq.transport.TransportServerSupport
-
- org.apache.activemq.transport.TransportServerThreadSupport
-
- org.apache.activemq.transport.tcp.TcpTransportServer
-
- All Implemented Interfaces:
Runnable
,Service
,TransportServer
,ServiceListener
- Direct Known Subclasses:
AutoTcpTransportServer
,NIOSSLTransportServer
,SslTransportServer
public class TcpTransportServer extends TransportServerThreadSupport implements ServiceListener
A TCP based implementation ofTransportServer
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
TcpTransportServer.TransportInfo
-
Field Summary
Fields Modifier and Type Field Description protected boolean
allowLinkStealing
protected int
backlog
protected int
connectionTimeout
protected AtomicInteger
currentTransportCount
protected boolean
dynamicManagement
Specifies if the TransportLogger will be manageable by JMX or not.protected int
jmxPort
protected String
logWriterName
Name of the LogWriter implementation to use.protected int
maximumConnections
The maximum number of sockets allowed for this serverprotected long
maxInactivityDuration
protected long
maxInactivityDurationInitalDelay
protected int
minmumWireFormatVersion
protected Selector
selector
protected ServerSocket
serverSocket
protected ServerSocketFactory
serverSocketFactory
protected int
socketBufferSize
protected Thread
socketHandlerThread
protected BlockingQueue<Socket>
socketQueue
protected int
soTimeout
protected boolean
startLogging
startLogging=true -> the TransportLogger object of the Transport stack will initially write messages to the log.protected boolean
trace
trace=true -> the Transport stack where this TcpTransport object will be, will have a TransportLogger layer trace=false -> the Transport stack where this TcpTransport object will be, will NOT have a TransportLogger layer, and therefore will never be able to print logging messages.protected TcpTransportFactory
transportFactory
protected boolean
useQueueForAccept
protected boolean
verifyHostName
protected WireFormatFactory
wireFormatFactory
-
Fields inherited from class org.apache.activemq.transport.TransportServerSupport
transportOptions
-
-
Constructor Summary
Constructors Constructor Description TcpTransportServer(TcpTransportFactory transportFactory, URI location, ServerSocketFactory serverSocketFactory)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
bind()
protected TcpTransportServer.TransportInfo
configureTransport(TcpTransportServer server, Socket socket)
protected Transport
createTransport(Socket socket, WireFormat format)
Allow derived classes to override the Transport implementation that this transport server creates.protected void
doHandleSocket(Socket socket)
protected void
doStart()
protected void
doStop(ServiceStopper stopper)
int
getBacklog()
int
getConnectionTimeout()
AtomicInteger
getCurrentTransportCount()
int
getJmxPort()
String
getLogWriterName()
int
getMaximumConnections()
long
getMaxInactivityDuration()
long
getMaxInactivityDurationInitalDelay()
int
getMinmumWireFormatVersion()
InetSocketAddress
getSocketAddress()
int
getSocketBufferSize()
int
getSoTimeout()
WireFormatFactory
getWireFormatFactory()
protected void
handleSocket(Socket socket)
boolean
isAllowLinkStealing()
Some protocols allow link stealing by default (if 2 connections have the same clientID - the youngest wins).boolean
isDynamicManagement()
boolean
isSslServer()
For TransportServers that provide SSL connections to their connected peers they should return true here if and only if they populate the ConnectionInfo command presented to the Broker with the peers certificate chain so that the broker knows it can use that information to authenticate the connected peer.boolean
isStartLogging()
boolean
isTrace()
boolean
isUseQueueForAccept()
protected String
resolveHostName(ServerSocket socket, InetAddress bindAddress)
void
run()
pull Sockets from the ServerSocketvoid
setAllowLinkStealing(boolean allowLinkStealing)
void
setBacklog(int backlog)
void
setBrokerInfo(BrokerInfo brokerInfo)
Associates a broker info with the transport server so that the transport can do discovery advertisements of the broker.void
setConnectionTimeout(int connectionTimeout)
void
setDynamicManagement(boolean useJmx)
void
setJmxPort(int jmxPort)
void
setLogWriterName(String logFormat)
void
setMaximumConnections(int maximumConnections)
void
setMaxInactivityDuration(long maxInactivityDuration)
void
setMaxInactivityDurationInitalDelay(long maxInactivityDurationInitalDelay)
void
setMinmumWireFormatVersion(int minmumWireFormatVersion)
void
setSocketBufferSize(int socketBufferSize)
void
setSoTimeout(int soTimeout)
void
setStartLogging(boolean startLogging)
void
setTrace(boolean trace)
void
setUseQueueForAccept(boolean useQueueForAccept)
void
setWireFormatFactory(WireFormatFactory wireFormatFactory)
void
started(Service service)
void
stopped(Service service)
String
toString()
-
Methods inherited from class org.apache.activemq.transport.TransportServerThreadSupport
getStackSize, isDaemon, isJoinOnStop, setDaemon, setJoinOnStop, setStackSize
-
Methods inherited from class org.apache.activemq.transport.TransportServerSupport
getAcceptListener, getBindLocation, getConnectURI, onAcceptError, setAcceptListener, setBindLocation, setConnectURI, setTransportOption
-
Methods inherited from class org.apache.activemq.util.ServiceSupport
addServiceListener, dispose, isStarted, isStopped, isStopping, postStop, preStart, removeServiceListener, start, stop
-
-
-
-
Field Detail
-
serverSocket
protected volatile ServerSocket serverSocket
-
selector
protected volatile Selector selector
-
backlog
protected int backlog
-
wireFormatFactory
protected WireFormatFactory wireFormatFactory
-
transportFactory
protected final TcpTransportFactory transportFactory
-
maxInactivityDuration
protected long maxInactivityDuration
-
maxInactivityDurationInitalDelay
protected long maxInactivityDurationInitalDelay
-
minmumWireFormatVersion
protected int minmumWireFormatVersion
-
useQueueForAccept
protected boolean useQueueForAccept
-
allowLinkStealing
protected boolean allowLinkStealing
-
verifyHostName
protected boolean verifyHostName
-
trace
protected boolean trace
trace=true -> the Transport stack where this TcpTransport object will be, will have a TransportLogger layer trace=false -> the Transport stack where this TcpTransport object will be, will NOT have a TransportLogger layer, and therefore will never be able to print logging messages. This parameter is most probably set in Connection or TransportConnector URIs.
-
soTimeout
protected int soTimeout
-
socketBufferSize
protected int socketBufferSize
-
connectionTimeout
protected int connectionTimeout
-
logWriterName
protected String logWriterName
Name of the LogWriter implementation to use. Names are mapped to classes in the resources/META-INF/services/org/apache/activemq/transport/logwriters directory. This parameter is most probably set in Connection or TransportConnector URIs.
-
dynamicManagement
protected boolean dynamicManagement
Specifies if the TransportLogger will be manageable by JMX or not. Also, as long as there is at least 1 TransportLogger which is manageable, a TransportLoggerControl MBean will me created.
-
startLogging
protected boolean startLogging
startLogging=true -> the TransportLogger object of the Transport stack will initially write messages to the log. startLogging=false -> the TransportLogger object of the Transport stack will initially NOT write messages to the log. This parameter only has an effect if trace == true. This parameter is most probably set in Connection or TransportConnector URIs.
-
jmxPort
protected int jmxPort
-
serverSocketFactory
protected final ServerSocketFactory serverSocketFactory
-
socketQueue
protected final BlockingQueue<Socket> socketQueue
-
socketHandlerThread
protected Thread socketHandlerThread
-
maximumConnections
protected int maximumConnections
The maximum number of sockets allowed for this server
-
currentTransportCount
protected final AtomicInteger currentTransportCount
-
-
Constructor Detail
-
TcpTransportServer
public TcpTransportServer(TcpTransportFactory transportFactory, URI location, ServerSocketFactory serverSocketFactory) throws IOException, URISyntaxException
- Throws:
IOException
URISyntaxException
-
-
Method Detail
-
bind
public void bind() throws IOException
- Throws:
IOException
-
getWireFormatFactory
public WireFormatFactory getWireFormatFactory()
- Returns:
- Returns the wireFormatFactory.
-
setWireFormatFactory
public void setWireFormatFactory(WireFormatFactory wireFormatFactory)
- Parameters:
wireFormatFactory
- The wireFormatFactory to set.
-
setBrokerInfo
public void setBrokerInfo(BrokerInfo brokerInfo)
Associates a broker info with the transport server so that the transport can do discovery advertisements of the broker.- Specified by:
setBrokerInfo
in interfaceTransportServer
- Parameters:
brokerInfo
-
-
getMaxInactivityDuration
public long getMaxInactivityDuration()
-
setMaxInactivityDuration
public void setMaxInactivityDuration(long maxInactivityDuration)
-
getMaxInactivityDurationInitalDelay
public long getMaxInactivityDurationInitalDelay()
-
setMaxInactivityDurationInitalDelay
public void setMaxInactivityDurationInitalDelay(long maxInactivityDurationInitalDelay)
-
getMinmumWireFormatVersion
public int getMinmumWireFormatVersion()
-
setMinmumWireFormatVersion
public void setMinmumWireFormatVersion(int minmumWireFormatVersion)
-
isTrace
public boolean isTrace()
-
setTrace
public void setTrace(boolean trace)
-
getLogWriterName
public String getLogWriterName()
-
setLogWriterName
public void setLogWriterName(String logFormat)
-
isDynamicManagement
public boolean isDynamicManagement()
-
setDynamicManagement
public void setDynamicManagement(boolean useJmx)
-
setJmxPort
public void setJmxPort(int jmxPort)
-
getJmxPort
public int getJmxPort()
-
isStartLogging
public boolean isStartLogging()
-
setStartLogging
public void setStartLogging(boolean startLogging)
-
getBacklog
public int getBacklog()
- Returns:
- the backlog
-
setBacklog
public void setBacklog(int backlog)
- Parameters:
backlog
- the backlog to set
-
isUseQueueForAccept
public boolean isUseQueueForAccept()
- Returns:
- the useQueueForAccept
-
setUseQueueForAccept
public void setUseQueueForAccept(boolean useQueueForAccept)
- Parameters:
useQueueForAccept
- the useQueueForAccept to set
-
createTransport
protected Transport createTransport(Socket socket, WireFormat format) throws IOException
Allow derived classes to override the Transport implementation that this transport server creates.- Parameters:
socket
-format
-- Returns:
- a new Transport instance.
- Throws:
IOException
-
resolveHostName
protected String resolveHostName(ServerSocket socket, InetAddress bindAddress) throws UnknownHostException
- Parameters:
socket
-bindAddress
-- Returns:
- real hostName
- Throws:
UnknownHostException
-
doStart
protected void doStart() throws Exception
- Overrides:
doStart
in classTransportServerThreadSupport
- Throws:
Exception
-
doStop
protected void doStop(ServiceStopper stopper) throws Exception
- Overrides:
doStop
in classTransportServerThreadSupport
- Throws:
Exception
-
getSocketAddress
public InetSocketAddress getSocketAddress()
- Specified by:
getSocketAddress
in interfaceTransportServer
- Returns:
- The socket address that this transport is accepting connections on or null if this does not or is not currently accepting connections on a socket.
-
handleSocket
protected void handleSocket(Socket socket)
-
doHandleSocket
protected final void doHandleSocket(Socket socket)
-
configureTransport
protected TcpTransportServer.TransportInfo configureTransport(TcpTransportServer server, Socket socket) throws Exception
- Throws:
Exception
-
getSoTimeout
public int getSoTimeout()
-
setSoTimeout
public void setSoTimeout(int soTimeout)
-
getSocketBufferSize
public int getSocketBufferSize()
-
setSocketBufferSize
public void setSocketBufferSize(int socketBufferSize)
-
getConnectionTimeout
public int getConnectionTimeout()
-
setConnectionTimeout
public void setConnectionTimeout(int connectionTimeout)
-
getMaximumConnections
public int getMaximumConnections()
- Returns:
- the maximumConnections
-
setMaximumConnections
public void setMaximumConnections(int maximumConnections)
- Parameters:
maximumConnections
- the maximumConnections to set
-
getCurrentTransportCount
public AtomicInteger getCurrentTransportCount()
-
started
public void started(Service service)
- Specified by:
started
in interfaceServiceListener
-
stopped
public void stopped(Service service)
- Specified by:
stopped
in interfaceServiceListener
-
isSslServer
public boolean isSslServer()
Description copied from interface:TransportServer
For TransportServers that provide SSL connections to their connected peers they should return true here if and only if they populate the ConnectionInfo command presented to the Broker with the peers certificate chain so that the broker knows it can use that information to authenticate the connected peer.- Specified by:
isSslServer
in interfaceTransportServer
- Returns:
- true if this transport server provides SSL level security over its connections.
-
isAllowLinkStealing
public boolean isAllowLinkStealing()
Description copied from interface:TransportServer
Some protocols allow link stealing by default (if 2 connections have the same clientID - the youngest wins). This is the default for AMQP and MQTT. However, JMS 1.1 spec requires the opposite- Specified by:
isAllowLinkStealing
in interfaceTransportServer
- Overrides:
isAllowLinkStealing
in classTransportServerSupport
- Returns:
- true if allow link stealing is enabled.
-
setAllowLinkStealing
public void setAllowLinkStealing(boolean allowLinkStealing)
- Overrides:
setAllowLinkStealing
in classTransportServerSupport
-
-