EJB JNDI只在Java Web Start的查找在GlassFish服务器(EJB Jndi

2019-09-18 05:44发布

我试图连接到通过Java Web Start GlassFish服务器EJB服务。 我收到以下错误,同时获得初始上下文。 我还添加了代码段用于获取初始上下文。

一个有趣的是,当我在NetBeans IDE中运行该程序的一个简单的Java程序Java Web Start的之外,它工作正常。

我添加了所有从GlassFish模块相关的jar文件夹到Java Web Start的。

java.lang.NullPointerException
    at com.sun.enterprise.naming.impl.SerialContext.<init>(SerialContext.java:275)
    at com.sun.enterprise.naming.impl.SerialContext.<init>(SerialContext.java:334)
    at com.sun.enterprise.naming.impl.SerialInitContextFactory.createInitialContext(SerialInitContextFactory.java:358)
    at com.sun.enterprise.naming.impl.SerialInitContextFactory.getInitialContext(SerialInitContextFactory.java:353)
    at com.sun.enterprise.naming.SerialInitContextFactory.getInitialContext(SerialInitContextFactory.java:69)
    at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
    at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
    at javax.naming.InitialContext.init(Unknown Source)
    at javax.naming.InitialContext.<init>(Unknown Source)
    at gov.ca.lc.util.ServiceLocator.getInitialContext(ServiceLocator.java:140)
    at gov.ca.lc.util.ServiceLocator.getVotesEJB(ServiceLocator.java:103)
    at gov.ca.lc.scenemanagement.AbstractVotingScene.getCommitteeList(AbstractVotingScene.java:143)
    at gov.ca.lc.scenemanagement.AbstractVotingScene.<init>(AbstractVotingScene.java:65)
    at gov.ca.lc.scenes.MenuScene.<init>(MenuScene.java:56)
    at gov.ca.lc.menu.StartVoting.startUp(StartVoting.java:47)
    at org.mt4j.MTApplication.setup(MTApplication.java:328)
    at processing.core.PApplet.handleDraw(PApplet.java:1580)
    at processing.core.PApplet.run(PApplet.java:1502)
    at java.lang.Thread.run(Unknown Source)
Exception in thread "Animation Thread" java.lang.NullPointerException
    at gov.ca.lc.scenemanagement.AbstractVotingScene.getCommitteeList(AbstractVotingScene.java:143)
    at gov.ca.lc.scenemanagement.AbstractVotingScene.<init>(AbstractVotingScene.java:65)
    at gov.ca.lc.scenes.MenuScene.<init>(MenuScene.java:56)
    at gov.ca.lc.menu.StartVoting.startUp(StartVoting.java:47)
    at org.mt4j.MTApplication.setup(MTApplication.java:328)
    at processing.core.PApplet.handleDraw(PApplet.java:1580)
    at processing.core.PApplet.run(PApplet.java:1502)
    at java.lang.Thread.run(Unknown Source)


Following is my code to get the initial context

    private static InitialContext getInitialContext()
            throws NamingException {
            Properties props = null;
            try{  
    //            props=new Properties();   
    //            props.load(new FileInputStream(new File("jndi.properties")));
    //            System.out.println(props.get("java.naming.factory.initial"));
                 props=new Properties();   


    props.setProperty("java.naming.factory.initial","com.sun.enterprise.naming.SerialInitContextFactory");  
        props.setProperty("java.naming.factory.url.pkgs ", "com.sun.enterprise.naming");//ur server ip  
        props.setProperty("java.naming.factory.state ", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");//ur server ip  
        props.setProperty("org.omg.CORBA.ORBInitialHost", "165.107.33.181");//ur server ip  
        props.setProperty("org.omg.CORBA.ORBInitialPort","3700"); //default is 3700  


            }catch(Exception ex){
                ex.printStackTrace();
            }
            return new InitialContext(props);
        }

Answer 1:

我也有同样的问题。 我使用JMS,我需要添加其他的jar。 起初,我尝试使用GF-client.jar中,但它并不通过Java Web Start工作。 所以,我已在上市罐连接远程JMS客户机到GlassFish 3 。 它的工作原理Java Web Start的外面。



Answer 2:

我不知道是什么的相关jar文件是你的,但为了以防万一,我们对这个领域有不同的看法:我用用你使用的初始上下文相同的属性刚刚的appserv-rt.jar中和Java的ee.jar并能正常工作。 不要添加任何东西,你不需要,然后再试一次。



Answer 3:

包appclient GlassFish中/ bin中创建appclient.jar,包括对客户罐。 然后解压缩在客户端和使用GF-client.jar中如常。



Answer 4:

我想补充一点,如果你已经安装在你的机器了GlassFish所有这些设置才有效。 如果部署在一台机器上的Java应用程序在webstart不具有GlassFish服务器那么我们最终会得到相同的异常。 其原因是,如果你打开的appserv-rt.jar中它指向的GF-client.jar中,如果你看看GF-client.jar中它指向模块文件夹一大堆的jar文件。 所以我想,实际上我们需要的GF-client.jar中指出的所有jar文件。



文章来源: EJB Jndi look up in Glassfish server only in Java Web start