发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA

请教关于jboss上使用jta的问题,是不是jta无法在远程的客户端上使用?

2007-04-16 14:17
赞助商链接

各位高手:
我在jboss上配置了支持jta的oracle数据源,但当在客户端上(是应用程序的胖客户端)启动jta事务时老是出错,
javax.transaction.SystemException: java.lang.RuntimeException: UT factory lookup failed

代码如下:
Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
properties.put(Context.PROVIDER_URL, "10.48.44.41");
properties.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
String name = null;
UserTransaction ut = null;
try {
Context ctx = new InitialContext(properties);
ut=(UserTransaction)ctx.lookup("UserTransaction");
ut.begin();
javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("XAOracleDS");
Connection conn = ds.getConnection();
Statement stmt=conn.createStatement();
String sql="select name from service_area t where t.area_id = 77";
ResultSet rs = stmt.executeQuery(sql);
rs.next();
name = rs.getString("name");
//sql = "update service_area set name = 33 where area_id = 1";
//stmt.executeUpdate(sql);
stmt.close();
conn.close();
ctx.close();
ut.commit();
} catch (Exception e1) {
e1.printStackTrace();
/* try {
ut.rollback();
} catch (IllegalStateException e2) {
// TODO 自动生成 catch 块
e2.printStackTrace();
} catch (SecurityException e2) {
// TODO 自动生成 catch 块
e2.printStackTrace();
} catch (SystemException e2) {
// TODO 自动生成 catch 块
e2.printStackTrace();
}*/
}
请问各位是什么原因,怎么解决?
是不是jta是无法在远程的客户端上使用的?

2007-04-16 14:20

JBoss调用JTA没这么复杂吧,直接使用JNDI就可以了。名称为"java:/TransactionManager"

TransactionManager transactionManager = (TransactionManager)new InitialContext().lookup("java:/TransactionManager")
transactionManager.begin()


transactionManager.commit();

transactionManager.rollback();

diz
2007-04-17 14:46

根据我的理解容器的JTA是可以远程调用的!

楼主的问题我怀疑是JTA的Naming错误!你把jboss-console打开,然后查一下JTA的Remote Name!我记得好像是叫JTATransactionManager

2007-04-22 21:40

问题已经解决了只要把org.jnp.interfaces.NamingContextFactory换成org.jboss.naming.NamingContextFactory就行了。

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系反馈 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com