mirror of
https://github.com/correl/mage.git
synced 2024-11-25 03:00:11 +00:00
make jboss remoting2 work with openjdk11
This commit is contained in:
parent
a91b210456
commit
f36792be93
5 changed files with 61 additions and 29 deletions
|
@ -16,7 +16,6 @@ import mage.utils.MageVersion;
|
||||||
import mage.view.*;
|
import mage.view.*;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@ -84,7 +83,7 @@ public interface MageServer {
|
||||||
|
|
||||||
boolean isTableOwner(String sessionId, UUID roomId, UUID tableId) throws MageException;
|
boolean isTableOwner(String sessionId, UUID roomId, UUID tableId) throws MageException;
|
||||||
|
|
||||||
Optional<TableView> getTable(UUID roomId, UUID tableId) throws MageException;
|
TableView getTable(UUID roomId, UUID tableId) throws MageException;
|
||||||
|
|
||||||
List<TableView> getTables(UUID roomId) throws MageException;
|
List<TableView> getTables(UUID roomId) throws MageException;
|
||||||
|
|
||||||
|
@ -95,13 +94,13 @@ public interface MageServer {
|
||||||
|
|
||||||
void leaveChat(UUID chatId, String sessionId) throws MageException;
|
void leaveChat(UUID chatId, String sessionId) throws MageException;
|
||||||
|
|
||||||
Optional<UUID> getTableChatId(UUID tableId) throws MageException;
|
UUID getTableChatId(UUID tableId) throws MageException;
|
||||||
|
|
||||||
Optional<UUID> getGameChatId(UUID gameId) throws MageException;
|
UUID getGameChatId(UUID gameId) throws MageException;
|
||||||
|
|
||||||
Optional<UUID> getRoomChatId(UUID roomId) throws MageException;
|
UUID getRoomChatId(UUID roomId) throws MageException;
|
||||||
|
|
||||||
Optional<UUID> getTournamentChatId(UUID tournamentId) throws MageException;
|
UUID getTournamentChatId(UUID tournamentId) throws MageException;
|
||||||
|
|
||||||
//room methods
|
//room methods
|
||||||
UUID getMainRoomId() throws MageException;
|
UUID getMainRoomId() throws MageException;
|
||||||
|
|
|
@ -42,6 +42,7 @@ public class Connection {
|
||||||
// private UserSkipPrioritySteps userSkipPrioritySteps;
|
// private UserSkipPrioritySteps userSkipPrioritySteps;
|
||||||
private static final String serialization = "?serializationtype=jboss";
|
private static final String serialization = "?serializationtype=jboss";
|
||||||
private static final String transport = "bisocket";
|
private static final String transport = "bisocket";
|
||||||
|
private static final String threadpool = "onewayThreadPool=mage.remote.CustomThreadPool";
|
||||||
|
|
||||||
private final String parameter;
|
private final String parameter;
|
||||||
|
|
||||||
|
@ -78,13 +79,13 @@ public class Connection {
|
||||||
try {
|
try {
|
||||||
InetAddress inet = getLocalAddress();
|
InetAddress inet = getLocalAddress();
|
||||||
if (inet != null) {
|
if (inet != null) {
|
||||||
return transport + "://" + inet.getHostAddress() + ':' + port + '/' + serialization + parameter;
|
return transport + "://" + inet.getHostAddress() + ':' + port + '/' + serialization + "&" + threadpool + parameter;
|
||||||
}
|
}
|
||||||
} catch (SocketException ex) {
|
} catch (SocketException ex) {
|
||||||
// just use localhost if can't find local ip
|
// just use localhost if can't find local ip
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return transport + "://" + host + ':' + port + '/' + serialization + parameter;
|
return transport + "://" + host + ':' + port + '/' + serialization + "&" + threadpool + parameter;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ProxyType getProxyType() {
|
public ProxyType getProxyType() {
|
||||||
|
|
32
Mage.Common/src/main/java/mage/remote/CustomThreadPool.java
Normal file
32
Mage.Common/src/main/java/mage/remote/CustomThreadPool.java
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
package mage.remote;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.concurrent.ThreadPoolExecutor;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
import org.jboss.util.threadpool.BasicThreadPool;
|
||||||
|
|
||||||
|
public class CustomThreadPool extends BasicThreadPool {
|
||||||
|
private static final Logger logger = Logger.getLogger(SessionImpl.class);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setMaximumPoolSize(int size) {
|
||||||
|
/*
|
||||||
|
* I really don't want to implement a whole new threadpool
|
||||||
|
* just to fix this and the executor is private
|
||||||
|
*/
|
||||||
|
try {
|
||||||
|
Field executorField = BasicThreadPool.class.getField("executor");
|
||||||
|
executorField.setAccessible(true);
|
||||||
|
ThreadPoolExecutor executor = (ThreadPoolExecutor) executorField.get(this);
|
||||||
|
synchronized (executor) {
|
||||||
|
executor.setMaximumPoolSize(size);
|
||||||
|
executor.setCorePoolSize(size);
|
||||||
|
}
|
||||||
|
} catch (NoSuchFieldException | SecurityException e) {
|
||||||
|
logger.error("Failed to get field executor from BasicThreadPool", e);
|
||||||
|
} catch (IllegalArgumentException | IllegalAccessException e) {
|
||||||
|
logger.error("Failed to get executor object from BasicThreadPool", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -647,7 +647,7 @@ public class SessionImpl implements Session {
|
||||||
public Optional<UUID> getRoomChatId(UUID roomId) {
|
public Optional<UUID> getRoomChatId(UUID roomId) {
|
||||||
try {
|
try {
|
||||||
if (isConnected()) {
|
if (isConnected()) {
|
||||||
return server.getRoomChatId(roomId);
|
return Optional.of(server.getRoomChatId(roomId));
|
||||||
}
|
}
|
||||||
} catch (MageException ex) {
|
} catch (MageException ex) {
|
||||||
handleMageException(ex);
|
handleMageException(ex);
|
||||||
|
@ -659,7 +659,7 @@ public class SessionImpl implements Session {
|
||||||
public Optional<UUID> getTableChatId(UUID tableId) {
|
public Optional<UUID> getTableChatId(UUID tableId) {
|
||||||
try {
|
try {
|
||||||
if (isConnected()) {
|
if (isConnected()) {
|
||||||
return server.getTableChatId(tableId);
|
return Optional.of(server.getTableChatId(tableId));
|
||||||
}
|
}
|
||||||
} catch (MageException ex) {
|
} catch (MageException ex) {
|
||||||
handleMageException(ex);
|
handleMageException(ex);
|
||||||
|
@ -671,7 +671,7 @@ public class SessionImpl implements Session {
|
||||||
public Optional<UUID> getGameChatId(UUID gameId) {
|
public Optional<UUID> getGameChatId(UUID gameId) {
|
||||||
try {
|
try {
|
||||||
if (isConnected()) {
|
if (isConnected()) {
|
||||||
return server.getGameChatId(gameId);
|
return Optional.of(server.getGameChatId(gameId));
|
||||||
}
|
}
|
||||||
} catch (MageException ex) {
|
} catch (MageException ex) {
|
||||||
handleMageException(ex);
|
handleMageException(ex);
|
||||||
|
@ -685,7 +685,7 @@ public class SessionImpl implements Session {
|
||||||
public Optional<TableView> getTable(UUID roomId, UUID tableId) {
|
public Optional<TableView> getTable(UUID roomId, UUID tableId) {
|
||||||
try {
|
try {
|
||||||
if (isConnected()) {
|
if (isConnected()) {
|
||||||
return server.getTable(roomId, tableId);
|
return Optional.of(server.getTable(roomId, tableId));
|
||||||
}
|
}
|
||||||
} catch (MageException ex) {
|
} catch (MageException ex) {
|
||||||
handleMageException(ex);
|
handleMageException(ex);
|
||||||
|
@ -829,7 +829,7 @@ public class SessionImpl implements Session {
|
||||||
public Optional<UUID> getTournamentChatId(UUID tournamentId) {
|
public Optional<UUID> getTournamentChatId(UUID tournamentId) {
|
||||||
try {
|
try {
|
||||||
if (isConnected()) {
|
if (isConnected()) {
|
||||||
return server.getTournamentChatId(tournamentId);
|
return Optional.of(server.getTournamentChatId(tournamentId));
|
||||||
}
|
}
|
||||||
} catch (MageException ex) {
|
} catch (MageException ex) {
|
||||||
handleMageException(ex);
|
handleMageException(ex);
|
||||||
|
|
|
@ -397,15 +397,15 @@ public class MageServerImpl implements MageServer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
//FIXME: why no sessionId here???
|
//FIXME: why no sessionId here???
|
||||||
public Optional<TableView> getTable(UUID roomId, UUID tableId) throws MageException {
|
public TableView getTable(UUID roomId, UUID tableId) throws MageException {
|
||||||
try {
|
try {
|
||||||
Optional<GamesRoom> room = GamesRoomManager.instance.getRoom(roomId);
|
Optional<GamesRoom> room = GamesRoomManager.instance.getRoom(roomId);
|
||||||
return room.flatMap(r -> r.getTable(tableId));
|
return room.flatMap(r -> r.getTable(tableId)).orElse(null);
|
||||||
|
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
handleException(ex);
|
handleException(ex);
|
||||||
}
|
}
|
||||||
return Optional.empty();
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -536,18 +536,18 @@ public class MageServerImpl implements MageServer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
//FIXME: why no sessionId here???
|
//FIXME: why no sessionId here???
|
||||||
public Optional<UUID> getRoomChatId(UUID roomId) throws MageException {
|
public UUID getRoomChatId(UUID roomId) throws MageException {
|
||||||
try {
|
try {
|
||||||
Optional<GamesRoom> room = GamesRoomManager.instance.getRoom(roomId);
|
Optional<GamesRoom> room = GamesRoomManager.instance.getRoom(roomId);
|
||||||
if (!room.isPresent()) {
|
if (!room.isPresent()) {
|
||||||
logger.error("roomId not found : " + roomId);
|
logger.error("roomId not found : " + roomId);
|
||||||
return Optional.empty();
|
return null;
|
||||||
}
|
}
|
||||||
return Optional.of(room.get().getChatId());
|
return room.get().getChatId();
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
handleException(ex);
|
handleException(ex);
|
||||||
}
|
}
|
||||||
return Optional.empty();
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -602,13 +602,13 @@ public class MageServerImpl implements MageServer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
//FIXME: why no sessionId here???
|
//FIXME: why no sessionId here???
|
||||||
public Optional<UUID> getTableChatId(UUID tableId) throws MageException {
|
public UUID getTableChatId(UUID tableId) throws MageException {
|
||||||
try {
|
try {
|
||||||
return TableManager.instance.getChatId(tableId);
|
return TableManager.instance.getChatId(tableId).orElse(null);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
handleException(ex);
|
handleException(ex);
|
||||||
}
|
}
|
||||||
return Optional.empty();
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -646,24 +646,24 @@ public class MageServerImpl implements MageServer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
//FIXME: why no sessionId here???
|
//FIXME: why no sessionId here???
|
||||||
public Optional<UUID> getGameChatId(UUID gameId) throws MageException {
|
public UUID getGameChatId(UUID gameId) throws MageException {
|
||||||
try {
|
try {
|
||||||
return GameManager.instance.getChatId(gameId);
|
return GameManager.instance.getChatId(gameId).orElse(null);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
handleException(ex);
|
handleException(ex);
|
||||||
}
|
}
|
||||||
return Optional.empty();
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
//FIXME: why no sessionId here???
|
//FIXME: why no sessionId here???
|
||||||
public Optional<UUID> getTournamentChatId(UUID tournamentId) throws MageException {
|
public UUID getTournamentChatId(UUID tournamentId) throws MageException {
|
||||||
try {
|
try {
|
||||||
return TournamentManager.instance.getChatId(tournamentId);
|
return TournamentManager.instance.getChatId(tournamentId).orElse(null);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
handleException(ex);
|
handleException(ex);
|
||||||
}
|
}
|
||||||
return Optional.empty();
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in a new issue