Is there an easy way to set the SSL timeout value used by the Transport
classes? I have a client application that can connect up via SSL fine
unless it runs on a slow machine. I set javax.net.debug=all and can see
that on the SSL connection that fails the timeout value is getting set to
500 ms:
sslsocket: SSLSocket.setSoTimeout()
sslsocket: timeout = 500
Here as a trace excerpt from my client application. Anything prefixed with
a "PT:" is a log statement I added to the ActiveMQ source. The second
sslsocket: timeout value listed is the one I'm concerned with (it should be
in bold):
04/14/06 11:37:12.844 DEBUG [Thread-0] - Creating ActiveMQConnectionFactory
using URL: ssl://10.0.1.9:3066
04/14/06 11:37:13.568 DEBUG [Thread-0] - Creating ActiveMQ Connection.
04/14/06 11:37:13.573 DEBUG [Thread-0] - PT: Enter
ActiveMQConnectionFactory.createActiveMQConnection()
04/14/06 11:37:13.574 DEBUG [Thread-0] - PT: Creating Transport instance by
using TransportFactory to connect to broker URL "ssl://10.0.1.9:3066".
04/14/06 11:37:13.805 DEBUG [Thread-0] - PT: Enter
TransportFactory.connect(URI location, Executor ex)
04/14/06 11:37:13.813 DEBUG [Thread-0] - PT: Enter
TransportFactory.findTransportFactory(URI location)
04/14/06 11:37:13.814 DEBUG [Thread-0] - PT: Getting Scheme from
locationURI: ssl://10.0.1.9:3066
04/14/06 11:37:13.815 DEBUG [Thread-0] - PT: Getting TransportFactory for
scheme "ssl".
04/14/06 11:37:13.816 DEBUG [Thread-0] - PT: TransportFactory is null.
04/14/06 11:37:13.817 DEBUG [Thread-0] - PT: Attempting to create new
TransportFactory for scheme "ssl".
04/14/06 11:37:14.005 DEBUG [Thread-0] - PT: Adding newly created
TransportFactory to TransportFactory list.
04/14/06 11:37:14.013 DEBUG [Thread-0] - PT: Returning TransportFactroy for
scheme "ssl".
04/14/06 11:37:14.014 DEBUG [Thread-0] - PT: Leave
TransportFactory.findTransportFactory(URI location)
04/14/06 11:37:14.015 DEBUG [Thread-0] - PT: Leave
TransportFactory.connect(URI location, Executor ex)
04/14/06 11:37:14.016 DEBUG [Thread-0] - PT: Enter
TransportFactory.createWireFormat(Map options)
04/14/06 11:37:14.022 DEBUG [Thread-0] - PT: Creating WireFormatFactory.
04/14/06 11:37:14.026 DEBUG [Thread-0] - PT: Enter
TransportFactory.createWireFormatFactory(Map options)
04/14/06 11:37:14.027 DEBUG [Thread-0] - PT: WireFormat not specified in
options.
04/14/06 11:37:14.033 DEBUG [Thread-0] - PT: Getting default WireFormat.
04/14/06 11:37:14.033 DEBUG [Thread-0] - PT: Creating new WireFormatFactory
instance for WireFormat "default".
04/14/06 11:37:14.073 DEBUG [Thread-0] - PT: Setting properties of
IntrospectionSupport.
04/14/06 11:37:14.103 DEBUG [Thread-0] - PT: Leave
TransportFactory.createWireFormatFactory(Map options)
04/14/06 11:37:14.106 DEBUG [Thread-0] - PT: Creating WireFormat.
04/14/06 11:37:14.986 DEBUG [Thread-0] - PT: Leave
TransportFactory.createWireFormat(Map options)
sslctx: Context created.
sslctx: Supported protocols:
{
SSLv2
SSLv3
TLSv1
}
sslctx: Supported cipher suites:
{
SSL_RSA_WITH_RC4_128_MD5
SSL_RSA_WITH_RC4_128_SHA
SSL_RSA_WITH_AES_CBC_128_SHA
SSL_RSA_WITH_AES_CBC_256_SHA
SSL_RSA_WITH_3DES_EDE_CBC_SHA
SSL_RSA_WITH_DES_CBC_SHA
SSL_RSA_WITH_DES_CBC_MD5
SSL_RSA_WITH_3DES_EDE_CBC_MD5
SSL_RSA_WITH_RC2_CBC_128_MD5
SSL_RSA_EXPORT_WITH_RC4_40_MD5
SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
SSL_RSA_WITH_NULL_MD5
SSL_RSA_WITH_NULL_SHA
}
sslctx: Default cipher suites:
{
SSL_RSA_WITH_RC4_128_MD5
SSL_RSA_WITH_RC4_128_SHA
SSL_RSA_WITH_AES_CBC_128_SHA
SSL_RSA_WITH_AES_CBC_256_SHA
SSL_RSA_WITH_3DES_EDE_CBC_SHA
SSL_RSA_WITH_DES_CBC_SHA
SSL_RSA_WITH_DES_CBC_MD5
SSL_RSA_WITH_3DES_EDE_CBC_MD5
SSL_RSA_WITH_RC2_CBC_128_MD5
SSL_RSA_EXPORT_WITH_RC4_40_MD5
SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
}
sslctx: SSLContext.init()
sslctx: KeyManager[0] class = com.ibm.jsse.bg
sslctx: TrustManager[0] class = com.ibm.jsse.bi
sslctx: SSLContext.getSocketFactory()
socketfactory: Socket factory created.
socketfactory: SSLSocketFactory.createSocket()
socketfactory: host = 10.0.1.9
socketfactory: port = 3066
sslsocket: SSL Socket created.
sslsocket: host = 10.0.1.9
sslsocket: port = 3066
sslctx: SSLContextImpl.isInitialized()
sslctx: SSLContextImpl.initialize()
sslctx: SSLConfiguration = null
sslctx: SSLContextImpl.getCertifcateChainAlias()
sslctx: Certificate authorities list = null
sslctx: Server = true
sslctx: SSLContextImpl.getCertificateChain()
sslctx: Alias = compliancemonitor
sslctx: SSLContextImpl.getPrivateKey()
sslctx: Alias = compliancemonitor
sslctx: SSLContextImpl.getDefaultCipherSuites()
sslctx: SSLContextImpl.getSupportedProtocols()
sslsocket: SSLSocket.setEnabledProtocols()
sslsocket: protocols =
{
SSLv2
SSLv3
TLSv1
}
sslctx: SSLContextImpl.validateProtocols()
sslctx: Protocols:
{
SSLv2
SSLv3
TLSv1
}
sslsocket: SSLSocketImpl.init()
sslsocket: roleIsServer = false
sslsocket: enabledCipherSuites =
{
SSL_RSA_WITH_RC4_128_MD5
SSL_RSA_WITH_RC4_128_SHA
SSL_RSA_WITH_AES_CBC_128_SHA
SSL_RSA_WITH_AES_CBC_256_SHA
SSL_RSA_WITH_3DES_EDE_CBC_SHA
SSL_RSA_WITH_DES_CBC_SHA
SSL_RSA_WITH_DES_CBC_MD5
SSL_RSA_WITH_3DES_EDE_CBC_MD5
SSL_RSA_WITH_RC2_CBC_128_MD5
SSL_RSA_EXPORT_WITH_RC4_40_MD5
SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
}
sslsocket: enabledProtocols =
{
SSLv2
SSLv3
TLSv1
}
sslsocket: SSLSocket.connect()
sslsocket: endpoint = /10.0.1.9:3066
sslsocket: timeout = 0
sslsocket: SSLSocket.isClosed()
sslsocket: SSLSocket.isConnected()
sslsocket: SSLSocket.getInputStream()
sslsocket: SSLSocket.isClosed()
sslinput: Input stream created.
sslsess: SSLSession.getCipherSuite()
sslsess: cipherSuite = SSL_NULL_WITH_NULL_NULL
sslsocket: SSLSocket.isConnected()
sslinput: conn = [SSL_NULL_WITH_NULL_NULL:
Socket[addr=10.0.1.9/10.0.1.9,port=3066,localport=9196]]
sslsocket: SSLSocket.getOutputStream()
sslsocket: SSLSocket.isClosed()
ssloutput: Output stream created.
sslsess: SSLSession.getCipherSuite()
sslsess: cipherSuite = SSL_NULL_WITH_NULL_NULL
sslsocket: SSLSocket.isConnected()
ssloutput: conn = [SSL_NULL_WITH_NULL_NULL:
Socket[addr=10.0.1.9/10.0.1.9,port=3066,localport=9196]]
sslsocket: SSLSocket.setReceiveBufferSize()
sslsocket: size = 65536
sslsocket: SSLSocket.isClosed()
sslsocket: SSLSocket.setSendBufferSize()
sslsocket: size = 65536
sslsocket: SSLSocket.isClosed()
04/14/06 11:37:16.273 DEBUG [Thread-0] - PT: Creating ActiveMQConnection
using Transport instance and Factory Stats stats{ unit:
many startTime: 1145039833545 lastSampleTime: 1145039833545 description:
Used only as container, not Statistic }
04/14/06 11:37:16.613 DEBUG [Thread-0] - PT: Setting connection username:
jasonp
04/14/06 11:37:16.614 DEBUG [Thread-0] - PT: Setting connection password.
04/14/06 11:37:16.615 DEBUG [Thread-0] - PT: Setting connection
PrefetchPolicy: [EMAIL PROTECTED]
04/14/06 11:37:16.616 DEBUG [Thread-0] - PT: Setting connection
DisableTimeStampsByDefault: false
04/14/06 11:37:16.617 DEBUG [Thread-0] - PT: Setting connection
OnSendPrepareMessageBody: true
04/14/06 11:37:16.623 DEBUG [Thread-0] - PT: Setting connection
OptimizedMessageDispatch: true
04/14/06 11:37:16.624 DEBUG [Thread-0] - PT: Setting connection
CopyMessageOnSend: true
04/14/06 11:37:16.625 DEBUG [Thread-0] - PT: Setting connection
UseCompression: false
04/14/06 11:37:16.626 DEBUG [Thread-0] - PT: Setting connection
ObjectMessageSerializationDefered: false
04/14/06 11:37:16.627 DEBUG [Thread-0] - PT: Setting connection
AsyncDispatch: true
04/14/06 11:37:16.633 DEBUG [Thread-0] - PT: Setting connection
UseAsyncSend: false
04/14/06 11:37:16.634 DEBUG [Thread-0] - PT: Setting connection
UseRetroactiveConsumer: false
04/14/06 11:37:16.635 DEBUG [Thread-0] - PT: Setting connection
RedeliveryPolicy: [EMAIL PROTECTED]
04/14/06 11:37:16.636 DEBUG [Thread-0] - PT: Starting Transport.
04/14/06 11:37:16.637 DEBUG [Thread-0] - PT: Transport Class: class
org.apache.activemq.transport.ResponseCorrelator
sslsocket: SSLSocket.isBound()
sslsocket: SSLSocket.getLocalAddress()
sslsocket: SSLSocket.isBound()
ssloutput: SSLOutputStream.write()
ssloutput: data =
Invalid buffer
sslsocket: SSLSocketImpl.write()
sslsocket: len = 22
sslsocket: SSLSocket.startHandshake()
sslsocket: SSLSocket.isClosed()
sslsocket: SSLServerSocket.getLocalPort()
sslsocket: SSLSocket.isBound()
sslsocket: SSLSocket.isConnected()
sslsocket: SSLServerSocket.getInetAddress()
sslsocket: SSLSocket.isConnected()
sslsocket: SSLServerSocket.getPort()
sslsocket: SSLSocket.isConnected()
sslsocket: SSLSocket.setSoTimeout()
sslsocket: timeout = 500
sslctx: SSLContextImpl.validateCertificateChain()
sslctx: Certificate chain = [EMAIL PROTECTED]
sslctx: Certificate[0] = [EMAIL PROTECTED]
sslctx: Server = false
sslsocket: SSLServerSocket.getHost()
sslsess: Session created.
04/14/06 11:37:16.896 DEBUG [Thread-0] - Leave
ActiveMQConnectionFactory.createActiveMQConnection()
04/14/06 11:37:16.897 DEBUG [Thread-0] - Registering as an ExceptionListener
for ActiveMQConnection.
04/14/06 11:37:16.902 DEBUG [Thread-0] - Starting ActiveMQ Connection.
sslsocket: SSLSocket.isClosed()
sslinput: SSLInputStream.read()
sslinput: off = 0
sslinput: len = 65536
sslsocket: SSLSocketImpl.read()
sslsocket: off = 0
sslsocket: len = 65536
sslinput: data =
Invalid buffer
sslinput: rc = 22
04/14/06 11:37:16.940 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: WireFormatInfo:
04/14/06 11:37:16.946 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: CommandId: 0
04/14/06 11:37:16.947 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: Options: 5
04/14/06 11:37:16.948 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: Version: 1
04/14/06 11:37:16.949 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: DataStructureType: 1
04/14/06 11:37:16.950 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: Magic: [EMAIL PROTECTED]
04/14/06 11:37:16.953 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: isBrokerInfo: false
04/14/06 11:37:16.954 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: isCacheEnabled: true
04/14/06 11:37:16.955 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: isMarshallAware: false
04/14/06 11:37:16.956 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: isMessage: false
04/14/06 11:37:16.956 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: isMessageAck: false
04/14/06 11:37:16.963 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: isMessageDispatch: false
04/14/06 11:37:16.964 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: isMessageDispatchNotification: false
04/14/06 11:37:16.964 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: isResponse: false
04/14/06 11:37:16.965 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: isResponseRequired: false
04/14/06 11:37:16.966 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: isShutdownInfo: false
04/14/06 11:37:16.967 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: isStackTraceEnabled: true
04/14/06 11:37:16.973 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: isTcpNoDelay: false
04/14/06 11:37:16.974 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: isValid: true
04/14/06 11:37:16.975 DEBUG [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - PT: isWireFormatInfo: true
sslinput: SSLInputStream.read()
sslinput: off = 22
sslinput: len = 65514
ssloutput: SSLOutputStream.write()
ssloutput: data =
Invalid buffer
sslsocket: SSLSocketImpl.write()
sslsocket: len = 126
sslsocket: SSLSocketImpl.read()
sslsocket: off = 22
sslsocket: len = 65514
sslinput: data =
N Þ | ID:Jasonp-2266-1145033060140-0:0 ssl://localhost:3066
localhost
sslinput: rc = 82
sslinput: SSLInputStream.read()
sslinput: off = 104
sslinput: len = 65432
sslsocket: SSLSocketImpl.read()
sslsocket: off = 104
sslsocket: len = 65432
04/14/06 11:37:17.554 ERROR [Socket Connection: /10.0.1.178:9196 ->
10.0.1.9/10.0.1.9:3066] - ActiveMQ JMS Exception occured.
javax.jms.JMSException: Read timed out
at java.lang.Throwable.<init>(Throwable.java:195)
at java.lang.Exception.<init>(Exception.java:41)
at javax.jms.JMSException.<init>(JMSException.java:35)
at javax.jms.JMSException.<init>(JMSException.java:41)
at
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:45)
at
org.apache.activemq.ActiveMQConnection.onAsyncException(ActiveMQConnection.java:1327)
at
org.apache.activemq.ActiveMQConnection.onException(ActiveMQConnection.java:1337)
at
org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:102)
at
org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:102)
at
org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:102)
at
org.apache.activemq.transport.InactivityMonitor.onException(InactivityMonitor.java:96)
at
org.apache.activemq.transport.activeio.ActiveIOTransport$1.onError(ActiveIOTransport.java:100)
at
org.activeio.command.AsyncChannelToAsyncCommandChannel$1.onPacketError(AsyncChannelToAsyncCommandChannel.java:78)
at
org.activeio.FilterAsyncChannel.onPacketError(FilterAsyncChannel.java:94)
at
org.activeio.FilterAsyncChannel.onPacketError(FilterAsyncChannel.java:94)
at
org.activeio.adapter.SyncToAsyncChannel.run(SyncToAsyncChannel.java:159)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:643)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:668)
at java.lang.Thread.run(Thread.java:534)
Caused by: java.io.InterruptedIOException: Read timed out
at java.lang.Throwable.<init>(Throwable.java:195)
at java.lang.Exception.<init>(Exception.java:41)
at java.io.IOException.<init>(IOException.java:40)
at
java.io.InterruptedIOException.<init>(InterruptedIOException.java:45)
at
com.ibm.as400.ibmonly.net.ssl.SSLSocketImpl.read(SSLSocketImpl.java:652)
at
com.ibm.as400.ibmonly.net.ssl.SSLInputStream.read(SSLInputStream.java:133)
at
org.activeio.net.SocketStreamChannel.read(SocketStreamChannel.java:208)
at
org.activeio.net.SocketSyncChannel.read(SocketSyncChannel.java:79)
at
org.activeio.adapter.SyncToAsyncChannel.run(SyncToAsyncChannel.java:145)
... 3 more
ssloutput: SSLOutputStream.close()
sslsocket: SSLServerSocket.close()
sslsocket: SSLSocket.isClosed()
sslinput: SSLInputStream.close()
sslsocket: SSLServerSocket.close()
sslsocket: SSLServerSocket.close()
--
View this message in context:
http://www.nabble.com/Setting-SSL-timeout-value-t1451458.html#a3922290
Sent from the ActiveMQ - User forum at Nabble.com.