:index-group: JMX
:jbake-type: page
:jbake-status: status=published
= Custom resources in an EAR archive

TomEE allows you to define your own resources within your application,
and declare them in `META-INF/resources.xml`. This allows you do inject
these resource into any managed component within your application.

In addition to this, you can also define a `create` method on either the
resource itself, or on a POJO that acts as a factory. This example
demonstrates using the `create` method to additionally register the
resource as a JMX MBean, as well as make it available for injection.

== Resource

Custom resources can be defined using very simple Java classes. In this
particular instance, as the application also wants to register this
resource as an MBean, the resource class needs to follow the MBean
specification.

[source,java]
----
public class Hello implements HelloMBean {

    private AtomicInteger count = new AtomicInteger(0);

    @Override
    public String greet(String name) {
        if (name == null) {
            throw new NullPointerException("Name cannot be null");
        }

        return "Hello, " + name;
    }

    @Override
    public int getCount() {
        return count.get();
    }

    @Override
    public void setCount(int value) {
        count.set(value);
    }

    @Override
    public void increment() {
        count.incrementAndGet();
    }
}

public interface HelloMBean {

    public String greet(final String name);

    public int getCount();

    public void setCount(int count);

    public void increment();

}
----

== Create method

To avoid adding the logic to register the resource as an MBean in every
resource, the application provides a single class with a create() method
that takes care of this logic for us.

[source,java]
----
public class JMXBeanCreator {

    private static Logger LOGGER = Logger.getLogger(JMXBeanCreator.class.getName());
    private Properties properties;

    public Object create() throws MBeanRegistrationException {
        // instantiate the bean

        final String code = properties.getProperty("code");
        final String name = properties.getProperty("name");

        requireNotNull(code);
        requireNotNull(name);

        try {
            final Class<?> cls = Class.forName(code, true, Thread.currentThread().getContextClassLoader());
            final Object instance = cls.newInstance();

            final Field[] fields = cls.getDeclaredFields();
            for (final Field field : fields) {

                final String property = properties.getProperty(field.getName());
                if (property == null) {
                    continue;
                }

                try {
                    field.setAccessible(true);
                    field.set(instance, Converter.convert(property, field.getType(), field.getName()));
                } catch (Exception e) {
                    LOGGER.info(String.format("Unable to set value %s on field %s", property, field.getName()));
                }
            }

            final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
            final ObjectName objectName = new ObjectName(name);
            mbs.registerMBean(instance, objectName);

            return instance;

        } catch (final ClassNotFoundException e) {
            LOGGER.severe("Unable to find class " + code);
            throw new MBeanRegistrationException(e);
        } catch (final InstantiationException e) {
            LOGGER.severe("Unable to create instance of class " + code);
            throw new MBeanRegistrationException(e);
        } catch (final IllegalAccessException e) {
            LOGGER.severe("Illegal access: " + code);
            throw new MBeanRegistrationException(e);
        } catch (final MalformedObjectNameException e) {
            LOGGER.severe("Malformed MBean name: " + name);
            throw new MBeanRegistrationException(e);
        } catch (final InstanceAlreadyExistsException e) {
            LOGGER.severe("Instance already exists: " + name);
            throw new MBeanRegistrationException(e);
        } catch (final NotCompliantMBeanException e) {
            LOGGER.severe("Class is not a valid MBean: " + code);
            throw new MBeanRegistrationException(e);
        } catch (final javax.management.MBeanRegistrationException e) {
            LOGGER.severe("Error registering " + name + ", " + code);
            throw new MBeanRegistrationException(e);
        }
    }

    private void requireNotNull(final String object) throws MBeanRegistrationException {
        if (object == null) {
            throw new MBeanRegistrationException("code property not specified, stopping");
        }
    }

    public Properties getProperties() {
        return properties;
    }

    public void setProperties(final Properties properties) {
        this.properties = properties;
    }
}
----

NOTE: that this class uses the properties defined in the configuration
(below), combined with reflection, to instantiate the resource, and set
its attributes. The code above requires two properties `code` and `name`
in order to know what class to create, and the JMX name to register it
under.

== Resource

The resource can be defined in `META-INF/resources.xml` as follows:

