我正在开发一个应用程序客户机,它需要远程访问gf服务器上的bean。从阅读中,我认为我应该能够使用注入注释,但这对我来说是行不通的。然后,我转而使用InitialContext,查找我的bean的映射名称,但我也无法让它工作。我在这里看了几个线程,据我所知,应该包括我需要的所有jars,并且我已经将EJB添加到了我的appCLients路径中。无论是在Eclipse中还是通过单击“从服务器管理页面中启动”,这都是行不通的。
EJB项目中的My
/**
* 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属性应该允许我找到它。我还需要什么才能让这个豆子被发现?
日食开普勒,GF4,MySql 5.5.31,EclipseLink 2.5
我主要尝试了这两种方法,并得到了相同的异常。
发布于 2014-02-02 09:45:41
我现在已经解决了这个问题,谢谢Ajan,在我更正全局名称之后,它从glassfish库目录中添加了gf-client.jar和appserv-rt.jar。
我如何设置一个问题作为解决?
https://stackoverflow.com/questions/21497056
复制相似问题