2010-11-30 85 views
1

我是Java EE中的新手。这是我想要做的第一个项目,我有一个我无法解决的问题。我创建了三个项目:slowka-beans(EJB),slowka-persistance(JPA)和slowka-web(JSF)。部署它们后,我无法访问持久性单元 - EntityManager为空。一切正常 - 我可以创建bean,在其中实例化实体类并在JSF页面上显示它们。但是,我如何将它们存储在数据库中?我在JBoss站点上配置了MySQL数据库。JBoss 5.1上的Java EE bean中的空EntityManager

,我有以下看起来代码: LanguagesManager.java(在slowka豆)

@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-持久性):

<?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> 

服务器上部署没有按这没有任何例外。但我发现了以下警告在服务器的输出:

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()我越来越“不工作......”输出。

我在Eclipse中创建了项目,JPA正在使用EclipseLink。我试过两种--EclipseLink 1.1.4和2.1.0,结果相同。

可以请你帮我吗?

+0

我有完全相同的问题,并花了数天的时间来解决这个问题!最后你有没有运气?如果是这样,请你发表您的persistence.xml的副本,并从你的servlet/bean中relavent短代码片断 我对计算器的问题是[这里] [1] [1] :http://stackoverflow.com/questions/5373598/how-to-use-container-managed-transaction-cmt-with-jboss-as-6-hibernate-3-6-jp – willtardy 2011-03-21 11:13:08

回答

2

不要从JSP调用EJB。用servlet调用它们,在那里用@EJB注入它们。

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