2013-03-17 105 views
0

我有一个独立客户端,我不想在我的Glassfish服务器上部署。通过客户端,我想通过点对点通信模式发布消息。我发现this伟大的教程,它使用注释我不能使用,因为我有一个独立的客户端。我发现以下解决方案在计算器上:无法在独立客户端上实例化initialcontext

Context jndiContext; 
private ConnectionFactory connectionFactory; 
private static Queue queue; 

public TweetSender() throws NamingException{ 
    jndiContext = new InitialContext(); 
    connectionFactory = (ConnectionFactory) jndiContext.lookup("JMS/KwetterConnectionFactory"); 
    queue = (Queue) jndiContext.lookup("JMS/KwetterQueue"); 
} 

我还发现我必须从glassfish目录中导入一些库。所以我做:Project properties

我得到以下错误:

javax.naming.NoInitialContextException: Cannot instantiate class: com.sun.enterprise.naming.impl.SerialInitContextFactory [Root exception is java.lang.ClassNotFoundException: com.sun.enterprise.naming.impl.SerialInitContextFactory] 

我在做什么错?

编辑

我发现这个问题暂时解决,虽然我觉得这是不正确的(我想,当我要迁移的项目,我可能会问题。我删除,我从GlassFish检索的库使用“绝对路径” lib文件夹,并添加他们

+0

这https://blogs.oracle.com/randystuph/entry/injecting_jndi_datasources_for_junit可能有助于 – 2013-03-17 15:37:42

+0

谢谢,我尝试过,但没有改变 – 2013-03-17 15:41:13

+0

看看这个问题为好,也许这就是问题所在:HTTP://计算器.COM /问题/ 3461310 /何灿我绑定-A-数据源到一个-的InitialContext换的JUnit测试 – 2013-03-17 15:42:35

回答

0

一个解决方案可以是包装您的独立客户端应用程序在一个jar文件,如:。myclient.jar 并运行它作为使用appclient实用的GlassFish应用程序客户端:

applcient -client myclient.jar 

appclient实用程序可以在这里找到:[glassfish home dir]/glassfish/bin。