Always initialize logging with available SAX parser factory

Description

Migrated from NovaTec Jira. Originalticket: INSPECTIT-1131

The guys form the iPoint tried the newest version of the inspectIT with their UI Spring-based application and get the Linkage error on the Agent loading.. I advised them to place -Xbootclasspath/p:[INSPECTIT_AGENT_HOME]/inspectit-agent.jar cause it seams they miss this.. But I doubt this would solve it..

Here is the log and the Spring dependencies on their side:

Environment

None

Activity

Show:
Stefan Siegl
June 26, 2015, 6:57 AM

2014-08-18T11:01:16.000+0200 by Ivan Senic

As reported by the customer adding the -Xbootclasspath to the start-up parameters solved this problem.. Unfortunately, they have additional problem with using logback on the agent, but I think it's due to the settings they have for the SAXParserFactory.

Stefan Siegl
June 26, 2015, 6:57 AM

2014-08-11T16:33:56.000+0200 by Patrice Bouillet

Problem is they use spring in a different version than we do and their classes are loaded with the sun/misc/Launcher$AppClassLoader classloader (which would not happen in an application server). As we cannot initialize ourselves, we could solve it like this: We need to scan all classes which we deliver on our own (spring etc.) and register them in our classloader to not delegate to the parent but load by itself. With this, we should not load the spring class from the appclassloader.

Stefan Siegl
June 26, 2015, 6:57 AM

2014-08-11T16:52:32.000+0200 by Ivan Senic

So you also believe that -Xbootclasspath/p:[INSPECTIT_AGENT_HOME]/inspectit-agent.jar won't solve this? I would opt then to put this to high priority and handle in 1.6.2 version.

Ivan Senic
July 19, 2016, 10:52 AM

We figured out that log initialization will not work if the

option is set in the JVM with the class that is not available to our class loader. Thus, we must ensure that log initialization is always going for available class. By default that should be: com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl or we can simply leave it empty.

Alexander Wert
August 26, 2016, 9:08 AM

SUCCESS: Integrated in

inspectIT - Integration #189
INSPECTIT-1791: Always using default SAX parser factory during log (patrice.bouillet: f56739742014f0bb2e3b95d7306a47d6266dad34)

  • (edit) inspectit.agent.java/src/main/java/rocks/inspectit/agent/java/logback/LogInitializer.java

Cannot Reproduce

Assignee

Ivan Senic

Reporter

Stefan Siegl

Labels

None

Integrator

Patrice Bouillet

Sprint

None

Fix versions

Priority

High