请教各位大虾:在JBoss下使用JMS通信机制遇到的问题

06-12-30 Chocoo
Hashtable props = new Hashtable();

props.putContext.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");

props.put(Context.PROVIDER_URL, "localhost:11099");

props.put("java.naming.rmi.security.manager", "yes");

props.put(Context.URL_PKG_PREFIXES, "org.jboss.naming");

jndiContext = new InitialContext();

queueConnectionFactory = (QueueConnectionFactory) jndiContext.lookup"ConnectionFactory");

queue = (Queue) jndiContext.lookup("queue/testQueue");

但是遇到问题了:

JNDI lookup failed: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial

求救。。。。。。。。。。。。

非常感谢!!!!

Chocoo
2007-01-05 18:08
怎么没有人理我啊

banq
2007-01-07 11:36
你要把props放入jndiContext 中

在jBoss内部无需props初始化

JBoss的ConnectionFactory的JNDI名称应该是:

java:/ConnectionFactory

查一下JBoss手册

Chocoo
2007-01-08 08:32
谢谢阿

Chocoo
2007-01-08 08:37
我后来jndiContext = new InitialContext(props);了,但是还是会报那个错误,然后

我在那个jndi.propertes里面这样写了如下:

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory

java.naming.provider.url=localhost:11099

java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces

但是还是会报上面的错误,不知道为什么啊?是不是我的这个应用程序没有部署到JBoss中阿,因为我启动JBoss和运行这个应用程序,会显示两个不同的控制台.

再次请教,谢谢!!!!!!

[该贴被FengShen_Xia于2007-01-08 08:55:40修改过]

Chocoo
2007-01-08 09:16
我想请教banq您:

在JBoss下的JMS通信机制,是不是一个成熟的技术应用阿

怎么网上的这方面的信息很少阿?

[该贴被FengShen_Xia于2007-01-08 09:16:59修改过]

banq
2007-01-08 09:33
>11099

不要自己写jndi.properties,而且你也写错了端口。

JMS是非常成熟的应用,属于系统集成中柔性部分,可以提高效率,增强稳定性。

网上资料少很正常,因为全名掌握J2EE的人太少,肯写文章分享的少之又少,所以,不能以中文网上资料来品定技术,看看英文资料,国内在网上活跃的的都很浮躁,以为讲新技术就是高手。跑题了。

Chocoo
2007-01-08 10:07
我这个端口已经在jboss-service.xml里相应的修改过了,那个里面也是11099(是为了防止和tomcat的端口冲突)。

如果写jndi.propertes的话,就可以不用在程序里创建Properties的对象了,就可以直接这样子,不用手动设定JNDI的上下文环境了。我是这样想的

tzzy620
2007-01-08 16:58
1234

tzzy620
2007-01-08 16:59
知道

Chocoo
2007-01-08 17:17
向 banq 请教,上面的问题。

谢谢您!!

banq
2007-01-08 17:29
>如果写jndi.propertes的话,就可以不用在程序里创建Properties的对象了

是不用写的,在jboss/server/default/conf目录已经又jndi.property了

JBoss中JNDI调用直接通过 new InitialContext() 进行lookup就可以了,简单方便;

Chocoo
2007-01-09 15:04
我就是使用得jndi.propertes这个文件,但是还是会报同样的错误,这个是为什么呢?

再次请教

Chocoo
2007-01-09 15:08
Context ctx = new InitialContext();

queueConnectionFactory = (QueueConnectionFactory)jndiContext.lookup("ConnectionFactory");

queue = (Queue) ctx.lookup("queue/myQueue");

我就是这样写的,但是会报同样的错

banq
2007-01-09 15:16
ConnectionFactory的JNDI名称应该是java:/ConnectionFactory

queueConnectionFactory = (QueueConnectionFactory)jndiContext.lookup("java:/ConnectionFactory");

猜你喜欢
2Go 1 2 下一页