【发布时间】:2017-06-06 14:18:19
【问题描述】:
我在我的 jboss 服务器中部署了一个 activemq 代理。
activemq 作为 rar 文件部署在 jboss 独立/部署存储库中。
另一个项目也部署在我的 jboss 中作为一个 ear 文件。
最后一个是在我的 jboss 中暴露一些 ejb 对象。
我试图从我放入我的activemq rar文件的jar文件中获取ejb。当我将客户端连接到代理时,将调用放置在 jar 中的类。
这就是我尝试在 jar 文件中获取 ejb 的方式:
Context ctx;
Properties jndiProps = new Properties();
jndiProps.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
jndiProps.put("jboss.naming.client.ejb.context", true);
ctx = new InitialContext(jndiProps);
Ctx.lookup("ejb:Hemis/HemisCoreClient//"+ "HardwareDataManagement" + "!" + "com.ubiant.hemis.client.ejb.interf.I_HardwareDataManagement");
ejb 暴露时来自 jboss 的日志:
11:50:17,538 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor](MSC 服务线程 1-4)部署单元子部署中名为 HardwareDataManagement 的会话 bean 的 JNDI 绑定“HemisCoreClient.jar部署“Hemis.ear”如下:
java:global/Hemis/HemisCoreClient/HardwareDataManagement!com.ubiant.hemis.client.ejb.interf.I_HardwareDataManagement java:app/HemisCoreClient/HardwareDataManagement!com.ubiant.hemis.client.ejb.interf.I_HardwareDataManagement java:module/HardwareDataManagement!com.ubiant.hemis.client.ejb.interf.I_HardwareDataManagement java:jboss/exported/Hemis/HemisCoreClient/HardwareDataManagement!com.ubiant.hemis.client.ejb.interf.I_HardwareDataManagement java:global/Hemis/HemisCoreClient/HardwareDataManagement java:app/HemisCoreClient/HardwareDataManagement java:模块/硬件数据管理*
我尝试将客户端连接到代理时的日志错误:
17:26:15,555 错误 [stderr] (qtp1869699331-251) javax.naming.NameNotFoundException;剩余名称'java:Hemis/HemisCoreClient//HardwareDataManagement!com.ubiant.hemis.client.ejb.interf.I_HardwareDataManagement' 17:26:15,556 错误 [stderr] (qtp1869699331-251) 在 org.eclipse.jetty.jndi.local.localContextRoot.lookup(localContextRoot.java:490) 17:26:15,557 错误 [stderr] (qtp1869699331-251) 在 org.eclipse.jetty.jndi.local.localContextRoot.lookup(localContextRoot.java:536) 17:26:15,557 错误 [stderr] (qtp1869699331-251) 在 javax.naming.InitialContext.lookup(InitialContext.java:411) 17:26:15,558 错误 [stderr] (qtp1869699331-251) 在 authentification.TokenAuthentificationBroker.addConnection(TokenAuthentificationBroker.java:46) 17:26:15,558 错误 [stderr] (qtp1869699331-251) 在 org.apache.activemq.broker.MutableBrokerFilter.addConnection(MutableBrokerFilter.java:97) 17:26:15,558 错误 [stderr] (qtp1869699331-251) 在 org.apache.activemq.broker.TransportConnection.processAddConnection(TransportConnection.java:733) 17:26:15,559 错误 [stderr] (qtp1869699331-251) 在 org.apache.activemq.broker.jmx.ManagedTransportConnection.processAddConnection(ManagedTransportConnection.java:79) 17:26:15,559 错误 [stderr] (qtp1869699331-251) 在 org.apache.activemq.command.ConnectionInfo.visit(ConnectionInfo.java:139) 17:26:15,560 错误 [stderr] (qtp1869699331-251) 在 org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:292) 17:26:15,561 错误 [stderr] (qtp1869699331-251) 在 org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:149) 17:26:15,562 错误 [stderr] (qtp1869699331-251) 在 org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83) 17:26:15,562 错误 [stderr] (qtp1869699331-251) 在 org.apache.activemq.transport.ws.MQTTSocket.sendToActiveMQ(MQTTSocket.java:112) 17:26:15,563 错误 [stderr] (qtp1869699331-251) 在 org.apache.activemq.transport.mqtt.MQTTProtocolConverter.sendToActiveMQ(MQTTProtocolConverter.java:133) 17:26:15,564 错误 [stderr] (qtp1869699331-251) 在 org.apache.activemq.transport.mqtt.MQTTProtocolConverter.onMQTTConnect(MQTTProtocolConverter.java:235) 17:26:15,564 错误 [stderr] (qtp1869699331-251) 在 org.apache.activemq.transport.mqtt.MQTTProtocolConverter.onMQTTCommand(MQTTProtocolConverter.java:157) 17:26:15,566 错误 [stderr] (qtp1869699331-251) 在 org.apache.activemq.transport.ws.MQTTSocket.onMessage(MQTTSocket.java:59) 17:26:15,566 错误 [stderr] (qtp1869699331-251) 在 org.eclipse.jetty.websocket.WebSocketConnectionRFC6455$WSFrameHandler.onFrame(WebSocketConnectionRFC6455.java:860) org.eclipse.jetty.websocket.WebSocketParserRFC6455.parseNext(WebSocketParserRFC6455.java:349) 处的 17:26:15,567 错误 [stderr] (qtp1869699331-251) org.eclipse.jetty.websocket.WebSocketConnectionRFC6455.handle(WebSocketConnectionRFC6455.java:225) 处的 17:26:15,568 错误 [stderr] (qtp1869699331-251) 17:26:15,568 错误 [stderr] (qtp1869699331-251) 在 org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628) 17:26:15,569 错误 [stderr] (qtp1869699331-251) 在 org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) 17:26:15,571 错误 [stderr] (qtp1869699331-251) 在 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) 17:26:15,571 错误 [stderr] (qtp1869699331-251) 在 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) 17:26:15,572 错误 [stderr] (qtp1869699331-251) 在 java.lang.Thread.run(Thread.java:745)
当我从一个暴露 EJB 的耳朵内的类中尝试这段代码时,它可以工作并且我可以获得 EJB 对象。我是否认为问题在于我尝试从部署在我的 jboss 中的 rar 中包含的 jar 中获取 ejb。 有人可以帮我解决这个问题吗?
【问题讨论】:
标签: java jboss ejb jndi naming