如何从非托管的Java应用程序读取JMS队列?

| 我正在尝试从非托管应用程序(控制台应用程序)读取\“ Sun App Server \”中创建的jms队列中的消息,但出现以下错误:
NoInitialContextException
Cannot instantiate class: javax.jms.TopicConnectionFactory
使用此代码:
Properties env = new Properties( );
env.put(Context.INITIAL_CONTEXT_FACTORY, \"javax.jms.TopicConnectionFactory\");
InitialContext jndi = new InitialContext(env);
并且我引用了包含该类的j2ee.jar库,但是可以肯定的是,该类是一个接口。 我可以从非托管应用程序访问队列吗?     
已邀请:
        Aitor; 当您说“ Sun App Server”时,我不确定这是什么意思,但是我假设它是Glassfish。 获取远程JMS资源有两个单独的步骤。 您需要创建一个远程JNDI连接,该连接需要一个有效的InitialContextFactory类名称。 建立连接后,可以查找TopicConnectionFactory。 对于项目#1,此链接演示了如何建立远程JNDI连接。 对于项目2,一旦有了JNDI上下文,您还需要知道TopicConnectionFactory的JNDI名称,该名称类似于:
TopicConnectionFactory tcf = (TopicConnectionFactory) jndi.lookup(\"jms/TopicConnectionFactory\");
您需要牢记的一个方面是j2ee.jar库包含JMS类的通用Java EE接口,但是您还将在类路径中需要一个包含JMS实现具体类的库。 JNDI连接也是如此。本教程提供的简要清单如下: Applicationserver JNDI查找 /lib/appserv-rt.jar /lib/appserv-admin.jar /lib/javaee.jar /lib/j2ee.jar 客户库 /imq/lib/jms.jar /imq/lib/imq.jar /imq/lib/imqutil.jar /lib/install/applications/jmsra/jmsra.jar     

要回复问题请先登录注册