Bitbucket Data Center is not starting due to DocumentBuilderFactoryImpl class not found

Still need help?

The Atlassian Community is here for you.

Ask the community

Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.

Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Summary

After attempting to add the AppDynamics java agent or after upgrading, Bitbucket Data Center fails to start.

Environment

  • Bitbucket Data Center
  • AppDynamics Java Agent

Diagnosis

The following appears in the atlassian-bitbucket.log file after the failed Bitbucket start was attempted:

2024-08-16 16:21:02,522 ERROR [FelixDispatchQueue]  c.a.p.o.c.f.FelixOsgiContainerManager Framework error in bundle org.eclipse.gemini.blueprint.extender
org.osgi.framework.BundleException: Activator start error in bundle org.eclipse.gemini.blueprint.extender [6].
	at org.apache.felix.framework.Felix.activateBundle(Felix.java:2479)
	at java.base/java.lang.Thread.run(Thread.java:842)
	... 3 frames trimmed
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from OSGi resource[bundle://02cfbe30-65f3-4d5b-a948-0dd78ee49197_11.0:0/META-INF/spring/extender/bitbucket-plugin-extender.xml|bnd.id=6|bnd.sym=org.eclipse.gemini.blueprint.extender]; nested exception is javax.xml.parsers.FactoryConfigurationError: Provider for class javax.xml.parsers.DocumentBuilderFactory cannot be created
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:417)
	at org.eclipse.gemini.blueprint.context.support.OsgiBundleXmlApplicationContext.loadBeanDefinitions(OsgiBundleXmlApplicationContext.java:171)
	at org.eclipse.gemini.blueprint.context.support.OsgiBundleXmlApplicationContext.loadBeanDefinitions(OsgiBundleXmlApplicationContext.java:141)
	at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131)
	at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:679)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:562)
	at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.access$301(AbstractDelegatedExecutionApplicationContext.java:57)
	at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext$1.run(AbstractDelegatedExecutionApplicationContext.java:165)
	at org.eclipse.gemini.blueprint.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
	at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.normalRefresh(AbstractDelegatedExecutionApplicationContext.java:161)
	at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext$NoDependenciesWaitRefreshExecutor.refresh(AbstractDelegatedExecutionApplicationContext.java:75)
	at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:154)
	at org.eclipse.gemini.blueprint.extender.internal.support.ExtenderConfiguration.start(ExtenderConfiguration.java:164)
	at org.eclipse.gemini.blueprint.extender.internal.boot.ChainActivator.start(ChainActivator.java:93)
	... 2 common frames omitted
Caused by: javax.xml.parsers.FactoryConfigurationError: Provider for class javax.xml.parsers.DocumentBuilderFactory cannot be created
	at java.xml/javax.xml.parsers.FactoryFinder.findServiceProvider(FactoryFinder.java:307)
	at java.xml/javax.xml.parsers.FactoryFinder.find(FactoryFinder.java:262)
	at java.xml/javax.xml.parsers.DocumentBuilderFactory.newInstance(DocumentBuilderFactory.java:172)
	at org.eclipse.gemini.blueprint.context.support.BlueprintDocumentLoader.createDocumentBuilderFactory(BlueprintDocumentLoader.java:42)
	... 15 common frames omitted
Caused by: java.lang.RuntimeException: Provider for class javax.xml.parsers.DocumentBuilderFactory cannot be created
	at java.xml/javax.xml.parsers.FactoryFinder.findServiceProvider(FactoryFinder.java:304)
	... 18 common frames omitted
Caused by: java.util.ServiceConfigurationError: javax.xml.parsers.DocumentBuilderFactory: Provider org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not found
	at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:593)
	at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass(ServiceLoader.java:1219)
	at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1228)
	at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1273)
	at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1309)
	at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1393)
	at java.xml/javax.xml.parsers.FactoryFinder$1.run(FactoryFinder.java:289)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
	at java.xml/javax.xml.parsers.FactoryFinder.findServiceProvider(FactoryFinder.java:285)
	... 18 common frames omitted


