当前位置: 首页 > 知识库问答 >
问题:

WFLYNAM0027:ClassNotFoundException:org。jboss。命名。遥远的客户InitialContextFactory

陶淳
2023-03-14

环境-wildfly-9.0.2。最终版,EJB 3.0

尝试将Test.java类(在wildfly-9.0.2.Final@machine-A部署为模块)连接到EJB时发生以下错误,同时将其部署在机器B(291.861.301.732)的jboss上。

17:02:46,666 ERROR [stderr] (default task-1) javax.naming.NamingException: WFLYNAM0027: Failed instantiate InitialContextFactory org.jboss.naming.remote.client.InitialContextFactory from classloader ModuleClassLoader for Module "deployment.test.ear.test.war:main" from Service Module Loader [Root exception is java.lang.ClassNotFoundException: org.jboss.naming.remote.client.InitialContextFactory from [Module "deployment.test.ear.test.war:main" from Service Module Loader]]
17:02:46,667 ERROR [stderr] (default task-1)    at org.jboss.as.naming.InitialContext.getDefaultInitCtx(InitialContext.java:118)
17:02:46,667 ERROR [stderr] (default task-1)    at org.jboss.as.naming.InitialContext.init(InitialContext.java:99)
17:02:46,670 ERROR [stderr] (default task-1)    at javax.naming.ldap.InitialLdapContext.<init>(InitialLdapContext.java:154)
17:02:46,670 ERROR [stderr] (default task-1)    at org.jboss.as.naming.InitialContext.<init>(InitialContext.java:89)
17:02:46,670 ERROR [stderr] (default task-1)    at org.jboss.as.naming.InitialContextFactory.getInitialContext(InitialContextFactory.java:43)
17:02:46,687 ERROR [stderr] (default task-1) Caused by: java.lang.ClassNotFoundException: org.jboss.naming.remote.client.InitialContextFactory from [Module "deployment.test.ear.test.war:main" from Service Module Loader]
17:02:46,688 ERROR [stderr] (default task-1)    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:205)
17:02:46,688 ERROR [stderr] (default task-1)    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:455)
17:02:46,688 ERROR [stderr] (default task-1)    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:404)
17:02:46,688 ERROR [stderr] (default task-1)    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:385)
17:02:46,688 ERROR [stderr] (default task-1)    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:130)

测验testclient中存在java类。罐子

module add --name=testclient --resources=/Downloads/lib/test/client/testclient.jar --dependencies=javax.api

Test.java课

package com.testmodule.pojo;

import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;

public class Test { 
public void getDbConnection(){
    try{
        Properties jndiProps = new Properties();
        jndiProps.put(Context.INITIAL_CONTEXT_FACTORY,"org.jboss.naming.remote.client.InitialContextFactory");
        jndiProps.put(Context.PROVIDER_URL,"remote://291.861.301.732:4447");
        jndiProps.put(Context.SECURITY_PRINCIPAL, "testuser");
        jndiProps.put(Context.SECURITY_CREDENTIALS, "testpassword");
        jndiProps.put("jboss.naming.client.ejb.context", true);
        Context context = new InitialContext(jndiProps);
    }
    catch(Exception e){e.printStackTrace();}
}}

为什么会发生此错误,为了使org.jboss.naming.remote.client.的可见性testclient.jar,我应该在将testclient.jar部署为模块时添加更多依赖项(目前仅javax.api)吗?还是任何其他导致错误的问题?类'org.jboss.naming.remote.client.初始上下文工厂'也存在于$WILDFLY_HOME/bin/客户端/jboss-client.jar

注意-291.861.301.732是远程系统ip,ejb部署在jboss上,此ejb正在从测试调用。使用JNDI的java(远程客户端)。

最终版本(在JBOSS 5. x中)中没有jnp,所以我将属性org.jnp.interfaces.NamingContextFactory替换为值为org.jboss.naming.remote.client.FiralContextFactory。

以下已被添加后收到评论'尝试将jboss-client.jar放在运行时路径中,作为WEB-INF/lib的一部分可能'by'Sampada Wagde'

