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);
}
}