我正在使用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}}
答案 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 支持/设置。