在Tomcat7中配置JTA

时间:2017-06-02 13:12:41

标签: java postgresql jdbc

我正在使用JEE5和Postgresql,当我尝试持久保存对象时输出显示

  

无法找到数据源:java:jdbc / postgres   javax.naming.NameNotFoundException:名称jdbc / postgres不是   与此背景相关联

在context.xml(Tomcat7)中我有

<persistence-unit name="People">    

    <jta-data-source>java:jdbc/postgres</jta-data-source>
        <properties>
           <property name="hibernate.hbm2ddl.auto" value="update" />
           <property name="hibernate.show_sql" value="true" />
        </properties>
</persistence-unit>

在persistence.xml中我有:

@Stateless
public class PeopleDAOImpl implements PeopleDAO {
  EntityManagerFactory emf = Persistence.createEntityManagerFactory("People");

  @Override
  public void persistPeople(People pep) {
    EntityManager em = emf.createEntityManager();

    em.persist(pep);
  }
}

在我的持久性bean中,我有

{{1}}

2 个答案:

答案 0 :(得分:1)

Tomcat以不同于Glassfish的方式命名上下文资源。您在context.xml中将名称定义为jdbc/postgres,但在persistence.xml中您必须使用java:comp/env/jdbc/postgres

答案 1 :(得分:0)

迟到的回复,但可能对其他人仍然有用:

JTA 可以在 Tomcat 中使用组件化实现,如 Atomikos (https://www.atomikos.com)。

干杯

PS:如果您在设置方面需要帮助,您可能需要考虑免费试用 Atomikos - 其中包括 Tomcat 支持/设置。