Java平台支持的三种事务模型
由 maggie 于 星期二, 2009-04-14 13:57 发表事务对于确保数据的完整性与一致性是至关重要的。要想完全理解事务,必须得熟悉一些基本概念、模型还有策略。Mark Richards说到“混淆事务模型与事务策略是个常见错误”。这篇文章谈到了“Java™平台所支持的三种事务模型并对基于这些模型的四种主要事务策略展开了讨论。通过使用Spring Framework及Enterprise JavaBeans(EJB)3.0的一些示例,Mark介绍了事务模型的工作方式及他们缘何能作为从基本的事务处理到高速事务处理系统的基石” 。
Java平台支持三种事务模型:
* 本地事务模型——事务由DB资源而不是应用容器或框架管理。开发者管理连接而不是事务。
* 编程式事务模型——开发者从事务管理器中获取事务,之后需要自己编写事务启动、提交、异常及回滚代码。
* 声明式事务模型——最常见的模型,又叫做容器管理事务。在这种模型下,容器管理着事务,开发者定义(声明)事务的行为和参数。
但这种支持仅能描述事务基本信息和期望行为以及使用的语法和规则。事务策略能够解决如下问题:何时需要使用REQUIRED或MANDATORY属性、特定的指令、使用哪种模型及如何对特定的情况进行优化。
Mark在之前的一篇文章中讨论了事务模型的优势与陷阱。
JSF与Struts对比
由 maggie 于 星期二, 2009-04-14 13:56 发表我的一个客户不知道该选用Struts还是JSF。就像你预料的那样,我通常会问:这2中框架之间有什么区别?当然,除了我的这个客户外很多人都面临这样的选择。
总的来说,我建议在新项目中优先考虑JSF。虽然常常有一些商业上的因素迫使我们为现有的项目选择了Struts,而且那些解决方案还有待考验,但是,让我们面对一个事实:JSF比Struts好多了。
下面是我选择JSF而不选Struts的十大理由:
1.Components(组件)
2.Render Kits
3.Renderers
4.Value Binding Expressions(值绑定表达式)
5.Event Model(事件模型)
6.Extensibility(可扩展性)
7.Managed Beans(Dependency Injection 依赖注入)
8.POJO Action Methods
9.JSF is the standard Java-based web app framework (JSF是java web应用程序的标准框架)
利用XML作为数据存储格式的最佳方案
由 milk 于 星期一, 2009-04-13 18:06 发表在平时工作中,难免会遇到把XML作为数据存储格式。面对目前种类繁多的解决方案,哪个最适合我们呢?在这篇文章中,我对这四种主流方案做一个不完全评测,仅仅针对遍历 XML 这块来测试,因为遍历 XML 是工作中使用最多的。
预备
测试环境:
XML文件格式如下:
<?xml version="1.0" encoding="GB2312"?> <RESULT> <VALUE> <NO>A1234</NO> <ADDR>四川省XX县XX镇XX路X段XX号</ADDR> </VALUE> <VALUE> <NO>B1234</NO> <ADDR>四川省XX市XX乡XX村XX组</ADDR> </VALUE> </RESULT>
测试方法:
采用JSP端调用Bean,让每一种方案分别解析10K、100K、1000K、10000K的 XML 文件,计算其消耗时间(单位:毫秒)。
[code]
JSP 文件:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="com.test.*"%>
<html>
<body>
<%
利用XML作为数据存储格式的最佳方案
由 milk 于 星期一, 2009-04-13 18:06 发表在平时工作中,难免会遇到把XML作为数据存储格式。面对目前种类繁多的解决方案,哪个最适合我们呢?在这篇文章中,我对这四种主流方案做一个不完全评测,仅仅针对遍历 XML 这块来测试,因为遍历 XML 是工作中使用最多的。
预备
测试环境:
XML文件格式如下:
<?xml version="1.0" encoding="GB2312"?> <RESULT> <VALUE> <NO>A1234</NO> <ADDR>四川省XX县XX镇XX路X段XX号</ADDR> </VALUE> <VALUE> <NO>B1234</NO> <ADDR>四川省XX市XX乡XX村XX组</ADDR> </VALUE> </RESULT>
测试方法:
采用JSP端调用Bean,让每一种方案分别解析10K、100K、1000K、10000K的 XML 文件,计算其消耗时间(单位:毫秒)。
[code]
JSP 文件:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="com.test.*"%>
<html>
<body>
<%
如何利用Java-JACOB对WORD文档进行操作
由 milk 于 星期二, 2009-04-07 18:28 发表JACOB是一个 JAVA到微软的COM接口的桥梁。使用JACOB允许任何JVM访问COM对象,从而使JAVA应用程序能够调用COM对象。如果你要对 MS Word、Excel 进行处理,JACOB 是一个好的选择。JACOB目前已经成为sourceforge(http://sourceforge.net/projects/jacob- project/)的一个开源项目,本文使用的版本是1.10.1。
因为在项目中用到了这个技术,但是在网上没有查到很符合题目的文章,经过我自己的探索,总结写出了这篇文章。
这篇文章可能不能完全满足你的要求,你也可以按照我的探索方法进行探索:参阅VBA操作Office的组件的书籍,然后参考下面的Tip完成需要的功能。文章最后附完整的测试代码。
生成WORD文档的简单讲解:
1. 初始化com的线程,非常重要,否则第二次创建com对象的时候会出现can’t co-create object异常 (参见jacob的帮助文档),完成操作com组件后要调用 realease方法
ComThread.InitSTA();// 初始化com的线程,非常重要!!使用结束后要调用 realease方法
2. 初始化word应用程序,新建一个空白文档,
[code]
如何对Java事务处理进行处理
由 milk 于 星期二, 2009-04-07 18:21 发表一、什么是Java事务
通常的观念认为,事务仅与数据库相关。
事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态。隔离性表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。持久性表示已提交的数据在事务执行失败时,数据的状态都应该正确。
通俗的理解,事务是一组原子操作单元,从数据库角度说,就是一组SQL指令,要么全部执行成功,若因为某个原因其中一条指令执行有错误,则撤销先前执行过的所有指令。更简答的说就是:要么全部执行成功,要么撤销不执行。
既然事务的概念从数据库而来,那Java事务是什么?之间有什么联系?
实际上,一个Java应用系统,如果要操作数据库,则通过JDBC来实现的。增加、修改、删除都是通过相应方法间接来实现的,事务的控制也相应转移到Java程序代码中。因此,数据库操作的事务习惯上就称为Java事务。
二、为什么需要事务
浅谈Hibernate入门
由 milk 于 星期四, 2009-04-02 11:22 发表Hibernate简介
Hibernate寓意:Let Java objects hibernate in the relational database.
Hibernate 是Java应用和关系数据库之间的桥梁,负责Java对象和关系数据库之间的映射的ORM中间件。Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java开发人员可以随心所欲的使用对象编程思维来操纵数据库。简单的说就是:
1.封装了通过JDBC访问数据库操作。
2.向上层应用提供访问面向对象数据访问的API。
创建Hibernate配置文件
通过一个例子practice 演示如何运用Hibernate来访问关系数据库。
Practice 工程的功能:
通过Hibernate保存客户(customer)信息。
其Hibernate应用结构图如下:
[code]
―――――――――――――――――――――――――――
Practice 应用
Customer Class ; action Class;Business Class
――――――――――――――――――――――――――――
Tomcat下中文的解决途径
由 maggie 于 星期四, 2009-04-02 11:18 发表(一)JSP页面上是中文,但是看的时候是乱码:
解决的办法就是在JSP页面的编码的地方
< %@ page language="java" contentType="text/html;charset=GBK" %>,
因为Jsp转成Java文件时的编码问题,默认的话有的服务器是ISO-8859-1,如果一个JSP中直接输入了中文,Jsp把它当作ISO8859-1来处理是肯定有问题的,这一点,我们可以通过查看Jasper所生成的Java中间文件来确认。
(二)当用Request对象获取客户提交的汉字代码的时候,会出现乱码:
解决的办法是:要配置一个filter,也就是一个Servelet的过滤器,代码如下:
[code]
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
编写高级JScript代码步骤
由 maggie 于 星期四, 2009-04-02 11:14 发表1、创建高级对象
使用构造函数来创建对象
构造函数是一个函数,调用它来例示并初始化特殊类型的对象。可以使用 new 关键字来调用一个构造函数。下面给出了使用构造函数的新示例。
var myObject = new Object(); // 创建没有属性的通用对象。 var myBirthday = new Date(1961, 5, 10); // 创建一个 Date 对象。 var myCar = new Car(); // 创建一个用户定义的对象,并初始化其属性。
通过构造函数将一个参数作为特定的 this 关键字的值传递给新创建的空对象。然后构造函数负责为新对象执行适应的初始化(创建属性并给出其初始值)。完成后,构造函数返回它所构造的对象的一个参数。
编写构造函数
可以使用 new 运算符结合像 Object()、Date() 和 Function() 这样的预定义的构造函数来创建对象并对其初始化。面向对象的编程其强有力的特征是定义自定义构造函数以创建脚本中使用的自定义对象的能力。创建了自定义的构造函数,这样就可以创建具有已定义属性的对象。下面是自定义函数的示例(注意 this 关键字的使用)。
[code]
Spring访问和实现EJB组件的过程
由 maggie 于 星期四, 2009-04-02 11:07 发表作为轻量级的容器,Spring常常被认为是EJB的替代品。我们也相信,对于很多 (不一定是绝大多数)应用和用例,相对于通过EJB容器来实现相同的功能而言, Sping作为容器,加上它在事务,ORM和JDBC存取这些领域中丰富的功能支持, Spring的确是更好的选择。
不过,需要特别注意的是,使用了Spring并不是说我们就不能用EJB了, 实际上,Spring大大简化了从中访问和实现EJB组件或只实现(EJB组件)其功能的复杂性。 另外,如果通过Spring来访问EJB组件服务,以后就可以在本地EJB组件,远程EJB组件, 或者是POJO(简单Java对象)这些变体之间透明地切换服务的实现,而不需要修改 客户端的代码。
本章,我们来看看Spring是如何帮助我们访问和实现EJB组件的。尤其是在访问 无状态Session Bean(SLSBs)的时候,Spring特别有用,现在我们就由此开始讨论。
访问EJB 1.1. 概念要调用本地或远程无状态Session Bean上的方法,通常客户端的代码必须 进行JNDI查找,得到(本地或远程的)EJB Home对象,然后调用该对象的"create" 方法,才能得到实际的(本地或远程的)EJB对象。前后调用了不止一个EJB组件 上的方法。










最新评论
4 天 13 小时之前
4 天 13 小时之前
1 周 8 小时之前
1 周 8 小时之前
1 周 11 小时之前
1 周 14 小时之前
1 周 14 小时之前
1 周 14 小时之前
1 周 14 小时之前
1 周 14 小时之前