在这个情景测试中,我无法理解。jsp(存在于test.ear中--

在收到回复后添加了以下内容'服务器在运行时需要jboss-client.jar...'by'Sampada Wagde'

我还尝试了以下步骤1。通过放置“jboss部署结构”。测试中的xml。耳朵--

<?xml version="1.0"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
<deployment>
    <dependencies>
        <module name="testclient" export="true" />
        <module name="jboss-client" export="true" />
    </dependencies>
</deployment>

将模块名称部署为

module add --name=jboss-client --resources=/Downloads/wildfly-9.0.2.Final/bin/client/jboss-client.jar

但仍发生以下错误。

14:14:34,376 WARN  [org.jboss.modules] (default task-1) Failed to define class org.jboss.naming.remote.client.InitialContextFactory in Module "jboss-client:main" from local module loader @707f7052 (finder: local module finder @11028347 (roots: /Downloads/wildfly-9.0.2.Final/modules,/Downloads/wildfly-9.0.2.Final/modules/system/layers/base)): java.lang.LinkageError: Failed to link org/jboss/naming/remote/client/InitialContextFactory (Module "jboss-client:main" from local module loader @707f7052 (finder: local module finder @11028347 (roots: /Downloads/wildfly-9.0.2.Final/modules,/Downloads/wildfly-9.0.2.Final/modules/system/layers/base)))
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:437)
at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:269)
at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:77)
at org.jboss.modules.Module.loadModuleClass(Module.java:560)
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:197)
Caused by: java.lang.NoClassDefFoundError: javax/naming/spi/InitialContextFactory
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:353)
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:432)
Caused by: java.lang.ClassNotFoundException: javax.naming.spi.InitialContextFactory from [Module "jboss-client:main" from local module loader @707f7052 (finder: local module finder @11028347 (roots: /Downloads/wildfly-9.0.2.Final/modules,/Downloads/wildfly-9.0.2.Final/modules/system/layers/base))]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:205)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:455)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:404)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:385)
14:14:34,391 ERROR [io.undertow.request] (default task-1) UT005023: Exception handling request to /test/test.jsp: javax.servlet.ServletException: java.lang.LinkageError: Failed to link org/jboss/naming/remote/client/InitialContextFactory (Module "jboss-client:main" from local module loader @707f7052 (finder: local module finder @11028347 (roots: /Downloads/wildfly-9.0.2.Final/modules,/Downloads/wildfly-9.0.2.Final/modules/system/layers/base)))
at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:777)
at org.apache.jsp.test_jsp._jspService(test_jsp.java:85)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:69)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
Caused by: java.lang.LinkageError: Failed to link org/jboss/naming/remote/client/InitialContextFactory (Module "jboss-client:main" from local module loader @707f7052 (finder: local module finder @11028347 (roots: /Downloads/wildfly-9.0.2.Final/modules,/Downloads/wildfly-9.0.2.Final/modules/system/layers/base)))
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:437)
at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:269)
at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:77)
at org.jboss.modules.Module.loadModuleClass(Module.java:560)
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:197)
Caused by: java.lang.NoClassDefFoundError: javax/naming/spi/InitialContextFactory
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:353)
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:432)
Caused by: java.lang.ClassNotFoundException: javax.naming.spi.InitialContextFactory from [Module "jboss-client:main" from local module loader @707f7052 (finder: local module finder @11028347 (roots: /Downloads/wildfly-9.0.2.Final/modules,/Downloads/wildfly-9.0.2.Final/modules/system/layers/base))]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:205)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:455)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:404)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:385)

共有2个答案

郜俊晤
2023-03-14

您需要使自己的模块依赖于一个模块,该模块不仅包含jboss客户端jar,还包含jboss客户端的所有依赖项,这可能只是其他模块,也可能是其他jar。它抱怨丢失的第一个类是javax/naming/spi/firalContextFactory,因此编辑jboss客户端模块依赖的module.xmljavax.api

谯嘉木
2023-03-14

jboss客户端。服务器在运行时需要jar。有几种向JBoss服务器提供JAR的方法-

  1. 在清单中包括JAR。MF(通常用于您自己的应用程序JAR)

有关JBoss中模块的详细信息,请参阅此链接-AS7中的https://docs.jboss.org/author/display/AS7/Class加载

至于你关于如何将jboss-client.jar放入WAR而不是testclient.jar来解决问题的问题,答案是一样的——这就是类加载的工作原理。

 类似资料:
  • 使用环境: WildFly 9.0.2。期末考试 EJB 3.0 蚂蚁 日蚀 测验jsp正在调用测试方法。java类。 测验jsp Test.java 访问测试时发生以下错误。jsp。 我不想让jboss-client.jarest.ear

  • 我正在为运行在JBoss AS EAP6.2中的EJB编写一个远程客户端。按照“7.5.1节”中的说明。在"JBoss EAP 6.2开发指南"中使用JNDI远程调用会话Bean,如果我使用JNDI名称,我可以访问EJB上的方法

  • 我们开发了一个培训应用程序,其中包含一个与EJB通信的独立java客户端。工作设置包括Windows 7上的JBoss AS 7.1和通过/bin/add user创建的应用程序用户。球棒 客户端是这样编码的: 客户端是用jboss客户端启动的。类路径中的jar。 现在,我们尝试改用WildFly 8.1,它已成功部署,但客户端失败 将JNDI查找名称更改为在部署期间打印出来的内容(例如)导致 在

  • 我已经在SO和官方文档上搜索了一段时间,但我找不到直接将CDI注入JAX-RS客户端的方法。 我使用builder方法检索一个客户机,并想注册一个< code>WriterInterceptor(或任何类似过滤器的组件),它使用注入来检索另一个bean。 我想使用CDI注入,并避免向HK2注册每个bean。 和MyWriter与注入的类。 我在一个带有泽西2和焊接SE的嵌入式码头上运行。

  • 有人能为JBOSS 7.1的keycloak-admin-client提供工作的pom.xml吗? 多谢

  • 14.2.实现远程客户端 我们已经有了远程Service,接下来实现它的客户端,然后测试两者是否工作正常。我们这里有意将服务端与客户端分在两个不同的package中,因为它们是两个独立的程序。 好,在Eclipse中新建一个项目,步骤同以前一样,兹不赘述。不过这里有一点不同,那就是它依赖于前一个项目,也就是LogService。这一点很重要,因为LogClient需要知道LogService的接口