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

注入Java类并重新绑定到初始上下文

桓修能
2023-03-14

我尝试将一个名为SomeProcess的java类重新绑定到JNDI。这种绑定发生在名为ResourceBinder的单例bean中。

InitialContext ctx = new InitialContext();
ctx.rebind("SomeProcess", new SomeProcess());
log.info(">>>>> SomeProcess bound");

稍后,这个类被注入到另一个名为SomeServiceBean的ejb中。

@Inject
private SomeProcess process;

但是,我遇到了以下错误:

/BRO130_3_7_ResourceBinder-solution/SomeServiceBeanNamingIOException:无法重新绑定[根异常1.java:116IOException:org.jboss.naming.remote.client.ClassNotFoundException:3.operationMtore.java:302来自[Module"org.jboss.naming.remote.client.-naming: main"来自本地模块加载器@ed17bee(finder: local模块finder@2a33fae0(root: C:\Program Files\jboss\Wilfly\模块,C:\Program Files\jboss\Wilfly\模块\system\图层\base))]在org.jboss.naming.remote.client.ClientUtil.naming异常(ClientUorg.jboss.naming.remote.client.)2015-12-28 20:33:02,302 DEBUG[main]de.brockhaus.userMgmt.util.jndi.BeanLocator:查找:1.rebind!de.brockhaus.userMgmt.boundary.org.jboss.naming.remote.protocol.v1的某个服务。协议$3.execute(Protocol.java:306)在org.jboss.naming.remote.protocol.v1。协议$3.execute(Protocol.java:265)在org.jboss.naming.remote.protocol.v1。远程命名存储org.jboss.naming.remote.protocol.(远程命名存储java.io.)在java.lang.de.brockhaus.user(gmt.control.process.)在org.jboss.remote在til.java:49在javax. name中的Remote teContext. ree ind(Remote teContext. java: 170)。在de. brockhaus. userMgmt.边界中的初始上下文. ree ind(初始上下文. java: 433)。在de. brockhaus. userMgmt.边界中的ResourceBinder. bindResources(ResourceBinder. java: 32)。在de. brockhaus. userMgmt.边界中的一些服务测试. bindResources(一些服务测试. java: 21)。一些服务测试. main(一些服务测试. java: 13)由以下原因引起:java. io。IOException:java. lang。ClassNotFoundException:de. brockhaus. userMgmt. control. Process。来自本地模块loader@ed17bee的[模块“org. jbos.远程命名:main”的一些进程(finder:本地模块finder@2a33fae0(根:C:\Program Files\j来自[Module"org. jbos. Remote-naming: main"的一些进程,来自本地模块loader@ed17bee(finder: local modefinder@2a33fae0(root: C:\Program Files\jboss\Wilfly\模块,C:\Program Files\jboss\Wilfly\模块\系统\图层\base))]在org. jbos.模块。ModuleClassLoader. findClass(ModuleClassLoader. java: 205)在org. jbos.模块。在org. jbos.模块上的ContoptClassLoader. performLoadClassUncheck(ContoptClassLoader. java: 455)。在org. jbos.模块上的ContoptClassLoader. performLoadClassChecked(ContoptClassLoader. java: 404)。在org. jbos.模块上的ContoptClassLoader. performLoadClass(ContoptClassLoader. java: 385)

为了解决这个问题,我创建了一个wilfly模块de.brockhaus.userMgmt,在那里我放了maven build jar。这是module.xml内容

<properties>
    <property name="jboss.api" value="private"/>
</properties>

<resources>
    <resource-root path="BRO130_3_7_ResourceBinder-solution.jar"/>
</resources>

<dependencies>
    <module name="org.apache.log4j"/>
</dependencies>

我已经修改了模块。模块组织的xml。jboss。WildFly 10版本中的远程命名。

<module xmlns="urn:jboss:module:1.3" name="org.jboss.remote-naming">
    <resources>
        <resource-root path="jboss-remote-naming-2.0.4.Final.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="org.jboss.ejb-client" optional="true"/>
        <module name="org.jboss.remoting"/>
        <module name="org.jboss.logging"/>
        <module name="org.jboss.marshalling"/>
        <module name="org.jboss.marshalling.river"/>
        <module name="de.brockhaus.userMgmt"/>
    </dependencies>
</module>

但现在问题不同了:13:36:01,016错误

[java.util.concurrent.](pool-1-thread-1)WFLYNAM0008:意外的内部错误:orker.run不支持的操作异常: WFLYNAM0043:命名上下文是只读的xecutor.java:617WritableServiceBasedNamingSjava.lang.所有者(WritableServiceBasedNamingShread.run)在hread.java:745WritableServiceBasedNamingStore.rebind(WritableServiceBasedNamingStore.java:109)在org.jboss.as.naming.NamingContext.rebind(NamingContext.java:301)在org.jboss.naming.remote.protocol.v1。协议$3.handleServerMessage(Protocol.java:335)在org.jboss.naming.remote.protocol.v1。远程命名服务器V1$MessageReciever$1.run(远程命名服务器1.java:73)在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)在org.jboss.as.namingThreadPoolExecitor$Wjava.lang.(ThreadPoolEorg.jboss.as.naming.)在tore.requireTtore.java:161(Torg.jboss.as.naming.)

13: 36:01459错误[org.jboss.as.naming](pool-1-thread-2)WFLYNAM0008:意外的内部错误:java。lang.UnsupportedOperationException:WFLYNAM0043:命名上下文在组织中是只读的。jboss。像命名。WritableServicebasedNamegstore。组织中的requireOwner(WritableServicebasedNamegstore.java:161)。jboss。像命名。WritableServicebasedNamegstore。在org上重新绑定(WritableServicebasedNamegstore.java:109)。jboss。像命名。NamingContext。在org上重新绑定(NamingContext.java:301)。jboss。命名。遥远的协议协议3美元。位于org的handleServerMessage(Protocol.java:335)。jboss。命名。遥远的协议RemoteNamingServerV1$MessageReceiver$1。在java上运行(RemoteNamingServerV1.java:73)。util。同时发生的线程池执行器。java上的runWorker(ThreadPoolExecutor.java:1142)。util。同时发生的ThreadPoolExecutor$工作者。在java上运行(ThreadPoolExecutor.java:617)。lang.Thread。运行(Thread.java:745)

13: 36:01590信息[org.jboss.ejb.client](pool-1-thread-3)jboss ejb客户端版本2.1.3。最终13:36:01918错误[标准](EJB默认值-1)log4j:警告找不到记录器的附加程序(de.brockhaus.userMgmt.control.activity.StepOne)。

13:36:01,920错误[stderr](EJB默认-1)log4j: WARN请正确初始化log4j系统。

13:36:01,921ERROR[stderr](EJB default-1)log4j: WARN查看http://logging.apache.org/log4j/1.2/faq.html#noconfig了解更多信息。

共有1个答案

司允晨
2023-03-14

当您遵循所描述的配方时,如何暴露和注射POJO... INTO AN EJB 3中描述的模式在未修改的WildFly服务器中运行良好。特别是,您应该使用:

@Resource(mappedName="SomeProcess")
private SomeProcess process;

而不是“注入”。

@资源和@注入不可互换。

这就是说,本文在现代Java EE时代已经很古老了,几乎早于正式引入CDI的Java EE 6。

 类似资料:
  • 问题内容: 我目前在 此URL实际上按照以下路由指示加载Module.js类: 这包含在index.js文件中定义的和元素中。 Module类具有和方法。这些设置了记录2的初始详细信息和装入信息。到目前为止一切正常。 现在,我的问题是,在Module.js的孙组件中,我使用以下Redirect重定向到另一个页面,例如第3页: 构造函数或componentWillMount无法运行,因此记录#3无法

  • 问题内容: 每当用户注销并尝试再次登录时,树中的所有属性都会重新初始化。 这是我的代码: I tried to use user’s metadata but even that didn’t work. Here is my structure 问题答案: 如果我们要检查用户是否是新用户,则是相同的,如果我们检查 用户是否是首次登录。因此,要解决此问题,我们可以像 这样 在回调中简单地调用方法

  • 我尝试使用 Websphere 8.5 完整配置文件将应用程序转换为 Liberty 配置文件,但我遇到了有关不兼容的问题。 无法找到初始上下文工厂 我知道班级的位置com.ibm.ws.ejb.thinclient_8.0.0.jar在完整的配置文件中,但我不能在Liberty配置文件中找到相关的,还有一件事,因为我正在做维护应用程序,所以班级要看看。 com . IBM . WebSphere

  • 问题内容: 这些陈述有何不同? 双虚拟= 0; 双虚拟= 0.0; 双虚拟= 0.0d; 双虚拟= 0.0D; 问题答案: 尝试过一个简单的程序(使用0和100来显示“特殊”常数和通用常数之间的差异)之后,Sun Java 6编译器将为1和2输出相同的字节码(情况3和4与2相同)就编译器而言)。 因此,例如: 编译为: 但是,我在Java语言规范中看不到任何能 保证 常量表达式的编译时扩展的东西。

  • 我遇到了一个很奇怪的问题。我尝试将属性绑定到DataContext,但它不起作用。这是我正在做的事情(在橱窗里)。资源部分): 在代码的其他地方,我像这样设置数据上下文: 我没有收到任何错误,但绑定没有发生。所以我添加了一个调试转换器,看看我是否可以弄清楚发生了什么: 我在转换器中设置了一个断点,传递的值为 null。确定事情不正常,我在设置 DataContext 的行上设置了一个断点。它首先被