java - 没有 J2EE 容器的 JNDI(有 JNP?也许是其他供应商?)

标签 java jakarta-ee jboss jms jndi

我需要在没有 J2EE 容器开销的情况下运行 JNDI 提供程序。我已尝试按照此 article 中的说明进行操作,它准确地描述了(在第 3 页上)我想做什么。不幸的是,这些指示失败了。我也必须将 jboss-common.jar 添加到我的类路径中。一旦我这样做了,我就会得到一个堆栈跟踪:

$ java org.jnp.server.Main
0    [main] DEBUG
org.jboss.naming.Naming  - Creating
NamingServer stub, theServer=null,rmiPort=0,clientSocketFactory=null,serverSocketFactory=org.jboss.net.sockets.DefaultSocketFactory@ad093076[bindAddress=null]
Exception in thread "main"
java.lang.NullPointerException
     at org.jnp.server.Main.getNamingInstance(Main.java:301)
     at org.jnp.server.Main.initJnpInvoker(Main.java:354)
     at org.jnp.server.Main.start(Main.java:316)
     at org.jnp.server.Main.main(Main.java:104)

我希望能够完成这项工作,但我也愿意接受其他轻量级独立 JNDI 提供程序。所有这一切都是为了让 ActiveMQ 工作,如果有人可以建议另一个轻量级的 JMS 提供者,它在 vm 之外运行良好,客户端在没有一个完整的应用程序服务器的情况下也可以工作。

最佳答案

Apache ActiveMQ已经带有集成的轻量级 JNDI 提供程序。参见 these instructions on using it .

基本上,您只需将 jndi.properties 文件添加到类路径即可。

java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory

# use the following property to configure the default connector
java.naming.provider.url = failover:tcp://localhost:61616

# use the following property to specify the JNDI name the connection factory
# should appear as. 
#connectionFactoryNames = connectionFactory, queueConnectionFactory, topicConnectionFactry

# register some queues in JNDI using the form
# queue.[jndiName] = [physicalName]
queue.MyQueue = example.MyQueue


# register some topics in JNDI using the form
# topic.[jndiName] = [physicalName]
topic.MyTopic = example.MyTopic

关于java - 没有 J2EE 容器的 JNDI(有 JNP?也许是其他供应商?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/192718/

相关文章:

java - Hibernate OneToMany mappedby 保存时插入重复记录

java - 如何将原始 html 转换为可以使用 Selenium 测试的内容?

java - 我在将多个部分用于 if/else 语句时遇到问题

java - EJB @Asynchronous 在同一个类中不起作用

java - 为什么@GZIP在jboss7.1.0 eap中没有返回响应

java - 基于表单的身份验证登录 servlet 代码

java - 错误: Could not find or load main class Main in CMD

每次刷新时 JSP session ID 都会更改

java - 为什么某些 Java EE API 在 Java SE 中实现?

deployment - JBoss 远程部署