AppClient GF4中的NullPointerException

时间:2014-02-01 10:46:08

标签: java eclipse jndi glassfish-4

我正在开发一个需要在gf服务器上远程访问bean的应用程序客户端。从阅读开始我认为我应该可以使用注射注释,但这对我不起作用。然后我切换到使用InitialContext查找我的bean的映射名称,但我也无法使其工作。我在这里看了几个线程,据我所知,我需要包含所有需要的jar文件,并将EJB项目添加到我的appCLients路径中。这在Eclipse中或从服务器管理页面单击启动都不起作用。

EJB项目中的My Bean

/**
 * Session Bean implementation class MazeBean
 */
@Stateless(mappedName = "mazes")
@Remote
public class MazeBean
{

我试图访问的课程(不是主要的,我认为,这就是为什么我不能使用注射)

public class MazeBuilder
{
    private MazeBean mazeBean;  
    Maze maze;

    public MazeBuilder()
    {
        Context ctx;
        try
        {
            ctx = new InitialContext();
            mazeBean = (MazeBean)ctx.lookup("java:comp/env/mazes");
        } catch (NamingException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }       
        maze = mazeBean.getMaze(1); (line 31)
        mazeBean.regenerateMaze(maze);
    }

}

在Eclipse中运行时遇到的异常

javax.naming.NamingException: Lookup failed for 'java:comp/env/mazes' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is javax.naming.NameNotFoundException: No object bound for java:comp/env/mazes [Root exception is java.lang.NullPointerException]]
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:491)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438)
    at javax.naming.InitialContext.lookup(InitialContext.java:411)
    at mazeBuilder.MazeBuilder.<init>(MazeBuilder.java:23)
    at Main.main(Main.java:16)
Caused by: javax.naming.NameNotFoundException: No object bound for java:comp/env/mazes [Root exception is java.lang.NullPointerException]
    at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:229)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:471)
    ... 4 more
Caused by: java.lang.NullPointerException
    at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:159)
    ... 5 more
Exception in thread "main" java.lang.NullPointerException
    at mazeBuilder.MazeBuilder.<init>(MazeBuilder.java:31)
    at Main.main(Main.java:16)

现在它说没有该名称的对象所以我显然没有正确设置它。我的印象是注释是一种合法的定义方法,所以我的bean的mappedName属性应该允许我找到它。还有什么方法可以让豆子被发现?

Eclipse Kepler,GF4,MySql 5.5.31,EclipseLink 2.5

我在main中尝试了两种方法并获得相同的异常

1 个答案:

答案 0 :(得分:0)

我现在已经解决了这个问题,感谢Ajan,在更正全局名称后,它正在glassfish lib目录中添加gf-client.jar和appserv-rt.jar。

ps - 如何将问题设置为已解决?