[ https://issues.apache.org/jira/browse/GERONIMODEVTOOLS-760?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13053974#comment-13053974 ]
Jarek Gawor commented on GERONIMODEVTOOLS-760: ---------------------------------------------- Committed possible solution to this problem in revision 1138994. The server monitoring tasks will now be started from a separate thread instead of the Activator. > Two GeronimoServerBehaviourDelegates created for one IServer > ------------------------------------------------------------ > > Key: GERONIMODEVTOOLS-760 > URL: > https://issues.apache.org/jira/browse/GERONIMODEVTOOLS-760 > Project: Geronimo-Devtools > Issue Type: Bug > Components: eclipse-plugin > Affects Versions: 3.0 > Reporter: Jarek Gawor > Assignee: Jarek Gawor > > Once in a while two GeronimoServerBehaviourDelegates are created for the same > IServer and GeronimoServerBehaviourDelegates.initialize() is called twice. > Here's a call stack from the two calls to .initialize(): > java.lang.Exception > at > org.apache.geronimo.st.v30.core.GeronimoServerBehaviourDelegate.initialize(GeronimoServerBehaviourDelegate.java:686) > at > org.eclipse.wst.server.core.model.ServerBehaviourDelegate.initialize(ServerBehaviourDelegate.java:102) > at > org.eclipse.wst.server.core.model.InternalInitializer.initializeServerBehaviourDelegate(InternalInitializer.java:41) > at > org.eclipse.wst.server.core.internal.Server.getBehaviourDelegate(Server.java:510) > at > org.eclipse.wst.server.core.internal.Server.loadAdapter(Server.java:1493) > at > org.apache.geronimo.st.v30.core.Activator.getGeronimoServerBehaviourDelegate(Activator.java:154) > at > org.apache.geronimo.st.v30.core.Activator.triggerStartUpdateServerTask(Activator.java:169) > at org.apache.geronimo.st.v30.core.Activator.start(Activator.java:117) > at > org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:783) > at java.security.AccessController.doPrivileged(Native Method) > at > org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:774) > at > org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:755) > at > org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:370) > at > org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:284) > at > org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:417) > at > org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:265) > at > org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:106) > at > org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:453) > at > org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216) > at > org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393) > at > org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:469) > at > org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422) > at > org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410) > at > org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) > at java.lang.ClassLoader.loadClass(ClassLoader.java:248) > at > org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:338) > at > org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:232) > at > org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1197) > at > org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174) > at > org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:904) > at > org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243) > at > org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55) > at > org.eclipse.wst.server.core.internal.ServerType.createServerBehaviourDelegate(ServerType.java:91) > at > org.eclipse.wst.server.core.internal.Server.getBehaviourDelegate(Server.java:508) > at > org.eclipse.wst.server.core.internal.Server.canPublish(Server.java:1095) > at > org.eclipse.wst.server.core.internal.Server.shouldPublish(Server.java:1109) > at > org.eclipse.wst.server.ui.internal.cnf.ServerDecorator.getServerStatusLabel(ServerDecorator.java:139) > at > org.eclipse.wst.server.ui.internal.cnf.ServerDecorator.decorate(ServerDecorator.java:73) > at > org.eclipse.ui.internal.decorators.LightweightDecoratorDefinition.decorate(LightweightDecoratorDefinition.java:269) > at > org.eclipse.ui.internal.decorators.LightweightDecoratorManager$LightweightRunnable.run(LightweightDecoratorManager.java:81) > at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) > at > org.eclipse.ui.internal.decorators.LightweightDecoratorManager.decorate(LightweightDecoratorManager.java:365) > at > org.eclipse.ui.internal.decorators.LightweightDecoratorManager.getDecorations(LightweightDecoratorManager.java:347) > at > org.eclipse.ui.internal.decorators.DecorationScheduler$1.ensureResultCached(DecorationScheduler.java:371) > at > org.eclipse.ui.internal.decorators.DecorationScheduler$1.run(DecorationScheduler.java:331) > at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) > java.lang.Exception > at > org.apache.geronimo.st.v30.core.GeronimoServerBehaviourDelegate.initialize(GeronimoServerBehaviourDelegate.java:686) > at > org.eclipse.wst.server.core.model.ServerBehaviourDelegate.initialize(ServerBehaviourDelegate.java:102) > at > org.eclipse.wst.server.core.model.InternalInitializer.initializeServerBehaviourDelegate(InternalInitializer.java:41) > at > org.eclipse.wst.server.core.internal.Server.getBehaviourDelegate(Server.java:510) > at > org.eclipse.wst.server.core.internal.Server.canPublish(Server.java:1095) > at > org.eclipse.wst.server.core.internal.Server.shouldPublish(Server.java:1109) > at > org.eclipse.wst.server.ui.internal.cnf.ServerDecorator.getServerStatusLabel(ServerDecorator.java:139) > at > org.eclipse.wst.server.ui.internal.cnf.ServerDecorator.decorate(ServerDecorator.java:73) > at > org.eclipse.ui.internal.decorators.LightweightDecoratorDefinition.decorate(LightweightDecoratorDefinition.java:269) > at > org.eclipse.ui.internal.decorators.LightweightDecoratorManager$LightweightRunnable.run(LightweightDecoratorManager.java:81) > at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) > at > org.eclipse.ui.internal.decorators.LightweightDecoratorManager.decorate(LightweightDecoratorManager.java:365) > at > org.eclipse.ui.internal.decorators.LightweightDecoratorManager.getDecorations(LightweightDecoratorManager.java:347) > at > org.eclipse.ui.internal.decorators.DecorationScheduler$1.ensureResultCached(DecorationScheduler.java:371) > at > org.eclipse.ui.internal.decorators.DecorationScheduler$1.run(DecorationScheduler.java:331) > at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) > I believe the first call stack leads to ClassCircularityError since > ConfigurationElementHandle attempts to load GeronimoServerBehaviourDelegate > class which combined with lazy activated bundle forces the Activator to be > called which attempts to load the GeronimoServerBehaviourDelegate class. > Disabling lazy loading seems to help. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira