简体   繁体   中英

JNDI resources not available for Gemini Blueprint running in Tomcat 9 (working in Bundle Activator)

I have an older Web-Application using Eclipse RAP 3.0 with Equinox OSGI-Container and Gemini Blueprint 1.0.2.

I can define my JDNI Values in server.xml link them in context.xml and use them in my web.xml.

In my launch.ini i use the parent classloader fwk so the JNDI configuration is passed to the OSGI-Container.

My Application-Bundles can read those values for example in Bundle-Activator:

String xxx= InitialContext.doLookup("java:comp/env/xxx"); or
String xxx= new InitialContext().lookup("java:comp/env/xxx");

Some Bundle-Configuration is done via Gemini Blueprint xml files and SpringConfiguration Java classes.

<jee:jndi-lookup id="xxx" jndi-name="java:comp/env/xxx" />

This part is not working and i get following error

Error creating bean with name 'xxx': Invocation of init method failed;
nested exception is javax.naming.NameNotFoundException:
Name [java:comp/env/xxx] is not bound in this Context. Unable to find [java:comp].

I get the same Error when i use Spring-Java-Configuration which is invoked from gemini blueprint xml. Then statements like new InitialContext().lookup("java:comp/env/xxx") don't work and i get the same exception.

I think it has to to with the classloaders that are different for Bundle-Activator-Code and Gemini BlueprintExtender Thread but in can't figure it out how to solve this.

I found a Solution that i can use.

If i Move my JNDI-Lookups from xml into my Spring-Configuration-class then i can change the clasloader in init like this: Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());

After that i my Lookups work fine.

i found that solution here

Can Spring Boot be used with OSGi? If not, any plans to have an OSGi Spring Boot? .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM