Praval Sharma
Praval Sharma

Reputation: 2153

Jboss EAP 7.0.0 - java.lang.ClassNotFoundException: org.jboss.naming.remote.client.InitialContextFactory

I am migrating a service from Jboss 5.1 to Jboss EAP 7.0.0. It is successfully build in jdk 1.8 using maven 3.9.9 and successfully deployed in jboss EAP 7.0.0.

During deployment it is showing java.lang.ClassNotFoundException. This service contains only local ejb no remote ejbs.

EJb lookup class -

        String contextFactory = SysConfigUtil.getJndiFactory();
        String ejbLocalJndi = SysConfigUtil.getTimerEjbLocalJndi();
        Properties environment = new Properties();
        environment.put(Context.INITIAL_CONTEXT_FACTORY, contextFactory);
        Context ctx;
        environment.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
        environment.put("jboss.naming.client.ejb.context", new Boolean(true));
        ctx = new InitialContext(environment);
        logger.info("************ before lookup");
        ejb = (ISystemConfigurationTimerLocal) ctx.lookup(ejbLocalJndi);
        logger.info("************ after lookup");

Stack Trace -

javax.naming.NamingException: WFLYNAM0027: Failed instantiate InitialContextFactory org.jboss.naming.remote.client.InitialContextFactory from classloader ModuleClassLoader f
or Module "deployment.SystemConfiguration.ear.system-configuration-lifecycle.sar:main" from Service Module Loader [Root exception is java.lang.ClassNotFoundException: org.jb
oss.naming.remote.client.InitialContextFactory from [Module "deployment.SystemConfiguration.ear.system-configuration-lifecycle.sar:main" from Service Module Loader]]
    org.jboss.as.naming.InitialContext.getDefaultInitCtx(InitialContext.java:118)
    org.jboss.as.naming.InitialContext.init(InitialContext.java:99)
    javax.naming.ldap.InitialLdapContext.<init>(InitialLdapContext.java:154)
    org.jboss.as.naming.InitialContext.<init>(InitialContext.java:89)
    org.jboss.as.naming.InitialContextFactory.getInitialContext(InitialContextFactory.java:43)
    javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684)
    javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
    javax.naming.InitialContext.init(InitialContext.java:244)
    javax.naming.InitialContext.<init>(InitialContext.java:216)
    com.abcd.services.core.systemconfiguration.conn.impl.SystemConfigurationTimerEjbExecutor.getSystemConfigurationTimerEJB(SystemConfigurationTimerEjbExecutor.java:96)
    com.abcd.services.core.systemconfiguration.conn.impl.SystemConfigurationTimerEjbExecutor.startScheduler(SystemConfigurationTimerEjbExecutor.java:56)
    com.abcd.services.core.systemconfiguration.conn.impl.SystemConfigurationAppLifeCycle.start(SystemConfigurationAppLifeCycle.java:65)
    org.jboss.as.service.AbstractService.invokeLifecycleMethod(AbstractService.java:76)
    org.jboss.as.service.StartStopService$1.run(StartStopService.java:61)
    java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    java.util.concurrent.FutureTask.run(FutureTask.java:266)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    java.lang.Thread.run(Thread.java:745)
    org.jboss.threads.JBossThread.run(JBossThread.java:320)
Caused by: java.lang.ClassNotFoundException: org.jboss.naming.remote.client.InitialContextFactory from [Module "deployment.SystemConfiguration.ear.system-configuration-lifec
ycle.sar:main" from Service Module Loader]
    org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198)
    org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:363)
    org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:351)
    org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:93)
    java.lang.Class.forName0(Native Method)
    java.lang.Class.forName(Class.java:348)
    org.jboss.as.naming.InitialContext.getDefaultInitCtx(InitialContext.java:113)

Upvotes: 0

Views: 1590

Answers (1)

Steve C
Steve C

Reputation: 19445

You have never needed to provide environment properties to new InitialContext() when looking up local objects in any version of JBossAS or WildFly.

Context ctx = new InitialContext();
ejb = (ISystemConfigurationTimerLocal) ctx.lookup(ejbLocalJndi);

should be all that you need.

FWIW, the property configuration that you provided is for remote standalone clients, and is incorrect even for server -> server calls.

Upvotes: 1

Related Questions