You are currently reviewing an older revision of this page.

KB-1124 OSGI-related errors cause JBoss deployment to fail

Symptoms

JBoss fails to start up due to one of the following errors:

ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/suite]] (ServerService Thread Pool -- 59) JBWEB000287: Exception sending context initialized event to listener instance of class com.appiancorp.plugins.PluginLoader: java.lang.NullPointerException
        at com.atlassian.plugin.osgi.util.OsgiHeaderUtil.getPluginKey(OsgiHeaderUtil.java:374) [atlassian-plugins-osgi-2.12.3-appian-1.0.jar:]
        at com.atlassian.plugin.osgi.container.felix.FelixOsgiContainerManager$BundleRegistration.install(FelixOsgiContainerManager.java:574) [atlassian-plugins-osgi-2.12.3-appian-1.0.jar:]
        at com.atlassian.plugin.osgi.container.felix.FelixOsgiContainerManager.installBundle(FelixOsgiContainerManager.java:450) [atlassian-plugins-osgi-2.12.3-appian-1.0.jar:]
        at com.atlassian.plugin.osgi.factory.OsgiPluginUninstalledHelper.install(OsgiPluginUninstalledHelper.java:68) [atlassian-plugins-osgi-2.12.3-appian-1.0.jar:]
        at com.atlassian.plugin.osgi.factory.OsgiPlugin.installInternal(OsgiPlugin.java:381) [atlassian-plugins-osgi-2.12.3-appian-1.0.jar:]
        at com.atlassian.plugin.impl.AbstractPlugin.install(AbstractPlugin.java:329) [atlassian-plugins-core-2.12.3.jar:]
        at com.atlassian.plugin.manager.DefaultPluginManager.addPlugins(DefaultPluginManager.java:695) [atlassian-plugins-core-2.12.3.jar:]
        at com.atlassian.plugin.manager.DefaultPluginManager.init(DefaultPluginManager.java:167) [atlassian-plugins-core-2.12.3.jar:]
        at com.appiancorp.plugins.AppianPluginManager.init(AppianPluginManager.java:77) [appian-plugins.jar:]
        at com.appiancorp.plugins.AppianPlugins.start(AppianPlugins.java:189) [appian-plugins.jar:]
        at com.appiancorp.plugins.ContainerManager.(ContainerManager.java:554) [appian-plugins.jar:]
        at com.appiancorp.plugins.PluginLoader.initialize(PluginLoader.java:62) [appian-plugins.jar:]
        at com.appiancorp.plugins.PluginLoader.contextInitialized0(PluginLoader.java:78) [appian-plugins.jar:]
        at com.appiancorp.common.AppianServletContextListener.contextInitialized(AppianServletContextListener.java:33) [appian-common.jar:]
        at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3339) [jbossweb-7.3.1.Final-redhat-1.jar:7.3.1.Final-redhat-1]
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:3777) [jbossweb-7.3.1.Final-redhat-1.jar:7.3.1.Final-redhat-1]
        at org.jboss.as.web.deployment.WebDeploymentService.doStart(WebDeploymentService.java:156) [jboss-as-web-7.3.2.Final-redhat-2.jar:7.3.2.Final-redhat-2]
        at org.jboss.as.web.deployment.WebDeploymentService.access$000(WebDeploymentService.java:60) [jboss-as-web-7.3.2.Final-redhat-2.jar:7.3.2.Final-redhat-2]
        at org.jboss.as.web.deployment.WebDeploymentService$1.run(WebDeploymentService.java:93) [jboss-as-web-7.3.2.Final-redhat-2.jar:7.3.2.Final-redhat-2]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_65]
        at java.util.concurrent.FutureTask.run(FutureTask.java:262) [rt.jar:1.7.0_65]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_65]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_65]
        at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_65]
        at org.jboss.threads.JBossThread.run(JBossThread.java:122)
ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/suite]] (ServerService Thread Pool -- 69) JBWEB000287: Exception sending context initialized event to listener instance of class com.appiancorp.plugins.PluginLoader: com.atlassian.plugin.osgi.container.OsgiContainerException: Unable to clean the cache directory: C:\appian\710\ear\suite.ear\web.war\WEB-INF\osgi-cache\felix
at com.atlassian.plugin.osgi.container.impl.DefaultOsgiPersistentCache.validate(DefaultOsgiPersistentCache.java:91) [atlassian-plugins-osgi-2.12.3-appian-1.1.jar:]
at com.atlassian.plugin.osgi.container.impl.DefaultOsgiPersistentCache.<init>(DefaultOsgiPersistentCache.java:37) [atlassian-plugins-osgi-2.12.3-appian-1.1.jar:]
at com.atlassian.plugin.osgi.container.impl.DefaultOsgiPersistentCache.<init>(DefaultOsgiPersistentCache.java:47) [atlassian-plugins-osgi-2.12.3-appian-1.1.jar:]
at com.atlassian.plugin.main.PluginsConfigurationBuilder$InternalPluginsConfiguration.<init>(PluginsConfigurationBuilder.java:279) [atlassian-plugins-main-2.12.3.jar:]
at com.atlassian.plugin.main.PluginsConfigurationBuilder.build(PluginsConfigurationBuilder.java:242) [atlassian-plugins-main-2.12.3.jar:]
at com.appiancorp.plugins.ContainerManager.<init>(ContainerManager.java:476) [appian-plugins.jar:]
at com.appiancorp.plugins.PluginLoader.initialize(PluginLoader.java:65) [appian-plugins.jar:]
at com.appiancorp.plugins.PluginLoader.contextInitialized0(PluginLoader.java:81) [appian-plugins.jar:]
at com.appiancorp.common.AppianServletContextListener.contextInitialized(AppianServletContextListener.java:38) [appian-common.jar:]
at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3339) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3780) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
at org.jboss.as.web.deployment.WebDeploymentService.doStart(WebDeploymentService.java:163) [jboss-as-web-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21]
at org.jboss.as.web.deployment.WebDeploymentService.access$000(WebDeploymentService.java:61) [jboss-as-web-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21]
at org.jboss.as.web.deployment.WebDeploymentService$1.run(WebDeploymentService.java:96) [jboss-as-web-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [rt.jar:1.8.0_60]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_60]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_60]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_60]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_60]
at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Caused by: java.io.IOException: Unable to delete directory C:\appian\710\ear\suite.ear\web.war\WEB-INF\osgi-cache\felix\felix-cache\bundle7.
at org.apache.commons.io.FileUtils.deleteDirectory(FileUtils.java:981) [commons-io-1.4.jar:1.4]
at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:1381) [commons-io-1.4.jar:1.4]
at org.apache.commons.io.FileUtils.cleanDirectory(FileUtils.java:1044) [commons-io-1.4.jar:1.4]
at org.apache.commons.io.FileUtils.deleteDirectory(FileUtils.java:977) [commons-io-1.4.jar:1.4]
at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:1381) [commons-io-1.4.jar:1.4]
at org.apache.commons.io.FileUtils.cleanDirectory(FileUtils.java:1044) [commons-io-1.4.jar:1.4]
at com.atlassian.plugin.osgi.container.impl.DefaultOsgiPersistentCache.validate(DefaultOsgiPersistentCache.java:87) [atlassian-plugins-osgi-2.12.3-appian-1.1.jar:]
... 19 more
ERROR com.appiancorp.plugins.osgi.FileDelete - Delete files failures count: 16 
ERROR com.appiancorp.plugins.osgi.FileDelete - Delete directories failures count: 32
ERROR com.appiancorp.plugins.osgi.FileInteractionMessage - Could not delete file: C:<APPIAN_HOME>\ear\suite.ear\web.war\WEB-INF\plugin-caches\osgi-cache\felix\felix-cache\bundle1\version0.0\bundle.jar: [exists][file][readable][writable][executable]:Could not delete file; this is the root failure in the deletion
ERROR com.appiancorp.plugins.osgi.FileInteractionMessage - Could not delete file due to: [Could not delete file; this is the root failure in the deletion]

Cause

The OSGI cache is in an inconsistent state and the application server is unable to remove it on its own.

Action

  1. Stop JBoss.
  2. Delete the contents of one of the following directories (but not the directory itself), depending on your version of Appian:
    • Appian 16.3 and earlier: <APPIAN_HOME>/ear/suite.ear/web.war/WEB-INF/osgi-cache
    • Appian 17.1 and later: <APPIAN_HOME>/ear/suite.ear/web.war/WEB-INF/plugin-caches/osgi-cache
  3. Start JBoss.

The contents of that directory are recreated during the subsequent application server restart.

Affected Versions

This article applies to all versions of Appian using JBoss as an application server.

Last Reviewed: April 2017