5.4.29.18-BETA throws "Could not parse mapping document: null (INPUT_STREAM)"

Description

5.4.29.18-BETA will throw the following error during the initialization of the application.

Reproduction code is attached.

Lucee 5.3.10.94-RC Error (org.hibernate.boot.InvalidMappingException)

Message

Could not parse mapping document: null (INPUT_STREAM)

Entities

Employee, OfficeCubicle

_Datasource

general

Java Stacktrace

lucee.runtime.exp.NativeException: Could not parse mapping document: null (INPUT_STREAM)
  at org.hibernate.boot.jaxb.internal.InputStreamXmlSource.doBind(InputStreamXmlSource.java:46)
  at org.hibernate.boot.jaxb.internal.InputStreamXmlSource.doBind(InputStreamXmlSource.java:38)
  at org.hibernate.boot.spi.XmlMappingBinderAccess.bind(XmlMappingBinderAccess.java:94)
  at org.hibernate.boot.MetadataSources.addInputStream(MetadataSources.java:418)
  at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:475)
  at org.lucee.extension.orm.hibernate.HibernateSessionFactory.createConfiguration(HibernateSessionFactory.java:143)
  at org.lucee.extension.orm.hibernate.SessionFactoryData.setConfiguration(SessionFactoryData.java:198)
  at org.lucee.extension.orm.hibernate.HibernateORMEngine.getSessionFactoryData(HibernateORMEngine.java:173)
  at org.lucee.extension.orm.hibernate.HibernateORMEngine.init(HibernateORMEngine.java:55)
  at lucee.runtime.config.ConfigImpl.getORMEngine(ConfigImpl.java:3157)
  at lucee.runtime.config.ConfigImpl.resetORMEngine(ConfigImpl.java:3141)
  at lucee.runtime.orm.ORMUtil.resetEngine(ORMUtil.java:74)
  at lucee.runtime.listener.ModernAppListener.initApplicationContext(ModernAppListener.java:474)
  at lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:118)
  at lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:44)
  at lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2493)
  at lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2478)
  at lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2449)
  at lucee.runtime.engine.Request.exe(Request.java:45)
  at lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1216)
  at lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1162)
  at lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:97)
  at lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:590)
  at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
  at org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)
  at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
  at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
  at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
  at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
  at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
  at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
  at runwar.Server$1$1.handleRequest(Server.java:507)
  at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
  at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
  at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
  at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
  at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
  at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
  at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
  at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
  at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
  at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
  at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
  at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
  at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
  at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
  at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
  at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
  at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
  at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
  at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
  at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
  at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)
  at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
  at io.undertow.server.Connectors.executeRootHandler(Connectors.java:387)
  at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
  at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
  at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
  at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
  at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1423)
  at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
  at java.base/java.lang.Thread.run(Thread.java:829)
 Caused by: org.hibernate.boot.InvalidMappingException: Could not parse mapping document: null (INPUT_STREAM)
  ... 64 more
 Caused by: org.hibernate.internal.util.config.ConfigurationException: Unable to build hbm.xml JAXBContext
  at org.hibernate.boot.jaxb.internal.MappingBinder.hbmJaxbContext(MappingBinder.java:85)
  at org.hibernate.boot.jaxb.internal.MappingBinder.doBind(MappingBinder.java:62)
  at org.hibernate.boot.jaxb.internal.AbstractBinder.doBind(AbstractBinder.java:103)
  at org.hibernate.boot.jaxb.internal.AbstractBinder.bind(AbstractBinder.java:58)
  at org.hibernate.boot.jaxb.internal.InputStreamXmlSource.doBind(InputStreamXmlSource.java:43)
  ... 63 more
 Caused by: javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.

  • with linked exception:

 [java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]
  at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:287)
  at javax.xml.bind.ContextFinder.find(ContextFinder.java:446)
  at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:721)
  at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:662)
  at org.hibernate.boot.jaxb.internal.MappingBinder.hbmJaxbContext(MappingBinder.java:82)
  ... 67 more
 Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory
  at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
  at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
  at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
  at java.base/java.lang.Class.forName0(Native Method)
  at java.base/java.lang.Class.forName(Class.java:315)
  at javax.xml.bind.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:128)
  at javax.xml.bind.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:163)
  at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:285)
  ... 71 more
 

Timestamp

11/21/22 9:57:33 AM CST

Environment

Attachments

5
  • 21 Nov 2022, 01:56 pm
  • 21 Nov 2022, 01:19 pm
  • 21 Nov 2022, 01:13 pm
  • 21 Nov 2022, 02:18 am
  • 21 Nov 2022, 02:16 am

Activity

Zac Spitzer 
21 February 2024 at 03:19
(edited)

This is happening with the 6.0 and 6.1 builds on GitHub if you run the tests with java 11 (default is java 8), 5.4 is passing

Michael Born @ Ortus 
27 February 2023 at 20:22

Quick reminder that any Lucee version that bundles the Hibernate 5.4 extension (that’s Lucee 6 and Luce 5.4?) is going to bomb out on ORM initialization due to this issue.

Michael Born @ Ortus 
12 December 2022 at 19:01

this is an environment issue, as you suspected. Hibernate requires both a Jaxb API jar and a Jaxb Implementation jar (jaxb-api and jaxb-impl) in order to create hxml.xml mapping documents. The jaxb-api jar is supposed to load classes (starting with the JaxbContextFactory) at runtime, but it cannot find the JaxbContextFactory class. This may be an OSGI issue… regardless, it seems to only occur in Runwar (Commandbox) environments - not in Tomcat environments, which is likely why and are not able to verify the issue.

The quick workaround is to specify a java system property (or JVM arg) which tells the JAXB API where it can locate the Jaxb ContextFactory:

var javaSystem = createObject( "java", "java.lang.System" ); javaSystem.setProperty("javax.xml.bind.context.factory", "com.sun.xml.bind.v2.ContextFactory");

The thing is, this workaround was actually in place in the Hibernate 5.4 extension, and removed it “because that depends on version”:
https://github.com/lucee/extension-hibernate/commit/9e4fe628631114f386a7fe244c5afc09f5a83171

Pothys - MitrahSoft 
21 November 2022 at 15:18

I've checked this ticket using the commandbox with lucee version 5.3.10.94-RC. I replicated the issue on hibernate extension version 5.4.29.18-BETA by using of above code and it throws an error like Could not parse mapping document: null (INPUT_STREAM). Seems it works fine with hibernate extension version 3.5.5.84-BETA.

Zac Spitzer 
21 November 2022 at 13:56

works for me with 6.0.0.295-SNAPSHOT

Details

Assignee

Reporter

Priority

New Issue warning screen

Before you create a new Issue, please post to the mailing list first https://dev.lucee.org

Once the issue has been verified, one of the Lucee team will ask you to file an issue

Affects versions

Created 21 November 2022 at 02:18
Updated 21 February 2024 at 23:07