繁体   English   中英

在 Tomcat7 中配置 JTA

[英]Configuring JTA in Tomcat7

我在 Postgresql 中使用 JEE5,当我尝试保留对象时,输出显示

找不到数据源:java:jdbc/postgres javax.naming.NameNotFoundException:名称 jdbc/postgres 与此上下文无关

在 context.xml (Tomcat7) 我有

<Context>  
  <Resource name="jdbc/postgres" auth="Container"
            type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
            url="jdbc:postgresql://127.0.0.1:5433/peopledb"
            username="postgres" password="password" maxActive="20" maxIdle="10"
            maxWait="-1"/>
</Context>

在persistence.xml 我有:

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

在我的持久性 bean 中,我有

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

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

    em.persist(pep);
  }
}

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

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

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

干杯

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM