Details
Description
When I ran my application under Vista I get this exception:
Exception in thread "Thread-4" org.apache.mina.common.RuntimeIOException: java.net.SocketException: Invalid argument: sun.nio.ch.Net.setIntOption
at org.apache.mina.transport.socket.nio.SocketSessionImpl$SessionConfigImpl.setKeepAlive(SocketSessionImpl.java:252)
at org.apache.mina.transport.socket.nio.SocketSessionImpl.<init>(SocketSessionImpl.java:94)
at org.apache.mina.transport.socket.nio.SocketConnector.newSession(SocketConnector.java:350)
at org.apache.mina.transport.socket.nio.SocketConnector.processSessions(SocketConnector.java:290)
at org.apache.mina.transport.socket.nio.SocketConnector.access$900(SocketConnector.java:53)
at org.apache.mina.transport.socket.nio.SocketConnector$Worker.run(SocketConnector.java:395)
at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:43)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.net.SocketException: Invalid argument: sun.nio.ch.Net.setIntOption
at sun.nio.ch.Net.setIntOption0(Native Method)
at sun.nio.ch.Net.setIntOption(Net.java:152)
at sun.nio.ch.SocketChannelImpl$1.setInt(SocketChannelImpl.java:372)
at sun.nio.ch.SocketOptsImpl.setBoolean(SocketOptsImpl.java:38)
at sun.nio.ch.SocketOptsImpl.keepAlive(SocketOptsImpl.java:92)
at sun.nio.ch.OptionAdaptor.setKeepAlive(OptionAdaptor.java:139)
at sun.nio.ch.SocketAdaptor.setKeepAlive(SocketAdaptor.java:322)
at org.apache.mina.transport.socket.nio.SocketSessionImpl$SessionConfigImpl.setKeepAlive(SocketSessionImpl.java:248)
... 7 more
I had to remove the following lines from the SocketSessionImpl constructor:
this.config.setKeepAlive( cfg.isKeepAlive() );
this.config.setTcpNoDelay( cfg.isTcpNoDelay() );
and now it works.
No matter if I change the configuration to let them return true or false, I keep getting the exception if I don't remove the call at all.