diff --git a/Mage.Client/src/main/resources/log4j.properties b/Mage.Client/src/main/resources/log4j.properties index 08d7f0e74f2..cdef4d6b9e0 100644 --- a/Mage.Client/src/main/resources/log4j.properties +++ b/Mage.Client/src/main/resources/log4j.properties @@ -1,5 +1,5 @@ #default levels -log4j.rootLogger=debug, console +log4j.rootLogger=info, console #console log log4j.appender.console=org.apache.log4j.ConsoleAppender diff --git a/Mage.Common/pom.xml b/Mage.Common/pom.xml index 7dde54dfa29..506977ac025 100644 --- a/Mage.Common/pom.xml +++ b/Mage.Common/pom.xml @@ -28,7 +28,7 @@ org.jboss.remoting jboss-remoting - 2.5.2.SP2 + 2.5.4.SP2 jboss @@ -38,13 +38,18 @@ jboss jboss-serialization - 4.2.2.GA + 1.0.3.GA concurrent concurrent 1.3.4 + + trove + trove + 1.0.2 + diff --git a/Mage.Common/src/mage/remote/Connection.java b/Mage.Common/src/mage/remote/Connection.java index 564df9e248e..e120a1ed60c 100644 --- a/Mage.Common/src/mage/remote/Connection.java +++ b/Mage.Common/src/mage/remote/Connection.java @@ -34,8 +34,6 @@ import java.net.InterfaceAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; -import java.util.logging.Level; -import java.util.logging.Logger; /** * @@ -52,10 +50,13 @@ public class Connection { private int proxyPort; private String proxyUsername; private String proxyPassword; + + private static final String serialization = "?serializationtype=jboss"; + private static final String transport = "bisocket"; @Override public int hashCode() { - return (host + Integer.toString(port) + proxyType.toString()).hashCode(); + return (transport + host + Integer.toString(port) + proxyType.toString()).hashCode(); } @Override @@ -69,18 +70,18 @@ public class Connection { @Override public String toString() { - return host + ":" + Integer.toString(port); + return host + ":" + Integer.toString(port) + "/" + serialization; } public String getURI() { if (host.equals("localhost")) { try { - return "bisocket://" + getLocalAddress().getHostAddress() + ":" + port; + return transport + "://" + getLocalAddress().getHostAddress() + ":" + port + "/" + serialization; } catch (SocketException ex) { // just use localhost if can't find local ip } } - return "bisocket://" + host + ":" + port; + return transport + "://" + host + ":" + port + "/" + serialization; } public ProxyType getProxyType() { diff --git a/Mage.Common/src/mage/remote/Session.java b/Mage.Common/src/mage/remote/Session.java index c93eb9ba5ef..9c379c6e42d 100644 --- a/Mage.Common/src/mage/remote/Session.java +++ b/Mage.Common/src/mage/remote/Session.java @@ -54,11 +54,14 @@ import mage.view.TournamentView; import mage.view.UserView; import org.apache.log4j.Logger; import org.jboss.remoting.Client; +import org.jboss.remoting.ConnectionListener; +import org.jboss.remoting.ConnectionValidator; import org.jboss.remoting.InvokerLocator; import org.jboss.remoting.callback.Callback; import org.jboss.remoting.callback.HandleCallbackException; import org.jboss.remoting.callback.InvokerCallbackHandler; import org.jboss.remoting.transport.bisocket.Bisocket; +import org.jboss.remoting.transport.socket.SocketWrapper; import org.jboss.remoting.transporter.TransporterClient; /** @@ -122,15 +125,25 @@ public class Session { // break; // } InvokerLocator clientLocator = new InvokerLocator(connection.getURI()); - server = (MageServer) TransporterClient.createTransporterClient(clientLocator, MageServer.class); + Map metadata = new HashMap(); + metadata.put(SocketWrapper.WRITE_TIMEOUT, "2000"); + metadata.put("generalizeSocketException", "true"); + server = (MageServer) TransporterClient.createTransporterClient(clientLocator.getLocatorURI(), MageServer.class, metadata); callbackClient = new Client(clientLocator, "callback"); callbackClient.connect(); - Map metadata = new HashMap(); - metadata.put(Bisocket.IS_CALLBACK_SERVER, "true"); + Map listenerMetadata = new HashMap(); + listenerMetadata.put(ConnectionValidator.VALIDATOR_PING_PERIOD, "5000"); + listenerMetadata.put(ConnectionValidator.VALIDATOR_PING_TIMEOUT, "2000"); + callbackClient.addConnectionListener(new ClientConnectionListener(), listenerMetadata); + + Map callbackMetadata = new HashMap(); + callbackMetadata.put(Bisocket.IS_CALLBACK_SERVER, "true"); + callbackMetadata.put(SocketWrapper.WRITE_TIMEOUT, "2000"); + callbackMetadata.put("generalizeSocketException", "true"); CallbackHandler callbackHandler = new CallbackHandler(); - callbackClient.addListener(callbackHandler, metadata); + callbackClient.addListener(callbackHandler, callbackMetadata); this.sessionId = callbackClient.getSessionId(); boolean registerResult = false; @@ -184,7 +197,15 @@ public class Session { client.processCallback((ClientCallback)callback.getCallbackObject()); } } - + + class ClientConnectionListener implements ConnectionListener { + @Override + public void handleConnectionException(Throwable throwable, Client client) { + logger.info("connection to server lost"); + disconnect(true); + } + } + public boolean isConnected() { if (callbackClient == null) return false; diff --git a/Mage.Server/pom.xml b/Mage.Server/pom.xml index 54c90225b70..a86f559402b 100644 --- a/Mage.Server/pom.xml +++ b/Mage.Server/pom.xml @@ -39,11 +39,6 @@ jaxb-impl 2.1.12 - - org.jboss.remoting - jboss-remoting - 2.5.2.SP2 - log4j log4j @@ -110,26 +105,6 @@ ${project.version} runtime - - jboss - jboss-common-core - 2.2.16.GA - - - jboss - jboss-serialization - 4.2.2.GA - - - concurrent - concurrent - 1.3.4 - - - jboss - jboss-jmx - 4.2.2.GA - diff --git a/Mage.Server/src/main/java/mage/server/Main.java b/Mage.Server/src/main/java/mage/server/Main.java index 5994a39f4fa..31bfcd6cf52 100644 --- a/Mage.Server/src/main/java/mage/server/Main.java +++ b/Mage.Server/src/main/java/mage/server/Main.java @@ -103,21 +103,19 @@ public class Main { adminPassword = arg.replace(adminPasswordArg, ""); } } - String host = config.getServerAddress(); - int port = config.getPort(); + Connection connection = new Connection(); + connection.setHost(config.getServerAddress()); + connection.setPort(config.getPort()); try { - if (host.equals("localhost")) - host = Connection.getLocalAddress().getHostAddress(); - String locatorURI = "bisocket://" + host + ":" + port; - InvokerLocator serverLocator = new InvokerLocator(locatorURI); + InvokerLocator serverLocator = new InvokerLocator(connection.getURI()); server = new MageTransporterServer(serverLocator, new MageServerImpl(adminPassword, testMode), MageServer.class.getName(), new MageServerInvocationHandler()); server.start(); - logger.info("Started MAGE server - listening on " + host + ":" + port); + logger.info("Started MAGE server - listening on " + connection.toString()); if (testMode) logger.info("MAGE server running in test mode"); } catch (Exception ex) { - logger.fatal("Failed to start server - " + host + ":" + port, ex); + logger.fatal("Failed to start server - " + connection.toString(), ex); } }