banq 大哥,JTA问题请教

08-01-02 power1128
上次讨论在事务控制时应该使用JTA控制事务,我大概读了一些文章,发现我现在的确需要使用JTA。于是从Tomcat转向Jboss,但是我没搞懂JTA,Servlet Container,Hibernate,Application Server之间是个什么关系?各个容器之间是怎么协同工作的?

比如Hibernate可以不依赖Tomcat,它可以自己创建连接池。那么JTA和Application Server之间是什么关系呢?JTA一定需要Application Server支持吗?如果JTA也可以当成一个组件使用,那么我可以在Tomcat下使用JTA吗?

问题比较多,呵呵

[该贴被power1128于2008-01-02 12:26修改过]

banq
2008-01-02 12:38
JBoss等application server其实就是组件的容器,JTA是其中一个组件,如果让tomcat支持JTA,可以使用 JOTM或者使用Spring,这两种框架支持JTA有些区别,JOTM与服务器跟近些,通过JNDI供我们程序调用,而Spring则把JTA通过配置引入到我们的程序中。

power1128
2008-01-02 19:56
将jotm集成到Tomcat5.5后,jndi报出如下异常:

javax.naming.NameNotFoundException

at org.objectweb.carol.jndi.enc.java.CompNamingContext.lookupCtx(CompNam

ingContext.java:689)

at org.objectweb.carol.jndi.enc.java.CompNamingContext.lookup(CompNaming

Context.java:179)

at org.objectweb.carol.jndi.enc.java.JavaURLContext.lookup(JavaURLContex

t.java:138)

at javax.naming.InitialContext.lookup(InitialContext.java:351)

数据源配置肯定没问题,不集成jotm时没有问题,可以通过jndi找到数据源,但是一加上jotm就出现这个错误,好像是Tomcat用了carol的JNDI,但是carol.properties文件里我配的是carol.start.jndi=false啊。

各位帮忙看看

[该贴被power1128于2008-01-02 20:00修改过]

banq
2008-01-03 14:27
主要还是JNDI方面有些问题,JNDI有下面几个步骤:

1. 在tomcat中配置数据源JNDI,在context.xml或server.xml中配置,Jotm不知会有无区别,你要检查一下。

2. 程序调用时 Java:comp/env + 你配置JNDI名称

3. 在web.xml中要使用env resource来声明你配置JNDI名称是一个数据源datasource。

power1128
2008-01-03 18:00
那个估计就是Jotm的配置问题。也没时间继续弄了。而且发现Jotm的官方文档又老又旧。现在改用Jboss了,呵呵。

多谢Banq的解答。由于没有了事务的担心(以前一直用数据库事务),发现这时候在Service里写业务的时候感觉很自然。

猜你喜欢