[source,xml]
----
<Resources>
  <Resource id="Hello" class-name="org.superbiz.resource.jmx.factory.JMXBeanCreator" factory-name="create">
    code org.superbiz.resource.jmx.resources.Hello
    name superbiz.test:name=Hello
    count 12345
  </Resource>
</Resources>
----

NOTE: that the class-name attribute refers to the factory class, and not
the resource. Once the resource has been created and bound in TomEE’s
JNDI tree the factory is no longer used.

== Using @Resource for injection

The test case for this example demonstrates injection into an EJB as one
way of accessing the resource, and also accessing the resource via JMX.

[source,java]
----
@RunWith(Arquillian.class)
public class JMXTest {

    @EJB
    private TestEjb ejb;

    @Deployment
    public static EnterpriseArchive createDeployment() {

        final JavaArchive ejbJar = new Mvn.Builder()
                .name("jmx-ejb.jar")
                .build(JavaArchive.class)
                .addClass(JMXTest.class)
                .addClass(TestEjb.class);

        final EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, "jmx.ear")
                .addAsModule(ejbJar);

        return ear;
    }

    @Test
    public void test() throws Exception {
        final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
        final ObjectName objectName = new ObjectName("superbiz.test:name=Hello");

        Assert.assertNotNull(ejb);
    
        Assert.assertEquals(0, mbs.getAttribute(objectName, "Count"));
        Assert.assertEquals(0, ejb.getCount());
    
        mbs.invoke(objectName, "increment", new Object[0], new String[0]);
        Assert.assertEquals(1, mbs.getAttribute(objectName, "Count"));
        Assert.assertEquals(1, ejb.getCount());
    
        ejb.increment();
        Assert.assertEquals(2, mbs.getAttribute(objectName, "Count"));
        Assert.assertEquals(2, ejb.getCount());

        Attribute attribute = new Attribute("Count", 12345);
        mbs.setAttribute(objectName, attribute);
        Assert.assertEquals(12345, mbs.getAttribute(objectName, "Count"));
        Assert.assertEquals(12345, ejb.getCount());
    
        ejb.setCount(23456);
        Assert.assertEquals(23456, mbs.getAttribute(objectName, "Count"));
        Assert.assertEquals(23456, ejb.getCount());

        Assert.assertEquals("Hello, world", mbs.invoke(objectName, "greet", new Object[] { "world" }, new String[] { String.class.getName() }));
        Assert.assertEquals("Hello, world", ejb.greet("world"));
    }

    @Singleton
    @Lock(LockType.READ)
    public static class TestEjb {

        @Resource(name="jmx/Hello")
        private HelloMBean helloMBean;

        public String greet(String name) {
            return helloMBean.greet(name);
        }

        public void setCount(int count) {
            helloMBean.setCount(count);
        }

        public void increment() {
            helloMBean.increment();
        }

        public int getCount() {
            return helloMBean.getCount();
        }
    }
}
----

The name `<appname>/<resource-id>` attribute is used on the `@Resource`
annotation to perform the injection. No further configuration is needed
to inject the resource.

== Additional properties

In addition to the `code` and `name` properties that the code above uses
to instantiate the resource, TomEE itself provides some properties to
provide more control over the creation of resources.

Resources are typically discovered, created, and bound to JNDI very
early on in the deployment process, as other components depend on them.
This may lead to problems where the final classpath for the application
has not yet been determined, and therefore TomEE is unable to load your
custom resource.

The following properties can be used to change this behavior.

* Lazy

This is a boolean value, which when true, creates a proxy that defers
the actual instantiation of the resource until the first time it is
looked up from JNDI. This can be useful if the resource requires the
application classpath, or to improve startup time by not fully
initializing resources that might not be used.

* UseAppClassLoader

This boolean value forces a lazily instantiated resource to use the
application classloader, instead of the classloader available when the
resources were first processed.

* InitializeAfterDeployment

This boolean setting forces a resource created with the Lazy property to
be instantiated once the application has started, as opposed to waiting
for it to be looked up. Use this flag if you require the resource to be
loaded, irrespective of whether it is injected into a managed component
or manually looked up.

By default, all of these settings are `false`, unless TomEE encounters a
custom application resource that cannot be instantiated until the
application has started. In this case, it will set these three flags to
`true`, unless the `Lazy` flag has been explicitly set.

== PostConstruct / PreDestroy

