JBoss Seam无法创建Java持久性实体管理器

时间:2015-06-05 14:23:53

标签: persistence entitymanager seam2 jboss-seam

我完全失去了这个。我正在通过谷歌搜索互联网,试图找到解决这个问题的方法。我很久没有使用JBoss了,我们使用的是Seam版本2 ...不知道确切的版本。我以前从未使用过Seam,所以我对这个框架一无所知。我的老板写了大部分代码,但他已经超越了查看这段代码,并责成我解决这个问题。

所以,问题是......用户登录我们的Seam应用程序,一切都很好,但是当我们尝试从CSV文件加载用户时,就好像Seam会忘记我们是谁,然后我们得到一个错误。

我们有一个UserIdentity类,例如:

@Name("org.jboss.seam.security.identity")
@Scope(ScopeType.SESSION)
@Install(precedence = Install.APPLICATION)
@BypassInterceptors
@Startup
public class UserIdentity extends Identity {

在本课程中,我们有一行代码:

EntityManager entityManager = (EntityManager)Component.getInstance("entityManager",true);

返回null,因此我们得到一个NullPointerException(NPE)。

我认为“Component.getInstance”失败了,如果我们可以刷新它并再次取回它会很好。如果我能更新到一个更新的接缝罐并解决这个问题会很棒。

我会继续搜索互联网以获得修复,但与此同时,如果有人看到了这个问题,并且知道如何修复它,那就太棒了。 谢谢!

1 个答案:

答案 0 :(得分:1)

使用时,Component.getInstance 方法用于获取对Seam会话bean组件的引用。

真实结束您的上下文并再次创建。因为它没有找到该上下文它返回null。

由于在会话范围中使用了EntityManager,因此您不必再次创建它。

简单,您可以将实体管理器注入,

EntityManager entityManager =(EntityManager)Component.getInstance(“entityManager”);

<强> @In EntityManager entityManager;