diff --git a/src/main/java/com/eactive/eai/common/web/AppInitializer.java b/src/main/java/com/eactive/eai/common/web/AppInitializer.java index e10fcb4..d993f4e 100644 --- a/src/main/java/com/eactive/eai/common/web/AppInitializer.java +++ b/src/main/java/com/eactive/eai/common/web/AppInitializer.java @@ -6,6 +6,9 @@ import java.lang.reflect.Method; import java.net.InetAddress; import java.nio.charset.Charset; import java.rmi.RemoteException; +import java.rmi.registry.LocateRegistry; +import java.rmi.registry.Registry; +import java.rmi.server.ExportException; import java.security.Security; import java.util.Arrays; @@ -24,6 +27,7 @@ import com.eactive.eai.common.dao.Keys; import com.eactive.eai.common.exception.ExceptionUtil; import com.eactive.eai.common.lifecycle.LifecycleException; import com.eactive.eai.common.lifecycle.LifecycleManager; +import com.eactive.eai.common.logger.async.AsyncHttpLoggingPoolManager; import com.eactive.eai.common.logger.async.AsyncLoggingPoolManager; import com.eactive.eai.common.property.PropManager; import com.eactive.eai.common.routing.rmi.RemoteProxy; @@ -36,7 +40,6 @@ import com.eactive.eai.common.util.ServiceLocator; import com.eactive.eai.common.util.ServiceLocatorException; import com.eactive.eai.env.ConfigKeys; import com.eactive.eai.env.ElinkConfig; -import com.eactive.eai.common.logger.async.AsyncHttpLoggingPoolManager; /** * eLink FrameWork이 초기화(Deploy)될 때 실행되어야 할 작업을 정의 @@ -180,14 +183,25 @@ public class AppInitializer implements InitializingBean, DisposableBean { this.shutdownWaitIntervalMs = shutdownWaitIntervalMs; } + private Registry rmiRegistry; + @SuppressWarnings("deprecation") private void initRmiServer(int registryPort, int servicePort) throws RemoteException { + try { + rmiRegistry = LocateRegistry.createRegistry(registryPort); + } catch (ExportException e) { + // 혹시 이전 정리 실패로 이미 떠있다면 재사용 시도 + Logger.getLogger(Logger.LOGGER_DEFAULT) + .warn("Registry already exists on port " + registryPort + ", reusing", e); + rmiRegistry = LocateRegistry.getRegistry(registryPort); + } + rmiServiceExporter.setServiceName("RemoteProxy"); rmiServiceExporter.setService(remoteProxy); rmiServiceExporter.setServiceInterface(serviceInterface); rmiServiceExporter.setRegistryPort(registryPort); rmiServiceExporter.setServicePort(servicePort); - rmiServiceExporter.setAlwaysCreateRegistry(true); + rmiServiceExporter.setAlwaysCreateRegistry(false); rmiServiceExporter.afterPropertiesSet(); } diff --git a/src/main/java/com/eactive/eai/message/manager/StandardMessageManager.java b/src/main/java/com/eactive/eai/message/manager/StandardMessageManager.java index d7b8c6a..af2f218 100644 --- a/src/main/java/com/eactive/eai/message/manager/StandardMessageManager.java +++ b/src/main/java/com/eactive/eai/message/manager/StandardMessageManager.java @@ -140,7 +140,7 @@ reader.FLAT=com.eactive.eai.message.parser.FlatReader lifecycle.fireLifecycleEvent(STOPING_EVENT, this); readerMap.clear(); - readerMap = null; +// readerMap = null; started = false; lifecycle.fireLifecycleEvent(STOPPED_EVENT, this); } @@ -208,6 +208,10 @@ reader.FLAT=com.eactive.eai.message.parser.FlatReader @SuppressWarnings("rawtypes") private void initReaderFactory(Properties config) { + if (readerMap == null) { + readerMap = new ConcurrentHashMap<>(); + } + Class cl = null; StandardReader reader = null;