As an alternative to using a factory method, you can use @PostConstruct
and @PreDestroy methods within your resource class (note that you cannot
use this within a factory class) to manage any additional creation or
cleanup activities. TomEE will automatically call these methods when the
application is started and destroyed. Using @PostConstruct will
effectively force a lazily loaded resource to be instantiated when the
application is starting - in the same way that the
`InitializeAfterDeployment` property does.

[source,java]
----
public class Alternative implements AlternativeMBean {

    private static Logger LOGGER = Logger.getLogger(Alternative.class.getName());
    private Properties properties;

    @PostConstruct
    public void postConstruct() throws MBeanRegistrationException {
        // initialize the bean

        final String code = properties.getProperty("code");
        final String name = properties.getProperty("name");

        requireNotNull(code);
        requireNotNull(name);

        try {
            final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
            final ObjectName objectName = new ObjectName(name);
            mbs.registerMBean(this, objectName);
        } catch (final MalformedObjectNameException e) {
            LOGGER.severe("Malformed MBean name: " + name);
            throw new MBeanRegistrationException(e);
        } catch (final InstanceAlreadyExistsException e) {
            LOGGER.severe("Instance already exists: " + name);
            throw new MBeanRegistrationException(e);
        } catch (final NotCompliantMBeanException e) {
            LOGGER.severe("Class is not a valid MBean: " + code);
            throw new MBeanRegistrationException(e);
        } catch (final javax.management.MBeanRegistrationException e) {
            LOGGER.severe("Error registering " + name + ", " + code);
            throw new MBeanRegistrationException(e);
        }
    }

    @PreDestroy
    public void preDestroy() throws MBeanRegistrationException {
        final String name = properties.getProperty("name");
        requireNotNull(name);

        try {
            final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
            final ObjectName objectName = new ObjectName(name);
            mbs.unregisterMBean(objectName);
        } catch (final MalformedObjectNameException e) {
            LOGGER.severe("Malformed MBean name: " + name);
            throw new MBeanRegistrationException(e);
        } catch (final javax.management.MBeanRegistrationException e) {
            LOGGER.severe("Error unregistering " + name);
            throw new MBeanRegistrationException(e);
        } catch (InstanceNotFoundException e) {
            LOGGER.severe("Error unregistering " + name);
            throw new MBeanRegistrationException(e);
        }
    }

    private void requireNotNull(final String object) throws MBeanRegistrationException {
        if (object == null) {
            throw new MBeanRegistrationException("code property not specified, stopping");
        }
    }

    public Properties getProperties() {
        return properties;
    }

    public void setProperties(final Properties properties) {
        this.properties = properties;
    }

    private int count = 0;

    @Override
    public String greet(String name) {
        if (name == null) {
            throw new NullPointerException("Name cannot be null");
        }

        return "Hello, " + name;
    }

    @Override
    public int getCount() {
        return count;
    }

    @Override
    public void setCount(int value) {
        count = value;
    }

    @Override
    public void increment() {
        count++;
    }
}
----

== Running

Running the example can be done from maven with a simple `mvn clean
install' command run from the `resources-jmx-example' directory.

When run you should see output similar to the following.

