Hello!

I've encountered some strange problem with tests with @RunWith(ApplicationComposer.class) failing to start with error java.lang.IllegalStateException: On a thread without an initialized context nor a classloader mapping a deployed app

I've made a simple reproducer -- take application-composer example project, add following logging.properties file to command line running MoviesTest:

handlers = java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level = ALL
.level = FINE

and add

@Inject
private java.security.Principal principal;

to MoviesImpl.java

Then, running MovieTest results in failure to start application with root error:

java.lang.IllegalStateException: On a thread without an initialized context nor 
a classloader mapping a deployed app
        at 
org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:367)
        at 
org.apache.openejb.cdi.ThreadSingletonServiceImpl.getContext(ThreadSingletonServiceImpl.java:343)
        at 
org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:378)
        at 
org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:72)
        at 
org.apache.webbeans.config.WebBeansFinder.getSingletonInstance(WebBeansFinder.java:57)
        at 
org.apache.webbeans.config.WebBeansContext.getInstance(WebBeansContext.java:197)
        at 
org.apache.webbeans.config.WebBeansContext.currentInstance(WebBeansContext.java:215)
at org.apache.openejb.assembler.classic.EntityManagerFactoryCallable$BmHandler.findBm(EntityManagerFactoryCallable.java:180) at org.apache.openejb.assembler.classic.EntityManagerFactoryCallable$BmHandler.invoke(EntityManagerFactoryCallable.java:168)
        at jdk.proxy2/jdk.proxy2.$Proxy26.toString(Unknown Source)
        at java.base/java.lang.String.valueOf(String.java:4220)
        at java.base/java.lang.StringBuilder.append(StringBuilder.java:173)
        at java.base/java.util.AbstractMap.toString(AbstractMap.java:555)
        at java.base/java.text.MessageFormat.subformat(MessageFormat.java:1311)
        at java.base/java.text.MessageFormat.format(MessageFormat.java:887)
        at java.base/java.text.Format.format(Format.java:159)
        at java.base/java.text.MessageFormat.format(MessageFormat.java:862)
        at 
org.apache.openjpa.lib.util.Localizer$Message.getMessage(Localizer.java:281)
        at 
org.apache.openjpa.lib.util.Localizer$Message.toString(Localizer.java:309)
        at 
org.apache.openejb.openjpa.JULOpenJPALog.record(JULOpenJPALog.java:130)
        at org.apache.openejb.openjpa.JULOpenJPALog.trace(JULOpenJPALog.java:72)
at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationProviderImpl.setInto(PersistenceProductDerivation.java:766)
        at 
org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newInstance(JDBCBrokerFactory.java:69)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:569)
        at org.apache.openjpa.kernel.Bootstrap.invokeFactory(Bootstrap.java:131)
        at 
org.apache.openjpa.kernel.Bootstrap.newBrokerFactory(Bootstrap.java:66)

Both changing logging level from FINE to INFO, and removing injected Principal, make this error disappear and test works fine.

Is it a bug, or some missing configuration from my part?

Reply via email to