The plugins will time out in starting, which is not root the issue. While no specific AppDynamics error is specifically mentioned, we can see reference for the Felix boot delegation: "org.osgi.framework.bootdelegation=META-INF.services,com.singularity.". This class belongs to AppDynamics, which is a JVM monitoring tool to view your application metrics and more. 

2024-08-16 16:21:00,536 DEBUG [spring-startup]  c.a.p.o.c.f.FelixOsgiContainerManager Felix configuration: {felix.bootdelegation.implicit=false, felix.cache.rootdir=/opt/stash/data/plugins/.osgi-cache/felix, felix.log.level=4, felix.log.logger=com.atlassian.plugin.osgi.container.felix.FelixLoggerBridge@c057780, org.osgi.framework.bootdelegation=META-INF.services,com.singularity.,com.jprofiler,com.jprofiler.,org.apache.xerces,org.apache.xerces.,org.apache.xalan,org.apache.xalan.,sun.,com.sun.jndi,com.icl.saxon,com.icl.saxon.,javax.servlet,javax.servlet.,com.sun.xml.bind.,jdk.internal.reflect,jdk.internal.reflect.*, org.osgi.framework.bundle.parent=framework, org.osgi.framework.system.packages.extra=ch.qos.logback.classic;version=1.2.13,ch.qos.logback.classic.boolex;version=1.2.13,ch.qos.logback.classic.db.names;version=1.2.13,ch.qos.logback.classic.db.script;version=1.2.13,ch.qos.logback.classic.encoder;version=1.2.13,ch.qos.logback.classic.filter;version=1.2.13,ch.qos.logback.classic.helpers;version=1.2.13,ch.qos.logback.classic.html;version=1.2.13,ch.qos.logback.classic.jmx;version=1.2.13,ch.qos.logback.classic.joran;version=1.2.13,ch.qos.logback.classic.joran.action;version=1.2.13,ch.qos.logback.classic.jul;version=1.2.13,ch.qos.logback.classic.layout;version=1.2.13,ch.qos.logback.classic.log4j;version=1.2.13,ch.qos.logback.classic.net;version=1.2.13,ch.qos.logback.classic.net.server;version=1.2.13,ch.qos.logback.classic.pattern;version=1.2.13,ch.qos.logback.classic.pattern.color;version=1.2.13,ch.qos.logback.classic.selector;version=1.2.13,ch.qos.logback.classic.selector.servlet;version=1.2.13,ch.qos.logback.classic.servlet;version=1.2.13,ch.qos.logback.classic.sift;version=1.2.13,ch.qos.logback.classic.spi;version=8.19.5,ch.qos.logback.classic.turbo;version=1.2.13,ch.qos.logback.classic.util;version=1.2.13,ch.qos.logback.core;version=1.2.13,ch.qos.logback.core.boolex;version=1.2.13,ch.qos.logback.core.encoder;version=1.2.13,ch.qos.logback.core.filter;version=1.2.13,ch.qos.logback.core.helpers;version=1.2.13,ch.qos.logback.core.hook;version=1.2.13,ch.qos.logback.core.html;version=1.2.13,ch.qos.logback.core.joran;version=1.2.13,ch.qos.logback.core.joran.action;version=1.2.13,ch.qos.logback.core.joran.conditional;version=1.2.13,ch.qos.logback.core.joran.event;version=1.2.13,ch.qos.logback.core.joran.event.stax;version=1.2.13,ch.qos.logback.core.joran.node;version=1.2.13,ch.qos.logback.core.joran.spi;version=1.2.13,ch.qos.logback.core.joran.util;version=1.2.13,ch.qos.logback.core.joran.util.beans;version=1.2.13,ch.qos.logback.core.layout;version=1.2.13,ch.qos.logback.core.net;version=1.2.13,ch.qos.logback.core.net.server;version=1.2.13,ch.qos.logback.core.net.ssl;version=1.2.13,ch.qos.logback.core.pattern;version=1.2.13,ch.qos.logback.core.pattern.color;version=1.2.13,ch.qos.logback.core.pattern.parser;version=1.2.13,ch.qos.logback.core.pattern.util;version=1.2.13,ch.qos.logback.core.property;version=1.2.13,ch.qos.logback.core.read;version=1.2.13,ch.qos.logback.core.recovery;version=1.2.13,ch.qos.logback.core.rolling;version=1.2.13,ch.qos.logback.core.rolling.helper;version=1.2.13,ch.qos.logback.core.sift;version=1.2.13,ch.qos.logback.core.spi;version=1.2.13,ch.qos.logback.core.status;version=1.2.13,ch.qos.logback.core.subst;version=1.2.13,ch.qos.logback.core.util;version=1.2.13,com.atlassian.activeobjects.spi;version=5.3.1,com.atlassian.analytics.api.annotations;version=8.4.2,com.atlassian.analytics.api.annotations.v2;version=8.4.2,com.atlassian.analytics.api.events;version=8.4.2,com.atlassian.analytics.api.events.v2;version=8.4.2,com.atlassian.analytics.api.extractor;version=8.4.2,com.atlassian.analytics.api.listener;version=8.4.2,com.atlassian.analytics.api.services;version=8.4.2,com.atlassian.annotations;version=4.0.3,com.atlassian.annotations.nonnull;version=4.0.3,com.atlassian.annotations.nullability;version=4.0.3,com.atlassian.annotations.security;version=4.0.3,com.atlassian.annotations.tenancy;version=4.0.3,com.atlassian.applinks.api;version=9.2.4,com.atlassian.applinks.api.application.bamboo;version=9.2.4,com.atlassian.applinks.api.application.bitbucket;version=9.2.4,com.atlassian.applinks.api.application.confluence;version=9.2.4,com.atlassian.applinks.api.application.crowd;version=9.2.4,com.atlassian.applinks.api.application.fecru;version=9.2.4,com.atlassian.applinks.api.application.generic;version=9.2.4,com.atlassian.applinks.api.application.jira;version=9.2.4,com.atlassian.applinks.api.application.refapp;version=9.2.4,com.atlassian.applinks.api.application.stash;version=9.2.4,com.atlassian.applinks.api.auth;version=9.2.4,com.atlassian.applinks.api.auth.oauth;version=9.2.4,com.atlassian.applinks.api.auth.types;version=9.2.4,com.atlassian.applinks.api.event;version=9.2.4,com.atlassian.applinks.api.oauth2;version=9.2.4,com.atlassian.applinks.host;version=9.2.4,com.atlassian.applinks.host.spi;version=9.2.4,com.atlassian.applinks.host.spring;version=9.2.4,com.atlassian.applinks.host.util;version=9.2.4,com.atlassian.applinks.spi;version=9.2.4,com.atlassian.applinks.spi.application;version=9.2.4,com.atlassian.applinks.spi.auth;version=9.2.4,com.atlassian.applinks.spi.link;version=9.2.4,com.atlassian.applinks.spi.manifest;version=9.2.4,com.atlassian.applinks.spi.util;version=9.2.4,com.atlassian.audit.api;version=1.16.3,com.atlassian.audit.api.events;version=1.16.3,com.atlassian.audit.api.util.pagination;version=1.16.3,com.atlassian.audit.core;version=1.16.3,com.atlassian.audit.core.ecosystem;version=1.16.3,com.atlassian.audit.core.impl.broker;version=1.16.3,com.atlassian.audit.core.impl.service;version=1.16.3,com.atlassian.audit.core.spi;version=1.16.3,com.atlassian.audit.core.spi.service;version=1.16.3,com.atlassian.audit.entity;version=1.16.3,com.atlassian.audit.spi.entity;version=1.16.3,com.atlassian.audit.spi.feature;version=1.16.3,com.atlassian.audit.spi.lookup;version=1.16.3,com.atlassian.audit.spi.migration;version=1.16.3,com.atlassian.audit.spi.permission;version=1.16.3,com.atlassian.bamboo;version=3.4.6,com.atlassian.beehive;version=5.1.0,com.atlassian.bitbucket;version=8.19.5,com.atlassian.bitbucket.activity;version=8.19.5,com.atlassian.bitbucket.attachment;version=8.19.5,com.atlassian.bitbucket.attribute;version=8.19.5,com.atlassian.bitbucket.audit;version=8.19.5,com.atlassian.bitbucket.auth;version=8.19.5,com.atlassian.bitbucket.avatar;version=8.19.5,com.atlassian.bitbucket.build;version=8.19.5,com.atlassian.bitbucket.build.server;version=8.19.5,com.atlassian.bitbucket.build.server.operations;version=8.19.5,com.atlassian.bitbucket.build.status;version=8.19.5,com.atlassian.bitbucket.cluster;version=8.19.5,com.atlassian.bitbucket.codeinsights;version=8.19.5,com.atlassian.bitbucket.codeinsights.annotation;version=8.19.5,com.atlassian.bitbucket.codeinsights.coverage;version=8.19.5,com.atlassian.bitbucket.codeinsights.report;version=8.19.5,com.atlassian.bitbucket.comment;version=8.19.5,com.atlassian.bitbucket.commit;version=8.19.5,com.atlassian.bitbucket.commit.graph;version=8.19.5,com.atlassian.bitbucket.compare;version=8.19.5,com.atlassian.bitbucket.concurrent;version=8.19.5,com.atlassian.bitbucket.content;version=8.19.5,com.atlassian.bitbucket.dashboard;version=8.19.5,com.atlassian.bitbucket.dmz.admin.banner;version=8.19.5,com.atlassian.bitbucket.dmz.annotation;version=8.19.5,com.atlassian.bitbucket.dmz.auditing;version=8.19.5,com.atlassian.bitbucket.dmz.autodecline;version=8.19.5,com.atlassian.bitbucket.dmz.build;version=8.19.5,com.atlassian.bitbucket.dmz.build.operations;version=8.19.5,com.atlassian.bitbucket.dmz.build.server;version=8.19.5,com.atlassian.bitbucket.dmz.build.status;version=8.19.5,com.atlassian.bitbucket.dmz.build.status.dao;version=8.19.5,com.atlassian.bitbucket.dmz.build.status.legacy;version=8.19.5,com.atlassian.bitbucket.dmz.cluster;version=8.19.5,com.atlassian.bitbucket.dmz.cluster.exception;version=8.19.5,com.atlassian.bitbucket.dmz.codeowners;version=8.19.5,com.atlassian.bitbucket.dmz.comment;version=8.19.5,com.atlassian.bitbucket.dmz.commit;version=8.19.5,com.atlassian.bitbucket.dmz.concurrent;version=8.19.5,com.atlassian.bitbucket.dmz.deployment;version=8.19.5,com.atlassian.bitbucket.dmz.deployments;version=8.19.5,com.atlassian.bitbucket.dmz.deployments.event;version=8.19.5,com.atlassian.bitbucket.dmz.discovery;version=8.19.5,com.atlassian.bitbucket.dmz.emoticon;version=8.19.5,com.atlassian.bitbucket.dmz.features;version=8.19.5,com.atlassian.bitbucket.dmz.git.lfs;version=8.19.5,com.atlassian.bitbucket.dmz.hook.script;version=8.19.5,com.atlassian.bitbucket.dmz.idx;version=8.19.5,com.atlassian.bitbucket.dmz.markup.renderer;version=8.19.5,com.atlassian.bitbucket.dmz.mdc;version=8.19.5,com.atlassian.bitbucket.dmz.mesh;version=8.19.5,com.atlassian.bitbucket.dmz.migration;version=8.19.5,com.atlassian.bitbucket.dmz.mirror;version=8.19.5,com.atlassian.bitbucket.dmz.mirror.event;version=8.19.5,com.atlassian.bitbucket.dmz.mirror.hash;version=8.19.5,com.atlassian.bitbucket.dmz.monitoring;version=8.19.5,com.atlassian.bitbucket.dmz.notification;version=8.19.5,com.atlassian.bitbucket.dmz.notification.commit;version=8.19.5,com.atlassian.bitbucket.dmz.notification.pull;version=8.19.5,com.atlassian.bitbucket.dmz.notification.pull.custom;version=8.19.5,com.atlassian.bitbucket.dmz.notification.repository;version=8.19.5,com.atlassian.bitbucket.dmz.permission;version=8.19.5,com.atlassian.bitbucket.dmz.policy;version=8.19.5,com.atlassian.bitbucket.dmz.process;version=8.19.5,com.atlassian.bitbucket.dmz.pull;version=8.19.5,com.atlassian.bitbucket.dmz.pull.automerge;version=8.19.5,com.atlassian.bitbucket.dmz.pull.template;version=8.19.5,com.atlassian.bitbucket.dmz.ratelimit;version=8.19.5,com.atlassian.bitbucket.dmz.repository;version=8.19.5,com.atlassian.bitbucket.dmz.repositorymanagement;version=8.19.5,com.atlassian.bitbucket.dmz.request;version=8.19.5,com.atlassian.bitbucket.dmz.resilience;version=8.19.5,com.atlassian.bitbucket.dmz.secretscanning;version=8.19.5,com.atlassian.bitbucket.dmz.secretscanning.event;version=8.19.5,com.atlassian.bitbucket.dmz.secretscanning.scan;version=8.19.5,com.atlassian.bitbucket.dmz.secretscanning.validation;version=8.19.5,com.atlassian.bitbucket.dmz.server;version=8.19.5,com.atlassian.bitbucket.dmz.settingsrestriction;version=8.19.5,com.atlassian.bitbucket.dmz.signature.verification;version=8.19.5,com.atlassian.bitbucket.dmz.ssh;version=8.19.5,com.atlassian.bitbucket.dmzh4


Cause

The OSGi boot delegation is not configured correctly and is causing the startup to fail. To work, AppDynamics must be injected into the OSGI framework model and this is done by modifying the JVM arguments. Doing so incorrectly, impacts the boot order for necessary classes causing problems with the application not starting or failing to start. Adding atlassian.org.osgi.framework.bootdelegation.extra to the JVM arguments will append the classes for AppDynamics so that the default boot order is preserved.

Solution

  • Update the JVM_SUPPORT_RECOMMENDED_ARGS variable (in the _start-webapp.sh / _start-webapp.bat file located in $BITBUCKET_HOME/bin) by adding the atlassian.org.osgi.framework.bootdelegation.extra option with the following value:
-Datlassian.org.osgi.framework.bootdelegation.extra=com.singularity.*
  • Restart Bitbucket Data Center

After applying this change, your JVM_SUPPORT_RECOMMENDED_ARGS variable may look something like:

JVM_SUPPORT_RECOMMENDED_ARGS="-javaagent:/path/to/appdynamics/java-agent/javaagent.jar -Dappdynamics.agent.tierName=SOMETHING_HERE -Dappdynamics.agent.nodeName=SOMETHING_HERE -Datlassian.org.osgi.framework.bootdelegation.extra=com.singularity.*"

If using the above example, be sure to add any other needed settings (based on your team's existing settings for this variable), as well as modify the above -Dappdynamics.* and -javaagent arguments to match your company's desired values.

Last modified on Aug 20, 2024

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.