[source,console]
----
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.superbiz.resource.jmx.JMXTest
Apr 15, 2015 12:40:09 PM org.jboss.arquillian.container.impl.MapObject populate
WARNING: Configuration contain properties not supported by the backing object org.apache.tomee.arquillian.remote.RemoteTomEEConfiguration
Unused property entries: {openejbVersion=${tomee.version}, tomcatVersion=}
Supported property names: [additionalLibs, httpPort, httpsPort, stopCommand, portRange, conf, debug, exportConfAsSystemProperty, type, unpackWars, version, serverXml, preloadClasses, dir, deployerProperties, stopPort, singleDumpByArchiveName, appWorkingDir, host, cleanOnStartUp, quickSession, ajpPort, artifactId, properties, singleDeploymentByArchiveName, groupId, stopHost, lib, catalina_opts, debugPort, webContextToUseWithEars, simpleLog, removeUnusedWebapps, keepServerXmlAsThis, classifier, bin]
Apr 15, 2015 12:40:09 PM org.apache.openejb.arquillian.common.Setup findHome
INFO: Unable to find home in: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote
Apr 15, 2015 12:40:09 PM org.apache.openejb.arquillian.common.MavenCache getArtifact
INFO: Downloading org.apache.openejb:apache-tomee:7.0.0-SNAPSHOT:zip:plus please wait...
Apr 15, 2015 12:40:10 PM org.apache.openejb.arquillian.common.Zips unzip
INFO: Extracting '/Users/jgallimore/.m2/repository/org/apache/openejb/apache-tomee/7.0.0-SNAPSHOT/apache-tomee-7.0.0-SNAPSHOT-plus.zip' to '/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote'
Apr 15, 2015 12:40:12 PM org.apache.tomee.arquillian.remote.RemoteTomEEContainer configure
INFO: Downloaded container to: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
Started server process on port: 61309
objc[20102]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/jre/bin/java and /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version:        Apache Tomcat (TomEE)/7.0.61 (7.0.0-SNAPSHOT)
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built:          Mar 27 2015 12:03:56 UTC
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number:         7.0.61.0
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name:               Mac OS X
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version:            10.9.5
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture:          x86_64
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home:             /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/jre
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version:           1.7.0_71-b14
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor:            Oracle Corporation
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE:         /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME:         /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -XX:+HeapDumpOnOutOfMemoryError
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -XX:PermSize=64m
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -XX:MaxPermSize=256m
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Xmx512m
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Xms256m
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -XX:ReservedCodeCacheSize=64m
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dtomee.httpPort=61309
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dorg.apache.catalina.STRICT_SERVLET_COMPLIANCE=false
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dorg.apache.openejb.servlet.filters=org.apache.openejb.arquillian.common.ArquillianFilterRunner=/ArquillianServletRunner
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.util.logging.config.file=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/conf/logging.properties
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -javaagent:/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/lib/openejb-javaagent.jar
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.io.tmpdir=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/temp
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.endorsed.dirs=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/endorsed
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.ext.dirs=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/lib
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dorg.apache.tomcat.util.http.ServerCookie.ALLOW_HTTP_SEPARATORS_IN_V0=true
Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -ea
Apr 15, 2015 12:40:14 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /Users/jgallimore/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
Apr 15, 2015 12:40:14 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-61309"]
Apr 15, 2015 12:40:14 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Apr 15, 2015 12:40:16 PM org.apache.openejb.util.OptionsLog info
INFO: Using 'openejb.jdbc.datasource-creator=org.apache.tomee.jdbc.TomEEDataSourceCreator'
Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
INFO: ********************************************************************************
Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
INFO: OpenEJB http://tomee.apache.org/
Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
INFO: Startup: Wed Apr 15 12:40:16 BST 2015
Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
INFO: Copyright 1999-2013 (C) Apache OpenEJB Project, All Rights Reserved.
Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
INFO: Version: 7.0.0-SNAPSHOT
Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
INFO: Build date: 20150415
Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
INFO: Build time: 11:37
Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
INFO: ********************************************************************************
Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
INFO: openejb.home = /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
INFO: openejb.base = /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
Apr 15, 2015 12:40:16 PM org.apache.openejb.cdi.CdiBuilder initializeOWB
INFO: Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@4a00b74b
Apr 15, 2015 12:40:16 PM org.apache.openejb.cdi.CdiBuilder initializeOWB
INFO: Succeeded in installing singleton service
Apr 15, 2015 12:40:17 PM org.apache.openejb.config.ConfigurationFactory init
INFO: openejb configuration file is '/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/conf/tomee.xml'
Apr 15, 2015 12:40:17 PM org.apache.openejb.config.ConfigurationFactory configureService
INFO: Configuring Service(id=Tomcat Security Service, type=SecurityService, provider-id=Tomcat Security Service)
Apr 15, 2015 12:40:17 PM org.apache.openejb.config.ConfigurationFactory configureService
INFO: Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
Apr 15, 2015 12:40:17 PM org.apache.openejb.util.OptionsLog info
INFO: Using 'openejb.system.apps=true'
Apr 15, 2015 12:40:17 PM org.apache.openejb.config.ConfigurationFactory configureApplication
INFO: Configuring enterprise application: openejb
Apr 15, 2015 12:40:17 PM org.apache.openejb.config.InitEjbDeployments deploy
INFO: Using openejb.deploymentId.format '{ejbName}'
Apr 15, 2015 12:40:17 PM org.apache.openejb.config.InitEjbDeployments deploy
INFO: Auto-deploying ejb openejb/Deployer: EjbDeployment(deployment-id=openejb/Deployer)
Apr 15, 2015 12:40:17 PM org.apache.openejb.config.InitEjbDeployments deploy
INFO: Auto-deploying ejb openejb/ConfigurationInfo: EjbDeployment(deployment-id=openejb/ConfigurationInfo)
Apr 15, 2015 12:40:18 PM org.apache.openejb.config.InitEjbDeployments deploy
INFO: Auto-deploying ejb MEJB: EjbDeployment(deployment-id=MEJB)
Apr 15, 2015 12:40:18 PM org.apache.openejb.config.ConfigurationFactory configureService
INFO: Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
Apr 15, 2015 12:40:18 PM org.apache.openejb.config.AutoConfig createContainer
INFO: Auto-creating a container for bean openejb/Deployer: Container(type=STATELESS, id=Default Stateless Container)
Apr 15, 2015 12:40:18 PM org.apache.openejb.config.AppInfoBuilder build
INFO: Enterprise application "openejb" loaded.
Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.Assembler createRecipe
INFO: Creating TransactionManager(id=Default Transaction Manager)
Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.Assembler createRecipe
INFO: Creating SecurityService(id=Tomcat Security Service)
Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.Assembler createRecipe
INFO: Creating Container(id=Default Stateless Container)
Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.Assembler createAppClassLoader
INFO: Not creating another application classloader for openejb
Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.Assembler createApplication
INFO: Assembling app: openejb
Apr 15, 2015 12:40:18 PM org.apache.openejb.util.OptionsLog info
INFO: Using 'openejb.jndiname.format={deploymentId}{interfaceType.openejbLegacyName}'
Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.JndiBuilder bind
INFO: Jndi(name=openejb/DeployerBusinessRemote) --> Ejb(deployment-id=openejb/Deployer)
Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.JndiBuilder bind
INFO: Jndi(name=global/openejb/openejb/Deployer!org.apache.openejb.assembler.Deployer) --> Ejb(deployment-id=openejb/Deployer)
Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.JndiBuilder bind
INFO: Jndi(name=global/openejb/openejb/Deployer) --> Ejb(deployment-id=openejb/Deployer)
Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.JndiBuilder bind
INFO: Jndi(name=openejb/ConfigurationInfoBusinessRemote) --> Ejb(deployment-id=openejb/ConfigurationInfo)
Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.JndiBuilder bind
INFO: Jndi(name=global/openejb/openejb/ConfigurationInfo!org.apache.openejb.assembler.classic.cmd.ConfigurationInfo) --> Ejb(deployment-id=openejb/ConfigurationInfo)
Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.JndiBuilder bind
INFO: Jndi(name=global/openejb/openejb/ConfigurationInfo) --> Ejb(deployment-id=openejb/ConfigurationInfo)
Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.JndiBuilder bind
INFO: Jndi(name=MEJB) --> Ejb(deployment-id=MEJB)
Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.JndiBuilder bind
INFO: Jndi(name=global/openejb/MEJB!javax.management.j2ee.ManagementHome) --> Ejb(deployment-id=MEJB)
Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.JndiBuilder bind
INFO: Jndi(name=global/openejb/MEJB) --> Ejb(deployment-id=MEJB)
Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler startEjbs
INFO: Created Ejb(deployment-id=openejb/Deployer, ejb-name=openejb/Deployer, container=Default Stateless Container)
Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler startEjbs
INFO: Created Ejb(deployment-id=MEJB, ejb-name=MEJB, container=Default Stateless Container)
Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler startEjbs
INFO: Created Ejb(deployment-id=openejb/ConfigurationInfo, ejb-name=openejb/ConfigurationInfo, container=Default Stateless Container)
Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler startEjbs
INFO: Started Ejb(deployment-id=openejb/Deployer, ejb-name=openejb/Deployer, container=Default Stateless Container)
Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler startEjbs
INFO: Started Ejb(deployment-id=MEJB, ejb-name=MEJB, container=Default Stateless Container)
Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler startEjbs
INFO: Started Ejb(deployment-id=openejb/ConfigurationInfo, ejb-name=openejb/ConfigurationInfo, container=Default Stateless Container)
Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler deployMBean
INFO: Deployed MBean(openejb.user.mbeans:application=openejb,group=org.apache.openejb.assembler.monitoring,name=JMXDeployer)
Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler createApplication
INFO: Deployed Application(path=openejb)
Apr 15, 2015 12:40:20 PM org.apache.openejb.server.ServiceManager initServer
INFO: Creating ServerService(id=cxf)
Apr 15, 2015 12:40:20 PM org.apache.openejb.server.ServiceManager initServer
INFO: Creating ServerService(id=cxf-rs)
Apr 15, 2015 12:40:20 PM org.apache.openejb.server.SimpleServiceManager start
INFO:   ** Bound Services **
Apr 15, 2015 12:40:20 PM org.apache.openejb.server.SimpleServiceManager printRow
INFO:   NAME                 IP              PORT  
Apr 15, 2015 12:40:20 PM org.apache.openejb.server.SimpleServiceManager start
INFO: -------
Apr 15, 2015 12:40:20 PM org.apache.openejb.server.SimpleServiceManager start
INFO: Ready!
Apr 15, 2015 12:40:20 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 7621 ms
Apr 15, 2015 12:40:20 PM org.apache.tomee.catalina.OpenEJBNamingContextListener bindResource
INFO: Importing a Tomcat Resource with id 'UserDatabase' of type 'org.apache.catalina.UserDatabase'.
Apr 15, 2015 12:40:20 PM org.apache.openejb.assembler.classic.Assembler createRecipe
INFO: Creating Resource(id=UserDatabase)
Apr 15, 2015 12:40:20 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Apr 15, 2015 12:40:20 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat (TomEE)/7.0.61 (7.0.0-SNAPSHOT)
Apr 15, 2015 12:40:21 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-61309"]
Apr 15, 2015 12:40:21 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Apr 15, 2015 12:40:21 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 247 ms
Apr 15, 2015 12:40:21 PM org.apache.openejb.client.EventLogger log
INFO: RemoteInitialContextCreated{providerUri=http://localhost:61309/tomee/ejb}
Apr 15, 2015 12:40:21 PM org.apache.openejb.util.JarExtractor extract
INFO: Extracting jar: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx.ear
Apr 15, 2015 12:40:21 PM org.apache.openejb.util.JarExtractor extract
INFO: Extracted path: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx
Apr 15, 2015 12:40:21 PM org.apache.openejb.util.JarExtractor extract
INFO: Extracting jar: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx/arquillian-protocol.war
Apr 15, 2015 12:40:21 PM org.apache.openejb.util.JarExtractor extract
INFO: Extracted path: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx/arquillian-protocol
Apr 15, 2015 12:40:21 PM org.apache.openejb.util.OptionsLog info
INFO: Using 'openejb.deployments.classpath.filter.systemapps=false'
Apr 15, 2015 12:40:23 PM org.apache.openejb.util.OptionsLog info
INFO: Using 'openejb.default.deployment-module=org.apache.openejb.config.WebModule'
Apr 15, 2015 12:40:23 PM org.apache.openejb.util.OptionsLog info
INFO: Using 'openejb.default.deployment-module=org.apache.openejb.config.WebModule'
Apr 15, 2015 12:40:23 PM org.apache.openejb.config.DeploymentsResolver processUrls
INFO: Found EjbModule in classpath: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx/jmx-ejb.jar
Apr 15, 2015 12:40:23 PM org.apache.openejb.util.OptionsLog info
INFO: Using 'openejb.default.deployment-module=org.apache.openejb.config.WebModule'
Apr 15, 2015 12:40:23 PM org.apache.openejb.util.OptionsLog info
INFO: Using 'openejb.default.deployment-module=org.apache.openejb.config.WebModule'
Apr 15, 2015 12:40:23 PM org.apache.openejb.util.OptionsLog info
INFO: Using 'openejb.default.deployment-module=org.apache.openejb.config.WebModule'
Apr 15, 2015 12:40:23 PM org.apache.openejb.config.DeploymentsResolver loadFromClasspath
INFO: Searched 6 classpath urls in 1605 milliseconds.  Average 267 milliseconds per url.
Apr 15, 2015 12:40:23 PM org.apache.openejb.config.ConfigurationFactory configureApplication
INFO: Configuring enterprise application: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx
Apr 15, 2015 12:40:24 PM org.apache.openejb.config.InitEjbDeployments deploy
INFO: Auto-deploying ejb TestEjb: EjbDeployment(deployment-id=TestEjb)
Apr 15, 2015 12:40:24 PM org.apache.openejb.config.ConfigurationFactory configureService
INFO: Configuring Service(id=jmx/Hello, type=Resource, provider-id=jmx/Hello)
Apr 15, 2015 12:40:24 PM org.apache.openejb.config.ConfigurationFactory configureService
INFO: Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig createContainer
INFO: Auto-creating a container for bean jmx-ejb.Comp1256115069: Container(type=MANAGED, id=Default Managed Container)
Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.Assembler createRecipe
INFO: Creating Container(id=Default Managed Container)
Apr 15, 2015 12:40:24 PM org.apache.openejb.core.managed.SimplePassivater init
INFO: Using directory /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/temp for stateful session passivation
Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
INFO: Auto-linking resource-ref 'java:comp/env/jmx/Hello' in bean jmx-ejb.Comp1256115069 to Resource(id=jmx/Hello)
Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
INFO: Auto-linking resource-ref 'openejb/Resource/jmx/Hello' in bean jmx-ejb.Comp1256115069 to Resource(id=Hello)
Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
INFO: Auto-linking resource-ref 'openejb/Resource/Hello' in bean jmx-ejb.Comp1256115069 to Resource(id=Hello)
Apr 15, 2015 12:40:24 PM org.apache.openejb.config.ConfigurationFactory configureService
INFO: Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig createContainer
INFO: Auto-creating a container for bean TestEjb: Container(type=SINGLETON, id=Default Singleton Container)
Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.Assembler createRecipe
INFO: Creating Container(id=Default Singleton Container)
Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
INFO: Auto-linking resource-ref 'java:comp/env/jmx/Hello' in bean TestEjb to Resource(id=jmx/Hello)
Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
INFO: Auto-linking resource-ref 'openejb/Resource/jmx/Hello' in bean TestEjb to Resource(id=Hello)
Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
INFO: Auto-linking resource-ref 'openejb/Resource/Hello' in bean TestEjb to Resource(id=Hello)
Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
INFO: Auto-linking resource-ref 'openejb/Resource/jmx/Hello' in bean jmx_org.superbiz.resource.jmx.JMXTest to Resource(id=Hello)
Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
INFO: Auto-linking resource-ref 'openejb/Resource/Hello' in bean jmx_org.superbiz.resource.jmx.JMXTest to Resource(id=Hello)
Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AppInfoBuilder build
INFO: Enterprise application "/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx" loaded.
Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.Assembler createAppClassLoader
INFO: Creating dedicated application classloader for jmx
Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.Assembler createApplication
INFO: Assembling app: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx
Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.JndiBuilder bind
INFO: Jndi(name=TestEjbLocalBean) --> Ejb(deployment-id=TestEjb)
Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.JndiBuilder bind
INFO: Jndi(name=global/jmx/jmx-ejb/TestEjb!org.superbiz.resource.jmx.JMXTest$TestEjb) --> Ejb(deployment-id=TestEjb)
Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.JndiBuilder bind
INFO: Jndi(name=global/jmx/jmx-ejb/TestEjb) --> Ejb(deployment-id=TestEjb)
Apr 15, 2015 12:40:24 PM org.apache.openejb.cdi.CdiBuilder initSingleton
INFO: Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@4a00b74b
Apr 15, 2015 12:40:24 PM org.apache.openejb.cdi.OpenEJBLifecycle startApplication
INFO: OpenWebBeans Container is starting...
Apr 15, 2015 12:40:24 PM org.apache.webbeans.plugins.PluginLoader startUp
INFO: Adding OpenWebBeansPlugin : [CdiPlugin]
Apr 15, 2015 12:40:24 PM org.apache.webbeans.plugins.PluginLoader startUp
Apr 15, 2015 12:40:25 PM org.apache.webbeans.config.BeansDeployer validateInjectionPoints
INFO: All injection points were validated successfully.
Apr 15, 2015 12:40:25 PM org.apache.openejb.cdi.OpenEJBLifecycle startApplication
INFO: OpenWebBeans Container has started, it took 186 ms.
Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler startEjbs
INFO: Created Ejb(deployment-id=TestEjb, ejb-name=TestEjb, container=Default Singleton Container)
Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler startEjbs
INFO: Started Ejb(deployment-id=TestEjb, ejb-name=TestEjb, container=Default Singleton Container)
Apr 15, 2015 12:40:25 PM org.apache.tomee.catalina.TomcatWebAppBuilder deployWebApps
INFO: using default host: localhost
Apr 15, 2015 12:40:25 PM org.apache.tomee.catalina.TomcatWebAppBuilder init
INFO: ------------------------- localhost -> /arquillian-protocol
Apr 15, 2015 12:40:25 PM org.apache.openejb.util.OptionsLog info
INFO: Using 'openejb.session.manager=org.apache.tomee.catalina.session.QuickSessionManager'
Apr 15, 2015 12:40:25 PM org.apache.openejb.cdi.CdiBuilder initSingleton
INFO: Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@4a00b74b
Apr 15, 2015 12:40:25 PM org.apache.openejb.cdi.OpenEJBLifecycle startApplication
INFO: OpenWebBeans Container is starting...
Apr 15, 2015 12:40:25 PM org.apache.webbeans.plugins.PluginLoader startUp
INFO: Adding OpenWebBeansPlugin : [CdiPlugin]
Apr 15, 2015 12:40:25 PM org.apache.webbeans.plugins.PluginLoader startUp
Apr 15, 2015 12:40:25 PM org.apache.webbeans.config.BeansDeployer validateInjectionPoints
INFO: All injection points were validated successfully.
Apr 15, 2015 12:40:25 PM org.apache.openejb.cdi.OpenEJBLifecycle startApplication
INFO: OpenWebBeans Container has started, it took 17 ms.
Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler createRecipe
INFO: Creating Resource(id=jmx/Hello, aliases=Hello)
Apr 15, 2015 12:40:25 PM org.superbiz.resource.jmx.factory.JMXBeanCreator create
INFO: Unable to set value 12345 on field count
Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler logUnusedProperties
WARNING: Property "code" not supported by "jmx/Hello"
Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler logUnusedProperties
WARNING: Property "name" not supported by "jmx/Hello"
Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler logUnusedProperties
WARNING: Property "count" not supported by "jmx/Hello"
Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler createApplication
INFO: Deployed Application(path=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx)
Apr 15, 2015 12:40:26 PM org.apache.openejb.client.EventLogger log
INFO: RemoteInitialContextCreated{providerUri=http://localhost:61309/tomee/ejb}
Apr 15, 2015 12:40:26 PM org.apache.openejb.assembler.classic.Assembler destroyApplication
INFO: Undeploying app: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx
Apr 15, 2015 12:40:27 PM org.apache.openejb.arquillian.common.TomEEContainer undeploy
INFO: cleaning /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx.ear
Apr 15, 2015 12:40:27 PM org.apache.openejb.arquillian.common.TomEEContainer undeploy
INFO: cleaning /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 18.464 sec
Apr 15, 2015 12:40:27 PM org.apache.catalina.core.StandardServer await
INFO: A valid shutdown command was received via the shutdown port. Stopping the Server instance.
Apr 15, 2015 12:40:27 PM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-bio-61309"]
Apr 15, 2015 12:40:27 PM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
Apr 15, 2015 12:40:27 PM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
Apr 15, 2015 12:40:27 PM org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["http-bio-61309"]
Apr 15, 2015 12:40:27 PM org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["ajp-bio-8009"]
Apr 15, 2015 12:40:27 PM org.apache.openejb.server.SimpleServiceManager stop
INFO: Stopping server services
Apr 15, 2015 12:40:27 PM org.apache.openejb.assembler.classic.Assembler destroyApplication
INFO: Undeploying app: openejb
Apr 15, 2015 12:40:27 PM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["http-bio-61309"]
Apr 15, 2015 12:40:27 PM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["ajp-bio-8009"]

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
----

NOTE: the following lines showing the creation of the resource.

[source,java]
----
Apr 15, 2015 12:40:24 PM org.apache.openejb.config.ConfigurationFactory configureService
INFO: Configuring Service(id=jmx/Hello, type=Resource, provider-id=jmx/Hello)
----
