- 浏览: 691619 次
- 性别:
- 来自: 北京
博客专栏
-
读金庸故事,品程序人生
浏览量:47234
文章分类
最新评论
-
hty881008:
LZ,你的json返回是怎么出来的,我的怎么是No messa ...
使用CXF暴露您的REST服务 -
jxFY:
赞
Apache的对象池化工具commons-pool -
wangyudong:
新版本的Wisdom RESTClient地址https:// ...
使用CXF暴露您的REST服务 -
wangyudong:
由CXF实现的微服务需要有比较好的工具去测试RESTful A ...
使用CXF暴露您的REST服务 -
spring_springdata:
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
Maven3实战笔记01环境配置与使用入门
1. 前言
JavaEE5的标准已经不是新鲜东西了,现在出了JavaEE6的标准,不过因为应用服务器像Weblogic和Websphere还没有大力支持呢,所以暂时先放放。
JavaEE5是以EJB3.0为核心内容所出的标准。
主要有:
Servlet2.5 JSP2.1 JSF1.2 JSTL1.2 JTA1.1 JPA2.0 EJB3.0 JMS1.1 JavaMail1.4 |
以上就是JavaEE5提出的相关标准
因为JPA在笔者的博客中单独有总结,在此系列不再做出总结,至于JSF等Web前端技术,之后会做一个文档形式的总结的。笔者是以Jboss5作为应用服务器(尽管JBoss6已经出了,并且支持JavaEE6标准),JDK版本是1.6.22,开发IDE为MyEclipse8.6.1。
2. JTA简介
JTA(Java Transaction API)提供了事务划分接口标准,比如同一个数据库的事务,跨数据库访问业务的全局事务。在Java Web当中可能事务并不是十分重要(相对来说),而在JavaEE企业级开发,比如涉及到金额的电信、银行、商务等等对事务比较敏感的系统中,那么事务控制就是一个重点中的重点了。
JavaEE通常分为局部事务(Local Transaction Processing)和全局事务(Distributed Transaction Processing)。如果业务是单一数据源就是用局部事务就可以了,如果需要多个数据源就需要全局事务来保证对外是透明的、就跟一个数据源没两样的策略。
3. 简单的JTA例子
比如说我的数据库记录目前记录如下
Id是主键
之后我们在JBOSS中配置2个XA类型的数据源同时指向这一个数据库。
oracle1数据源配置内容如下
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <datasources> <xa-datasource> <jndi-name>oracle1</jndi-name> <rar-name>jboss-xa-jdbc.rar</rar-name> <use-java-context>true</use-java-context> <connection-definition>javax.sql.DataSource</connection-definition> <jmx-invoker-name>jboss:service=invoker,type=jrmp</jmx-invoker-name> <min-pool-size>0</min-pool-size> <max-pool-size>10</max-pool-size> <blocking-timeout-millis>30000</blocking-timeout-millis> <idle-timeout-minutes>30</idle-timeout-minutes> <prefill>false</prefill> <background-validation>false</background-validation> <background-validation-millis>0</background-validation-millis> <validate-on-match>true</validate-on-match> <no-tx-separate-pools/> <statistics-formatter>org.jboss.resource.statistic.pool.JBossDefaultSubPoolStatisticFormatter</statistics-formatter> <isSameRM-override-value>false</isSameRM-override-value> <allocation-retry>0</allocation-retry> <allocation-retry-wait-millis>5000</allocation-retry-wait-millis> <application-managed-security xsi:type="securityMetaData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> <metadata> <type-mapping>Oracle9i</type-mapping> </metadata> <type-mapping>Oracle9i</type-mapping> <user-name>system</user-name> <password>111111</password> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name> <prepared-statement-cache-size>0</prepared-statement-cache-size> <share-prepared-statements>false</share-prepared-statements> <set-tx-query-timeout>false</set-tx-query-timeout> <query-timeout>0</query-timeout> <use-try-lock>60000</use-try-lock> <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class> <xa-datasource-property name="URL">jdbc:oracle:thin:@127.0.0.1:1521:jbossdemooracle</xa-datasource-property> <xa-resource-timeout>0</xa-resource-timeout> </xa-datasource> </datasources> |
oracle2内容和它差不多,只是jndi-name不同而已。
下面是未加事务控制的测试代码
try { Context ctx = new InitialContext(); DataSource ds1 = (DataSource) ctx.lookup("java:/oracle1"); DataSource ds2 = (DataSource) ctx.lookup("java:/oracle2");
Connection connection1 = ds1.getConnection(); Connection connection2 = ds2.getConnection();
Statement statement1 = connection1.createStatement(); Statement statement2 = connection2.createStatement();
String sql1 = "insert into jimmy_user values(3,'青阳子')"; String sql2 = "insert into jimmy_user values(2,'非凡公子')";
int sun1 = statement1.executeUpdate(sql1); int sun2 = statement2.executeUpdate(sql2);
statement1.close(); connection1.close();
statement2.close(); connection2.close(); } catch (NamingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } |
执行后看到数据库的结果如下:
青阳子插进去了,非凡公子因为主键重复被甩了!
发表评论
-
JavaEE5实战笔记05RedHat搭建JBoss、Oracle10g环境
2011-06-01 10:50 1515JavaEE5实战笔记在RedHat上搭建JBoss、Orac ... -
JavaEE5实战笔记02JPA持久层的一些问题
2011-05-30 14:48 15581. JPA关联实体的级联操作问题 在此次联系中 ... -
JavaEE5实战笔记01EJB环境搭建及异常解决
2011-05-30 14:43 49391. 说明 此实战笔记是为了之前的学习笔记做一个 ... -
Spring集成ActiveMQ配置
2011-03-21 20:58 278781. 集成环境 Spring采用2.5.6版本, ... -
JAVA的Mina框架传递对象——一劳永逸(转载)
2011-03-09 11:31 2612接触java的Mina框架已经有很多时间了,在网上也读过了很多 ... -
JavaEE5学习笔记12-JSF验证器使用总结
2011-03-09 00:01 19331. JSF验证器 说完转换器就该说说验证器了, ... -
JavaEE5学习笔记11-JSF转换器使用总结
2011-03-08 23:53 26741. JSF的转换器是在JSF生命周期的第2个阶段 ... -
JSF组件生命周期的讨论
2011-03-08 23:38 16941. JSF生命周期 下面我们来看看JSF组件的 ... -
JavaEE5学习笔记10-JSF基本UI控件使用
2011-03-08 23:34 35991. JSF也是JavaEE5的标准,感觉上sun ... -
JavaEE5学习笔记09-将EJB发布成WebService总结(2)
2011-02-28 09:21 1520以上例子只是简单调用了WebService,参数是简单的Str ... -
JavaEE5学习笔记09-将EJB发布成WebService总结(1)
2011-02-28 09:19 40721. 将EJB发布成,或者说暴露成Web服务(也许 ... -
JavaEE5学习笔记08-JPA与EJB集成总结(4)
2011-02-24 09:36 14621. 在JavaEE容器 ... -
JavaEE5学习笔记08-JPA与EJB集成总结(3)
2011-02-24 09:35 11651. 测试代码 部署成功后,在另一个项目中建立测 ... -
JavaEE5学习笔记08-JPA与EJB集成总结(2)
2011-02-24 09:33 1483下面来看针对此实体操作的sessionBean代码。 接口 ... -
JavaEE5学习笔记08-JPA与EJB集成总结(1)
2011-02-24 09:28 1718JPA是JavaEE5提出的一套标准接口,不同的应用服务器对其 ... -
JavaEE5学习笔记06-EJB之消息驱动Bean(MDB)总结----2
2011-02-21 15:56 1381除了activationConfig之外,如果使用其他Java ... -
JavaEE5学习笔记06-EJB之消息驱动Bean(MDB)总结----1
2011-02-21 15:55 19251. 功能介绍 在EJB的分类中还有一个就是消息驱 ... -
JavaEE5学习笔记05-EJB之会话Bean(sessionBean)总结-----7
2011-02-21 09:49 12931. EJB的容器式依 ... -
JavaEE5学习笔记05-EJB之会话Bean(sessionBean)总结-----6
2011-02-21 09:48 1461BMT就是Bean自己管理事务,这种方式就是以硬编码的方式在B ... -
JavaEE5学习笔记05-EJB之会话Bean(sessionBean)总结-----5
2011-02-21 09:46 18551. 有状态的会话Bean的本地、远程调用 其实这 ...
相关推荐
JavaEE5学习笔记01-JTA和数据库事务.
JavaEE5学习笔记02-JNDI与RMI,
JavaEE5学习笔记05-EJB之会话Bean总结...
JavaEE5学习笔记07-Web层与EJB集成总结。
JavaEE5学习笔记03-JMS介绍与使用..
JavaEE5学习笔记04-JavaMail使用总结----
JavaEE5学习笔记12-JSF集成AJAX使用经验总结。
JavaEE5学习笔记09-将EJB发布成WebService总结。
JavaEE5学习笔记13-JSF集成Facelets使用经验总结.
JavaEE5学习笔记11-JSF转换器验证器使用经验总结。
JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源...
javaee-api-8.0-javadoc.jar,这是javaee1.8api的jar包,解压后可用javadoc2chm制作成chm帮助文档。
JavaEE源代码 struts2-spring-plugin-2.0.11JavaEE源代码 struts2-spring-plugin-2.0.11JavaEE源代码 struts2-spring-plugin-2.0.11JavaEE源代码 struts2-spring-plugin-2.0.11JavaEE源代码 struts2-spring-plugin-...
NULL 博文链接:https://suhuanzheng7784877.iteye.com/blog/909104
java javaee-api-6.0-5
EJB之消息驱动Bean的总结。ejb 消息驱动Bean j2ee jms java
先电云计算软件服务-云存储网盘JavaEE网络应用开发手册-Cloud-SaaS-Web-v2.0先电云计算软件服务-云存储网盘JavaEE网络应用开发手册-Cloud-SaaS-Web-v2.0先电云计算软件服务-云存储网盘JavaEE网络应用开发手册-Cloud-...
JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-...
javaee.jar,jsf-api.jar,jsf-impl.jar,jstl-1.2.jar