1 23 package org.glassfish.deployment.util; 24 25 import java.io.ObjectInputStream ; 26 import java.io.ObjectOutputStream ; 27 import java.net.URL ; 28 import java.net.URLConnection ; 29 import java.util.HashMap ; 30 import java.util.Map ; 31 import javax.management.MBeanServerConnection ; 32 import javax.management.ObjectName ; 33 import javax.management.remote.JMXConnector ; 34 import javax.management.remote.JMXConnectorFactory ; 35 import javax.management.remote.JMXServiceURL ; 36 37 38 43 public class JMXDeploy{ 44 45 private final static String mBeanName = "com.sun.appserv:" 46 + "J2EEApplication=null,J2EEServer=server," 47 + "j2eeType=WebModule,name=//server"; 48 49 private static URLConnection conn = null; 50 private static URL url; 51 private static ObjectOutputStream objectWriter = null; 52 private static ObjectInputStream objectReader = null; 53 private static String adminUser = null; 54 private static String adminPassword = null; 55 private static int adminPort = 4848; 56 private static String contextRoot= ""; 57 private static String host = "localhost"; 58 59 public static void main(String args[]) throws Exception { 60 try{ 61 String command = args[0]; 62 host = args[1]; 63 contextRoot = "/" + args[2]; 64 adminUser = args[3]; 65 adminPassword = args[4]; 66 adminPort = Integer.parseInt(args[5]); 67 68 if ( command.equals("--restart")){ 69 restart(mBeanName + contextRoot); 70 } else if (command.equals("--reload")){ 71 reload(mBeanName + contextRoot); 72 } 73 System.out.println("DEPLOYMENT SUCCESS"); 74 } catch(Throwable ex){ 75 System.out.println("Usage\n"); 76 System.out.println("jmxReload --reload|restart"); 77 System.out.print(" [contextRoot]"); 78 ex.printStackTrace(); 79 System.out.println("DEPLOYMENT FAILED"); 80 } 81 } 82 83 84 private static void restart(String oName) throws Throwable { 85 ObjectName appMBean = new ObjectName (oName); 86 87 try { 88 restartHttp(appMBean); 89 } catch (Throwable t){ 90 restartHttps(appMBean); 91 } 92 } 93 94 95 private static void reload(String oName) throws Throwable { 96 ObjectName appMBean = new ObjectName (oName); 97 98 try { 99 reloadHttp(appMBean); 100 } catch (Throwable t){ 101 t.printStackTrace(); 102 reloadHttps(appMBean); 103 } 104 } 105 106 107 110 private static void reloadHttp(ObjectName appMBean) throws Throwable { 111 112 Object [] params = new Object [0]; 113 String [] signature = new String [0]; 114 System.out.println("Reload Context: " + contextRoot); 115 116 Object o= getMBeanServerConnection(). 117 invoke(appMBean, "reload", params, signature); 118 } 119 120 121 124 private static void restartHttp(ObjectName appMBean) throws Throwable { 125 Object [] params = new Object [0]; 126 String [] signature = new String [0]; 127 System.out.println("Stopping Context: " + contextRoot); 128 129 Object o= getMBeanServerConnection(). 130 invoke(appMBean, "stop", params, signature); 131 132 System.out.println("Starting Context: " + contextRoot); 133 134 o= getMBeanServerConnection() 135 .invoke(appMBean, "start", params, signature); 136 } 137 138 139 142 private static MBeanServerConnection getMBeanServerConnection() 143 throws Throwable { 144 return getMBeanServerConnection(host,adminPort,adminUser,adminPassword); 145 } 146 147 148 151 private static MBeanServerConnection getMBeanServerConnection 152 (String host, 153 int port, 154 String user, 155 String password) throws Throwable { 156 157 final JMXServiceURL url = 158 new JMXServiceURL ("service:jmx:s1ashttp://" + host + ":" + port); 159 final Map env = new HashMap (); 160 final String PKGS = "com.sun.enterprise.admin.jmx.remote.protocol"; 161 162 env.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES, PKGS); 163 env.put(ADMIN_USER_ENV_PROPERTY_NAME, user ); 164 env.put( ADMIN_PASSWORD_ENV_PROPERTY_NAME, password); 165 env.put(HTTP_AUTH_PROPERTY_NAME, DEFAULT_HTTP_AUTH_SCHEME); 166 final JMXConnector conn = JMXConnectorFactory.connect(url, env); 167 return conn.getMBeanServerConnection(); 168 } 169 170 171 174 private static void reloadHttps(ObjectName appMBean) throws Throwable { 175 Object [] params = new Object [0]; 176 String [] signature = new String [0]; 177 System.out.println("Reloading Context: " + contextRoot); 178 179 Object o= getSecureMBeanServerConnection() 180 .invoke(appMBean, "reload", params, signature); 181 182 } 183 184 185 188 private static void restartHttps(ObjectName appMBean) throws Throwable { 189 Object [] params = new Object [0]; 190 String [] signature = new String [0]; 191 System.out.println("Stopping Context: " + contextRoot); 192 193 Object o= getSecureMBeanServerConnection() 194 .invoke(appMBean, "stop", params, signature); 195 196 System.out.println("Starting Context: " + contextRoot); 197 198 o= getSecureMBeanServerConnection().invoke( 199 appMBean, "start", params, signature); 200 } 201 202 203 206 private static MBeanServerConnection getSecureMBeanServerConnection() 207 throws Throwable { 208 return getSecureMBeanServerConnection(host,adminPort,adminUser, 209 adminPassword); 210 } 211 212 213 216 private static MBeanServerConnection 217 getSecureMBeanServerConnection(String host, 218 int port, 219 String user, 220 String password) throws Throwable { 221 222 final JMXServiceURL url = new JMXServiceURL ("service:jmx:s1ashttps://" + 223 host + ":" + port); 224 final Map env = new HashMap (); 225 final String PKGS = "com.sun.enterprise.admin.jmx.remote.protocol"; 226 227 env.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES, PKGS); 228 env.put(ADMIN_USER_ENV_PROPERTY_NAME, user ); 229 env.put( ADMIN_PASSWORD_ENV_PROPERTY_NAME, password); 230 env.put(HTTP_AUTH_PROPERTY_NAME, DIGEST_HTTP_AUTH_SCHEME); 231 final JMXConnector conn = JMXConnectorFactory.connect(url, env); 232 return conn.getMBeanServerConnection(); 233 } 234 235 237 238 public static final String ADMIN_USER_ENV_PROPERTY_NAME = "USER"; 239 public static final String ADMIN_PASSWORD_ENV_PROPERTY_NAME = "PASSWORD"; 240 public static final String TRUST_MANAGER_PROPERTY_NAME = "TRUST_MANAGER_KEY"; 241 public static final String KEY_MANAGER_PROPERTY_NAME= "KEYMANAGER_KEY"; 242 public static final String SSL_SOCKET_FACTORY = "SSL_SOCKET_FACTORY"; 243 public static final String HOSTNAME_VERIFIER_PROPERTY_NAME = "HOSTNAME_VERIFIER_KEY"; 244 public static final String STRING_MANAGER_CLASS_NAME = "STRING_MANAGER_CLASS_KEY"; 245 public static final String DEFAULT_TRUST_MANAGER = "com.sun.enterprise.security.trustmanager.SunOneBasicX509TrustManager"; 246 public static final String SERVLET_CONTEXT_PROPERTY_NAME = "com.sun.enterprise.as.context.root"; 247 public static final String HTTP_AUTH_PROPERTY_NAME = "com.sun.enterprise.as.http.auth"; 248 public static final String DEFAULT_SERVLET_CONTEXT_ROOT = "/web1/remotejmx"; 249 public static final String DEFAULT_HTTP_AUTH_SCHEME = "BASIC"; 250 public static final String DIGEST_HTTP_AUTH_SCHEME = "Digest"; 251 252 public static final String S1_HTTP_PROTOCOL = "s1ashttp"; 253 public static final String S1_HTTPS_PROTOCOL = "s1ashttps"; 254 } 255 | Popular Tags |