Great feature btw :)

On Apr 8, 2012, at 1:18 PM, David Blevins wrote:

> Let's add a jira for this new feature.
> 
> 
> On Apr 8, 2012, at 7:28 AM, [email protected] wrote:
> 
>> Author: rmannibucau
>> Date: Sun Apr  8 14:28:24 2012
>> New Revision: 1311012
>> 
>> URL: http://svn.apache.org/viewvc?rev=1311012&view=rev
>> Log:
>> adding a JMX deployer for openejb (avoid ssh when not mandatory)
>> 
>> Added:
>>   
>> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/JMXDeployer.java
>> 
>> Added: 
>> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/JMXDeployer.java
>> URL: 
>> http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/JMXDeployer.java?rev=1311012&view=auto
>> ==============================================================================
>> --- 
>> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/JMXDeployer.java
>>  (added)
>> +++ 
>> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/JMXDeployer.java
>>  Sun Apr  8 14:28:24 2012
>> @@ -0,0 +1,68 @@
>> +package org.apache.openejb.assembler;
>> +
>> +import java.util.Collection;
>> +import java.util.Properties;
>> +import javax.management.Description;
>> +import javax.management.MBean;
>> +import javax.management.ManagedAttribute;
>> +import javax.management.ManagedOperation;
>> +import javax.naming.Context;
>> +import javax.naming.InitialContext;
>> +import javax.naming.NamingException;
>> +import org.apache.openejb.assembler.classic.AppInfo;
>> +import org.apache.openejb.core.LocalInitialContextFactory;
>> +
>> +@MBean
>> +@Description("OpenEJB Deployer")
>> +public class JMXDeployer {
>> +    @ManagedOperation
>> +    @Description("Deploy the specified application")
>> +    public String deploy(final String location) {
>> +        try {
>> +            deployer().deploy(location);
>> +            return "OK";
>> +        } catch (Exception e) {
>> +            return "ERR:" + e.getMessage();
>> +        }
>> +    }
>> +
>> +    @ManagedOperation
>> +    @Description("Undeploy the specified application")
>> +    public String undeploy(final String moduleId) {
>> +        try {
>> +            deployer().undeploy(moduleId);
>> +            return "OK";
>> +        } catch (Exception e) {
>> +            return "ERR:" + e.getMessage();
>> +        }
>> +    }
>> +
>> +    @ManagedAttribute
>> +    @Description("List available applications")
>> +    public String[] getDeployedApplications() {
>> +        try {
>> +            final Collection<AppInfo> apps = deployer().getDeployedApps();
>> +            final String[] appsNames = new String[apps.size()];
>> +            int i = 0;
>> +            for (AppInfo info : apps) {
>> +                appsNames[i++] = info.path;
>> +            }
>> +            return appsNames;
>> +        } catch (Exception e) {
>> +            return new String[] { "ERR:" + e.getMessage() };
>> +        }
>> +    }
>> +
>> +    private static Deployer deployer() throws NamingException {
>> +        final Properties p = new Properties();
>> +        p.setProperty(Context.INITIAL_CONTEXT_FACTORY, 
>> LocalInitialContextFactory.class.getName());
>> +
>> +        final ClassLoader oldCl = 
>> Thread.currentThread().getContextClassLoader();
>> +        
>> Thread.currentThread().setContextClassLoader(DeployerEjb.class.getClassLoader());
>> +        try {
>> +            return (Deployer) new 
>> InitialContext(p).lookup("openejb/DeployerBusinessRemote");
>> +        } finally {
>> +            Thread.currentThread().setContextClassLoader(oldCl);
>> +        }
>> +    }
>> +}
>> 
>> 
>> 
> 

Reply via email to