Hello,
I'm trying to write a GBean which dynamically deploys and undeploys
other GBeans. My first thought about this task was to get a list of
all running modules from which I could decide which to undeploy.
String uri = "deployer:geronimo:inVM";
String username = "system";
String password = "manager";
dManager = dFactoryMgr.getDeploymentManager(uri, username, password);
System.out.println("Targets:");
Target[] targets = dManager.getTargets();
for(Target t : targets) {
System.out.println(t);
}
System.out.println("Modules:");
TargetModuleID[] moduleIDs = dManager.getRunningModules(null, targets);
for(TargetModuleID m : moduleIDs) {
System.out.println(m);
}
With the code above I tried to accomplish my goal. But if I run this
one I get the following exception:
14:38:55,100 ERROR [BaseDeploymentFactory]
org.apache.geronimo.web.deployment.WARConfigurer
java.lang.ClassCastException:
org.apache.geronimo.web.deployment.WARConfigurer
at
org.apache.geronimo.deployment.plugin.jmx.LocalDeploymentManager.loadMod
uleConfigurers(LocalDeploymentManager.java:51)
at
org.apache.geronimo.deployment.plugin.jmx.LocalDeploymentManager.<init>(
LocalDeploymentManager.java:41)
at
org.apache.geronimo.deployment.plugin.factories.BaseDeploymentFactory.ge
tDeploymentManager(BaseDeploymentFactory.java:133)
at
javax.enterprise.deploy.shared.factories.DeploymentFactoryManager.getDep
loymentManager(DeploymentFactoryManager.java:109)
at
de.furtwangen.hs.informatik.geronimo.ac.MigrationService.test
(MigrationService.java:37)
at
de.furtwangen.hs.informatik.geronimo.ac.AutonomicGeronimoGBean.testMigra
tion(AutonomicGeronimoGBean.java:202)
at
de.furtwangen.hs.informatik.geronimo.ac.AutonomicGeronimoGBean$
$FastClassByCGLIB$$78735f6f.invoke(<generated>)
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke
(FastMethodInvoker.java:38)
at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke
(GBeanOperation.java:127)
at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke
(GBeanInstance.java:863)
at org.apache.geronimo.kernel.basic.BasicKernel.invoke
(BasicKernel.java:239)
at org.apache.geronimo.system.jmx.MBeanGBeanBridge.invoke
(MBeanGBeanBridge.java:168)
at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke
(DynamicMetaDataImpl.java:213)
at com.sun.jmx.mbeanserver.MetaDataImpl.invoke
(MetaDataImpl.java:220)
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke
(DefaultMBeanServerInterceptor.java:815)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke
(JmxMBeanServer.java:784)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation
(RMIConnectionImpl.java:1408)
at javax.management.remote.rmi.RMIConnectionImpl.access$100
(RMIConnectionImpl.java:81)
at javax.management.remote.rmi.RMIConnectionImpl
$PrivilegedOperation.run(RMIConnectionImpl.java:1245)
at
javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation
(RMIConnectionImpl.java:1341)
at javax.management.remote.rmi.RMIConnectionImpl.invoke
(RMIConnectionImpl.java:782)
at sun.reflect.GeneratedMethodAccessor187.invoke(Unknown
Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at sun.rmi.server.UnicastServerRef.dispatch
(UnicastServerRef.java:294)
at sun.rmi.transport.Transport$1.run(Transport.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
at sun.rmi.transport.tcp.TCPTransport.handleMessages
(TCPTransport.java:466)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run
(TCPTransport.java:707)
at java.lang.Thread.run(Thread.java:613)
Is there another way to deploy/undeploy GBeans via another GBean?
I even tried it with another URI (String uri =
"deployer:geronimo:jmx:rmi://localhost/jndi/rmi:/JMXConnector";) but
with that I still got a worse result.
javax.enterprise.deploy.spi.exceptions.DeploymentManagerCreationExceptio
n: Failed to retrieve RMIServer stub:
javax.naming.NoInitialContextException: Cannot instantiate class:
org.apache.xbean.naming.global.GlobalContextManager [Root exception
is java.lang.ClassNotFoundException:
org.apache.xbean.naming.global.GlobalContextManager]
at
org.apache.geronimo.deployment.plugin.factories.BaseDeploymentFactory.ne
wRemoteDeploymentManager(BaseDeploymentFactory.java:167)
at
org.apache.geronimo.deployment.plugin.factories.BaseDeploymentFactory.ge
tDeploymentManager(BaseDeploymentFactory.java:131)
at
javax.enterprise.deploy.shared.factories.DeploymentFactoryManager.getDep
loymentManager(DeploymentFactoryManager.java:109)
at
de.furtwangen.hs.informatik.geronimo.ac.MigrationService.test
(MigrationService.java:37)
at
de.furtwangen.hs.informatik.geronimo.ac.AutonomicGeronimoGBean.testMigra
tion(AutonomicGeronimoGBean.java:202)
at
de.furtwangen.hs.informatik.geronimo.ac.AutonomicGeronimoGBean$
$FastClassByCGLIB$$78735f6f.invoke(<generated>)
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke
(FastMethodInvoker.java:38)
at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke
(GBeanOperation.java:127)
at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke
(GBeanInstance.java:863)
at org.apache.geronimo.kernel.basic.BasicKernel.invoke
(BasicKernel.java:239)
at org.apache.geronimo.system.jmx.MBeanGBeanBridge.invoke
(MBeanGBeanBridge.java:168)
at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke
(DynamicMetaDataImpl.java:213)
at com.sun.jmx.mbeanserver.MetaDataImpl.invoke
(MetaDataImpl.java:220)
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke
(DefaultMBeanServerInterceptor.java:815)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke
(JmxMBeanServer.java:784)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation
(RMIConnectionImpl.java:1408)
at javax.management.remote.rmi.RMIConnectionImpl.access$100
(RMIConnectionImpl.java:81)
at javax.management.remote.rmi.RMIConnectionImpl
$PrivilegedOperation.run(RMIConnectionImpl.java:1245)
at
javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation
(RMIConnectionImpl.java:1341)
at javax.management.remote.rmi.RMIConnectionImpl.invoke
(RMIConnectionImpl.java:782)
at sun.reflect.GeneratedMethodAccessor187.invoke(Unknown
Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at sun.rmi.server.UnicastServerRef.dispatch
(UnicastServerRef.java:294)
at sun.rmi.transport.Transport$1.run(Transport.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
at sun.rmi.transport.tcp.TCPTransport.handleMessages
(TCPTransport.java:466)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run
(TCPTransport.java:707)
at java.lang.Thread.run(Thread.java:613)
Caused by: java.io.IOException: Failed to retrieve RMIServer stub:
javax.naming.NoInitialContextException: Cannot instantiate class:
org.apache.xbean.naming.global.GlobalContextManager [Root exception
is java.lang.ClassNotFoundException:
org.apache.xbean.naming.global.GlobalContextManager]
at javax.management.remote.rmi.RMIConnector.connect
(RMIConnector.java:317)
at javax.management.remote.JMXConnectorFactory.connect
(JMXConnectorFactory.java:248)
at
org.apache.geronimo.deployment.plugin.factories.BaseDeploymentFactory.ne
wRemoteDeploymentManager(BaseDeploymentFactory.java:159)
... 30 more
Caused by: javax.naming.NoInitialContextException: Cannot instantiate
class: org.apache.xbean.naming.global.GlobalContextManager [Root
exception is java.lang.ClassNotFoundException:
org.apache.xbean.naming.global.GlobalContextManager]
at javax.naming.spi.NamingManager.getInitialContext
(NamingManager.java:657)
at javax.naming.InitialContext.getDefaultInitCtx
(InitialContext.java:247)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.<init>(InitialContext.java:197)
at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI
(RMIConnector.java:1815)
at javax.management.remote.rmi.RMIConnector.findRMIServer
(RMIConnector.java:1787)
at javax.management.remote.rmi.RMIConnector.connect
(RMIConnector.java:259)
... 32 more
Caused by: java.lang.ClassNotFoundException:
org.apache.xbean.naming.global.GlobalContextManager
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:
268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:
319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:242)
at com.sun.naming.internal.VersionHelper12.loadClass
(VersionHelper12.java:42)
at javax.naming.spi.NamingManager.getInitialContext
(NamingManager.java:654)
... 38 more
Since I've the package org.apache.xbean.naming in my classpath I
don't no why geronimo can't instantiate a class of them.
So has anyone an idea how to solve a deply/undeploy task?
Best regards,
Stefan
PS: I miss opened this thread at [EMAIL PROTECTED] and "closed"
it. Sorry for the inconvenience.