[
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