[jboss-cvs] JBoss Messaging SVN: r3312 - in projects/jbm-mina: src/main/org/jboss/messaging/remoting and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Nov 12 08:50:16 EST 2007
Author: jmesnil
Date: 2007-11-12 08:50:16 -0500 (Mon, 12 Nov 2007)
New Revision: 3312
Modified:
projects/jbm-mina/.classpath
projects/jbm-mina/src/main/org/jboss/messaging/remoting/RemoteDispatcher.java
projects/jbm-mina/src/main/org/jboss/messaging/remoting/internal/RemoteDispatcherImpl.java
projects/jbm-mina/tests/src/org/jboss/messaging/remoting/TestSupport.java
Log:
* added support for SSL (using mina-example's BogusSslContextFactory)
Modified: projects/jbm-mina/.classpath
===================================================================
--- projects/jbm-mina/.classpath 2007-11-12 09:25:50 UTC (rev 3311)
+++ projects/jbm-mina/.classpath 2007-11-12 13:50:16 UTC (rev 3312)
@@ -13,5 +13,6 @@
<classpathentry combineaccessrules="false" kind="src" path="/asyncweb-core"/>
<classpathentry combineaccessrules="false" kind="src" path="/mina-filter-codec-http"/>
<classpathentry kind="lib" path="/jboss-messaging/thirdparty/jbossas/core-libs/lib/jboss-common.jar"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/mina-example"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Modified: projects/jbm-mina/src/main/org/jboss/messaging/remoting/RemoteDispatcher.java
===================================================================
--- projects/jbm-mina/src/main/org/jboss/messaging/remoting/RemoteDispatcher.java 2007-11-12 09:25:50 UTC (rev 3311)
+++ projects/jbm-mina/src/main/org/jboss/messaging/remoting/RemoteDispatcher.java 2007-11-12 13:50:16 UTC (rev 3312)
@@ -13,8 +13,10 @@
public void connect(int port, TransportType transport) throws Exception;
- public void disconnect() throws Exception;
+ public void connect(int port, TransportType transport, boolean useSSL) throws Exception;
+ public boolean disconnect() throws Exception;
+
public void register(PacketHandler handler);
public void unregister(String handlerID);
Modified: projects/jbm-mina/src/main/org/jboss/messaging/remoting/internal/RemoteDispatcherImpl.java
===================================================================
--- projects/jbm-mina/src/main/org/jboss/messaging/remoting/internal/RemoteDispatcherImpl.java 2007-11-12 09:25:50 UTC (rev 3311)
+++ projects/jbm-mina/src/main/org/jboss/messaging/remoting/internal/RemoteDispatcherImpl.java 2007-11-12 13:50:16 UTC (rev 3312)
@@ -12,8 +12,13 @@
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
+import javax.net.ssl.SSLContext;
+
+import org.apache.mina.common.CloseFuture;
import org.apache.mina.common.ConnectFuture;
+import org.apache.mina.common.DefaultIoFilterChainBuilder;
import org.apache.mina.common.IoSession;
+import org.apache.mina.example.echoserver.ssl.BogusSslContextFactory;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.http.HttpProtocolCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
@@ -21,6 +26,7 @@
import org.apache.mina.filter.reqres.Request;
import org.apache.mina.filter.reqres.RequestResponseFilter;
import org.apache.mina.filter.reqres.Response;
+import org.apache.mina.filter.ssl.SslFilter;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
import org.jboss.messaging.remoting.PacketHandler;
import org.jboss.messaging.remoting.RemoteDispatcher;
@@ -33,6 +39,7 @@
{
private IoSession session;
+ private SslFilter sslFilter;
public RemoteDispatcherImpl()
{
@@ -40,10 +47,19 @@
public void connect(int port, TransportType transport) throws Exception
{
+ connect(port, transport, false);
+ }
+
+ public void connect(int port, TransportType transport, boolean useSSL)
+ throws Exception
+ {
NioSocketConnector connector = new NioSocketConnector();
connector.setConnectTimeout(CONNECTION_TIMEOUT);
+ if (useSSL)
+ addSSLSupport(connector.getFilterChain());
+
MdcInjectionFilter mdcInjectionFilter = new MdcInjectionFilter();
connector.getFilterChain().addLast("mdc", mdcInjectionFilter);
@@ -60,7 +76,8 @@
connector.getFilterChain().addLast("http_codec",
new ProtocolCodecFilter(new HttpProtocolCodecFactory(url)));
connector.getFilterChain().addLast("http_logger", new LoggingFilter());
- connector.getFilterChain().addLast("http_filter", new HTTPFilter(false));
+ connector.getFilterChain().addLast("http_filter",
+ new HTTPFilter(false));
}
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
RequestResponseFilter filter = new RequestResponseFilter(
@@ -80,11 +97,27 @@
this.session = future.getSession();
}
- public void disconnect() throws Exception
+ private void addSSLSupport(DefaultIoFilterChainBuilder chain)
+ throws Exception
{
+ this.sslFilter = new SslFilter(BogusSslContextFactory.getInstance(false));
+ sslFilter.setUseClientMode(true);
+ chain.addLast("sslFilter", sslFilter);
+ }
+
+ public boolean disconnect() throws Exception
+ {
assert session != null;
- session.close().await();
+ if (sslFilter != null)
+ {
+ sslFilter.stopSsl(session).awaitUninterruptibly();
+ // FIXME: w/o the delay, an exception is thrown:
+ // "Inbound closed before receiving peer's close_notify"
+ Thread.sleep(500);
+ }
+ CloseFuture closeFuture = session.close().awaitUninterruptibly();
+ return closeFuture.isClosed();
}
public void register(PacketHandler handler)
Modified: projects/jbm-mina/tests/src/org/jboss/messaging/remoting/TestSupport.java
===================================================================
--- projects/jbm-mina/tests/src/org/jboss/messaging/remoting/TestSupport.java 2007-11-12 09:25:50 UTC (rev 3311)
+++ projects/jbm-mina/tests/src/org/jboss/messaging/remoting/TestSupport.java 2007-11-12 13:50:16 UTC (rev 3312)
@@ -3,12 +3,14 @@
import static org.jboss.messaging.remoting.internal.TransportType.HTTP;
import static org.jboss.messaging.remoting.internal.TransportType.TCP;
-import java.io.IOException;
import java.net.InetSocketAddress;
+import org.apache.mina.common.DefaultIoFilterChainBuilder;
+import org.apache.mina.example.echoserver.ssl.BogusSslContextFactory;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.filter.logging.MdcInjectionFilter;
+import org.apache.mina.filter.ssl.SslFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
import org.jboss.messaging.remoting.internal.TransportType;
import org.jboss.messaging.remoting.transport.http.HTTPFilter;
@@ -23,10 +25,11 @@
// Constants -----------------------------------------------------
/**
- * Configurable by system property <code>transport.type</code>, default is TCP
+ * Configurable by system property <code>transport.type</code>, default is
+ * TCP
*/
public final static TransportType TRANSPORT;
-
+
// Attributes ----------------------------------------------------
NioSocketAcceptor serverAcceptor;
@@ -39,9 +42,10 @@
static
{
- String transportType = System.getProperty("transport.type", TCP.toString());
+ String transportType = System.getProperty("transport.type", TCP
+ .toString());
TRANSPORT = TransportType.valueOf(transportType);
- System.out.println("Test using transport type: " + TRANSPORT);
+ info("Default transport is " + TRANSPORT);
}
static String reverse(String text)
@@ -55,18 +59,28 @@
return buf.toString();
}
-
// Constructors --------------------------------------------------
// Public --------------------------------------------------------
- void startServer(int port, TransportType transport) throws IOException
+ void startServer(int port, TransportType transport) throws Exception
{
+ startServer(port, transport, false);
+ }
+
+ void startServer(int port, TransportType transport, boolean useSSL)
+ throws Exception
+ {
serverAcceptor = new NioSocketAcceptor();
serverHandler = new TestServerHandler();
MdcInjectionFilter mdcInjectionFilter = new MdcInjectionFilter();
serverAcceptor.getFilterChain().addLast("mdc", mdcInjectionFilter);
+
+ if (useSSL)
+ addSSLSupport(serverAcceptor.getFilterChain());
+
+ info("using " + transport);
if (transport == TCP)
{
serverAcceptor.getFilterChain().addLast("codec",
@@ -84,14 +98,29 @@
// Bind
serverAcceptor.setLocalAddress(new InetSocketAddress(port));
+ info("listening on " + port);
serverAcceptor.setHandler(serverHandler);
serverAcceptor.bind();
}
+ private void addSSLSupport(DefaultIoFilterChainBuilder chain)
+ throws Exception
+ {
+ SslFilter sslFilter = new SslFilter(BogusSslContextFactory.getInstance(true));
+ chain.addLast("sslFilter", sslFilter);
+ info("SSL enabled");
+ }
+
void startClient(int port, TransportType transport) throws Exception
{
+ startClient(port, transport, false);
+ }
+
+ void startClient(int port, TransportType transport, boolean useSSL)
+ throws Exception
+ {
clientDispatcher = RemoteDispatcherFactory.newDispatcher();
- clientDispatcher.connect(port, transport);
+ clientDispatcher.connect(port, transport, useSSL);
}
// Package protected ---------------------------------------------
@@ -100,5 +129,10 @@
// Private -------------------------------------------------------
+ private static void info(String info)
+ {
+ System.out.format("### %-50s ###\n", info);
+ }
+
// Inner classes -------------------------------------------------
}
More information about the jboss-cvs-commits
mailing list