I have a scenario where we have to run some random number of independent
tasks to load data from DB. So I am using Java's fork Join framework to
create those task and then invoke them.

Each task opens its own connection using datasource and closes it.

But in Tomcat, I am getting below error at line:

initialContext = new InitialContext();

javax.naming.NoInitialContextException: Cannot instantiate class:
org.apache.naming.java.javaURLContextFactory
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
~[?:1.8.0_161]
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
~[?:1.8.0_161]
at javax.naming.InitialContext.init(Unknown Source) ~[?:1.8.0_161]
at javax.naming.InitialContext.<init>(Unknown Source) ~[?:1.8.0_161]
at com.dummy.test.TestClass.compute(TestClass.java:71) [classes/:?]
at java.util.concurrent.RecursiveAction.exec(Unknown Source) [?:1.8.0_161]
at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) [?:1.8.0_161]
at java.util.concurrent.ForkJoinPool$WorkQueue.execLocalTasks(Unknown
Source) [?:1.8.0_161]
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source)
[?:1.8.0_161]
at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) [?:1.8.0_161]
at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)
[?:1.8.0_161]
Caused by: java.lang.ClassNotFoundException:
org.apache.naming.java.javaURLContextFactory

This error seems to be coming only in Tomcat and when I run the same code
in Wildfly/Glassfish or JBOSS EAP, everything works fine.

On the other hand if I change my code and run these tasks using Thread
instead of Fork Join framework, I don't face this issue in Tomcat.

So why this error is coming in Tomcat only?

Note: I am getting this error after deploying in Tomcat and hitting app URL
from Postman. The so called missing class is already there in
jar catalina.jar present inside <Tomcat_Home>/lib

Environment Details:

Java Version: 1.8
Tomcat Version: 8.5, 9.0.6
OS: Windows 10 Pro 64 bit
Database: Oracle 11g and MySQL 5.7

I have uploaded a dummy code to simulate this issue in Git. Please refer to
the readme.txt for full details there.

Git URL:
https://github.com/wambling/my-project.git

Regards,
Priyam

Reply via email to