JBoss 5.1上的Java EE bean中的空EntityManager [英] Empty EntityManager in Java EE bean on JBoss 5.1

查看:100
本文介绍了JBoss 5.1上的Java EE bean中的空EntityManager的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Java EE的新手.这是我要尝试的第一个项目,但有一个我无法解决的问题.

I'm a newbie in Java EE. This is the first project I'm trying to do and I have a problem that I just can't solve.

我创建了三个项目:slowka-beans(EJB),slowka-persistance(JPA)和slowka-web(JSF).部署它们后,我无法访问持久性单元-EntityManager为null.一切正常-我可以创建bean,在其中实例化实体类并在JSF页面上显示它们.但是如何将它们存储在数据库中?我在JBoss站点上配置了MySQL数据库.

I've created three projects: slowka-beans (EJB), slowka-persistance (JPA) and slowka-web(JSF). After deploying them I can't get access to persistence unit - the EntityManager is null. Everything works fine - I can create beans, inside them instantiate entity classes and show them on JSF page. But how can I store them in the DB? I have MySQL database configured on JBoss site.

我拥有的代码如下: LanguagesManager.java(在slowka-beans中)

The code that I have looks following: LanguagesManager.java (in slowka-beans)

@Stateless
public class LanguagesManager implements LanguagesManagerLocal {

    @PersistenceContext(unitName="slowka-persistance")
    private EntityManager em;

    public LanguagesManager() {
        System.out.println("LanguagesManagerBean constructor");
    }

    public String getWorking() {
        if(em == null) {
            System.out.println("Not working...");
            return "Not working...";
        } else {
            System.out.println("It's ALIVE!");
            return "It's ALIVE!";
        }
    }
}

persistence.xml(slowka-peristance):

persistence.xml (slowka-persistance):

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
    <persistence-unit name="slowka-persistance">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>java:/PraktykiDS</jta-data-source>
        <class>pl.edu.uj.sobczak.szymon.Language</class>
    </persistence-unit>
</persistence>

在服务器上部署它不会引起任何异常.但我在服务器的输出中发现了以下警告:

Deploying this on server doesn't cause any exceptions. but I've spotted the following warnings in server's output:

23:02:23,801 INFO  [PersistenceUnitDeployment] Starting persistence unit persistence.unit:unitName=slowka.ear/slowka-persistance.jar#slowka-persistance
23:02:23,803 INFO  [Ejb3Configuration] Processing PersistenceUnitInfo [
    name: slowka-persistance
    ...]
23:02:23,804 WARN  [Ejb3Configuration] Persistence provider caller does not implement the EJB3 spec correctly. PersistenceUnitInfo.getNewTempClassLoader() is null.
(... trimmed ...)
23:02:23,868 INFO  [SessionFactoryObjectFactory] Bound factory to JNDI name: persistence.unit:unitName=slowka.ear/slowka-persistance.jar#slowka-persistance
23:02:23,868 WARN  [SessionFactoryObjectFactory] InitialContext did not implement EventContext

每次我从JSP访问LanguagesManager::getWorking()时,我都会得到不工作..."的输出.

Every time I'm accessing LanguagesManager::getWorking() from JSP i'm getting "Not working..." output.

我已经在Eclipse中创建了项目,JPA正在使用EclipseLink.我已经尝试过-EclipseLink 1.1.4和2.1.0都具有相同的结果.

I've created the project in Eclipse, JPA is using EclipseLink. I've tried both - EclipseLink 1.1.4 and 2.1.0 with the same result.

能请你帮我吗?

推荐答案

不要从JSP调用EJB.从servlet调用它们,然后在其中注入@EJB.

Don't call EJBs from JSPs. Call them from servlets, where you inject them with @EJB.

如果手动实例化对象,则不会发生注入.对象(ejb)必须由EJB容器实例化.

If you instantiate the object manually, then injection does not happen. The object (ejb) must be instantiated by the EJB container.

这篇关于JBoss 5.1上的Java EE bean中的空EntityManager的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