1 package org.seasar.remoting.rmi.deployer; 2 3 import java.rmi.registry.LocateRegistry; 4 import java.rmi.registry.Registry; 5 import java.rmi.server.RMIClientSocketFactory; 6 import java.rmi.server.RMIServerSocketFactory; 7 import java.rmi.server.UnicastRemoteObject; 8 9 import org.seasar.framework.log.Logger; 10 import org.seasar.remoting.common.deployer.Deployer; 11 import org.seasar.remoting.rmi.adaptor.RMIAdaptor; 12 13 /*** 14 * RMIAdaptorをRMIレジストリに登録するクラス. 15 * 16 * @author Kenichiro Murata 17 */ 18 public class RMIAdaptorDeployer implements Deployer { 19 private final static Logger logger = Logger 20 .getLogger(RMIAdaptorDeployer.class); 21 22 private RMIAdaptor adaptor; 23 24 private RMIClientSocketFactory clientSocketFactory = null; 25 26 private RMIServerSocketFactory serverSocketFactory = null; 27 28 private int registryPort = 1099; 29 30 private int servicePort = 0; 31 32 /*** 33 * @see org.seasar.remoting.common.deployer.Deployer#deploy() 34 */ 35 public void deploy() { 36 Registry registry; 37 try { 38 this.isSetAdaptor(); 39 40 if (logger.isDebugEnabled()) { 41 logger.log("DRMI0001", new Object[] { Integer 42 .toString(this.registryPort) }); 43 } 44 45 registry = LocateRegistry.createRegistry(this.registryPort); 46 47 if (this.clientSocketFactory != null 48 && this.serverSocketFactory != null) { 49 if (logger.isDebugEnabled()) { 50 logger.log("DRMI0002", new Object[] { Integer 51 .toString(this.servicePort) }); 52 } 53 UnicastRemoteObject.exportObject(this.adaptor, 54 this.servicePort, this.clientSocketFactory, 55 this.serverSocketFactory); 56 } else { 57 if (logger.isDebugEnabled()) { 58 logger.log("DRMI0003", new Object[] { Integer 59 .toString(this.servicePort) }); 60 } 61 UnicastRemoteObject 62 .exportObject(this.adaptor, this.servicePort); 63 } 64 65 if (logger.isDebugEnabled()) { 66 logger.log("DRMI0004", new Object[] { RMIAdaptor.EXPORT_NAME }); 67 } 68 69 registry.rebind(RMIAdaptor.EXPORT_NAME, this.adaptor); 70 } catch (Exception e) { 71 logger.log(e); 72 } 73 } 74 75 final void isSetAdaptor() throws IllegalArgumentException { 76 if (this.adaptor == null) { 77 throw new IllegalArgumentException("RMIAdaptor is not defined."); 78 } 79 } 80 81 /*** 82 * @param adaptor 83 * adaptor を設定。 84 */ 85 public void setAdaptor(RMIAdaptor adaptor) { 86 this.adaptor = adaptor; 87 } 88 89 /*** 90 * @param clientSocketFactory 91 * clientSocketFactory を設定。 92 * @param serverSocketFactory 93 * serverSocketFactory を設定。 94 */ 95 public void addCustomSocketFactory( 96 RMIClientSocketFactory clientSocketFactory, 97 RMIServerSocketFactory serverSocketFactory) { 98 this.clientSocketFactory = clientSocketFactory; 99 this.serverSocketFactory = serverSocketFactory; 100 } 101 102 /*** 103 * @param registryPort 104 * registryPort を設定。 105 */ 106 public void setRegistryPort(int registryPort) { 107 this.registryPort = registryPort; 108 } 109 110 /*** 111 * @param servicePort 112 * servicePort を設定。 113 */ 114 public void setServicePort(int servicePort) { 115 this.servicePort = servicePort; 116 } 117 }