1 19 20 package org.netbeans.modules.j2ee.sun.ide.j2ee.ui; 21 22 import java.io.File ; 23 import java.io.IOException ; 24 import java.net.InetSocketAddress ; 25 import java.net.Socket ; 26 import java.util.Random ; 27 import org.netbeans.modules.j2ee.deployment.plugins.api.InstanceProperties; 28 import org.netbeans.modules.j2ee.sun.api.ServerLocationManager; 29 import org.netbeans.modules.j2ee.sun.ide.dm.SunDeploymentManager; 30 import org.netbeans.modules.j2ee.sun.ide.j2ee.ui.AddDomainWizardIterator; 31 import org.openide.ErrorManager; 32 import org.openide.WizardDescriptor; 33 import org.openide.WizardDescriptor.Panel; 34 import org.openide.util.NbBundle; 35 36 43 public final class DomainCreator { 44 45 47 private final static String DEFAULT_SERVER_NAME = 48 NbBundle.getMessage(SunDeploymentManager.class, "FACTORY_DISPLAYNAME"); private final static String DEFAULT_USERNAME = "admin"; private final static String DEFAULT_PASSWORD = "adminadmin"; private final static String DEFAULT_HOST = "localhost"; private final static String DEFAULT_DOMAIN_NAME = "personalDomain"; private final static int DEFAULT_ADMIN_PORT = 4848; 54 private final static int DEFAULT_HTTP_PORT = 8080; 55 private final static int DEFAULT_JMX_PORT = 8686; 56 private final static int DEFAULT_JMS_PORT = 7676; 57 private final static int DEFAULT_ORB_PORT = 3700; 58 private final static int DEFAULT_HTTPS_PORT = 8181; 59 private final static int DEFAULT_ORB_SSL_PORT = 3820; 60 private final static int DEFAULT_ORB_MUTUALAUTH_PORT = 3920; 61 62 64 private final static String PROP_USER_NAME = "username"; private final static String PROP_PASSWORD = "password"; private final static String PROP_HOST = "host"; private final static String PROP_PORT = "port"; private final static String PROP_PLATFORM_LOCATION = "platform_location"; private final static String PROP_INSTALL_LOCATION = "install_location"; private final static String PROP_DOMAIN = "domain"; private final static String PROP_INSTANCE_PORT = "instance_port"; private final static String PROP_JMS_PORT = "jms_port"; private final static String PROP_ORB_LISTENER_PORT = "orb_listener_port"; private final static String PROP_ORB_SSL_PORT = "orb_ssl_port"; private final static String PROP_HTTP_SSL_PORT = "http_ssl_port"; private final static String PROP_ORB_MUTUAL_AUTH_PORT = "orb_mutual_auth_port"; private final static String PROP_ADMIN_JMX_PORT = "admin_jmx_port"; private final static String PROP_TYPE = "type"; private final static String PROP_DISPLAY_NAME = "ServInstWizard_displayName"; 81 private WizardDescriptor wizardDescriptor; 82 private AddDomainWizardIterator wizard; 83 84 87 private DomainCreator() { 88 wizard = new AddDomainWizardIterator(); 89 wizardDescriptor = new WizardDescriptor(new Panel[] {}); 90 } 91 92 99 public static InstanceProperties createPersonalDefaultDomain(String serverPath) { 100 String homeDir = System.getProperty("user.home"); return createPersonalDomain(serverPath, 102 homeDir + File.separator + "." +DEFAULT_DOMAIN_NAME); } 104 105 113 public static InstanceProperties createPersonalDomain(String serverPath, 114 String domainPath) { 115 File serverRoot = new File (serverPath); 116 File domainRoot = new File (domainPath); 117 InstanceProperties retVal = null; 118 119 if (ServerLocationManager.isGoodAppServerLocation(serverRoot)) { 121 122 String serverID = "[" + serverRoot.getAbsolutePath() + "]deployer:Sun:AppServer::" + DEFAULT_HOST + ":" + DEFAULT_ADMIN_PORT; 126 retVal = InstanceProperties.getInstanceProperties(serverID); 127 128 if(null == retVal) { 129 int counter = 1; 131 132 while (domainRoot.exists()) { 133 domainRoot = new File (domainPath + counter++); 134 } 135 136 if(domainRoot.getParentFile().canWrite()) { 138 139 DomainCreator factory = new DomainCreator(); 141 142 int bucket = 0; 145 String home = System.getProperty("user.home"); if (null != home && home.trim().length() > 0) { 147 bucket = home.hashCode() % 10000; 148 } 149 150 int adminPort = DEFAULT_ADMIN_PORT + bucket; 152 int httpPort = DEFAULT_HTTP_PORT + bucket; 153 int jmsPort = DEFAULT_JMS_PORT + bucket; 154 int orbPort = DEFAULT_ORB_PORT + bucket; 155 int httpsPort = DEFAULT_HTTPS_PORT + bucket; 156 int orbSSLPort = DEFAULT_ORB_SSL_PORT + bucket; 157 int orbMAPort = DEFAULT_ORB_MUTUALAUTH_PORT + bucket; 158 int jmxPort = DEFAULT_JMX_PORT + bucket; 159 160 while (!isPortAvaibale(adminPort) || !isPortAvaibale(httpPort) 161 || !isPortAvaibale(jmsPort) || !isPortAvaibale(orbPort) 162 || !isPortAvaibale(httpsPort) || !isPortAvaibale(orbSSLPort) 163 || !isPortAvaibale(orbMAPort) || !isPortAvaibale(jmxPort)) { 164 int incr = (new Random ()).nextInt(100)+1; 165 adminPort += incr; 166 httpPort += incr; 167 jmsPort += incr; 168 orbPort += incr; 169 httpsPort += incr; 170 orbSSLPort += incr; 171 orbMAPort += incr; 172 jmxPort += incr; 173 if (jmxPort >= 0xffff) { 174 break; 176 } 177 } 178 179 factory.setProperty(PROP_DISPLAY_NAME, DEFAULT_SERVER_NAME); 181 factory.setProperty(PROP_USER_NAME, DEFAULT_USERNAME); 182 factory.setProperty(PROP_PASSWORD, DEFAULT_PASSWORD); 183 factory.setProperty(PROP_HOST, DEFAULT_HOST); 184 factory.setProperty(PROP_INSTALL_LOCATION, domainRoot.getAbsolutePath()); 185 factory.setProperty(PROP_PLATFORM_LOCATION, serverRoot); 186 factory.setProperty(PROP_PORT, String.valueOf(adminPort)); 187 factory.setProperty(PROP_DOMAIN, DEFAULT_DOMAIN_NAME); 188 factory.setProperty(PROP_INSTANCE_PORT, String.valueOf(httpPort)); 189 factory.setProperty(PROP_JMS_PORT, String.valueOf(jmsPort)); 190 factory.setProperty(PROP_ORB_LISTENER_PORT, String.valueOf(orbPort)); 191 factory.setProperty(PROP_HTTP_SSL_PORT, String.valueOf(httpsPort)); 192 factory.setProperty(PROP_ORB_SSL_PORT, String.valueOf(orbSSLPort)); 193 factory.setProperty(PROP_ORB_MUTUAL_AUTH_PORT, String.valueOf(orbMAPort)); 194 factory.setProperty(PROP_ADMIN_JMX_PORT, String.valueOf(jmxPort)); 195 factory.setProperty(PROP_TYPE, AddDomainWizardIterator.PERSONAL); 196 197 if (jmxPort < 0xffff) { 198 retVal = factory.createInstance(); 200 } 201 } else { 202 ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, 203 NbBundle.getMessage(DomainCreator.class, "MSG_DomainDirWriteProtect", 204 domainRoot.getParentFile().getAbsolutePath())); 205 } 206 } 207 } 208 return retVal; 209 } 210 211 214 private void setProperty(String property, Object value) { 215 wizardDescriptor.putProperty(property, value); 216 } 217 218 223 private InstanceProperties createInstance() { 224 wizard.initialize(wizardDescriptor); 225 return wizard.createInstance(); 226 } 227 228 229 234 private static boolean isPortAvaibale(int port) { 235 String host = DEFAULT_HOST; 236 boolean retVal = true; 237 Socket socket = null; 238 try { 239 InetSocketAddress isa = new InetSocketAddress (host, port); 240 socket = new Socket (); 241 socket.connect(isa, 1); 242 retVal = false; 243 } catch (IOException e) { 244 retVal = true; 246 } finally { 248 if (socket != null && !retVal) { 249 try { 250 socket.close(); 251 } catch (IOException ioe) { 252 ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, 253 ioe); 254 } 255 } 256 } 257 return retVal; 258 } 259 } 260 | Popular Tags |