Query q = session.createQuery("from Cat as c");
q.setFirstResult(20);
q.setMaxResults(10);
List l = q.list(); 表示从第20数据开始,读取10条数据出来。
setFirstResult()从第几条数据开始读取
setMaxResults(100)读取几条数据出来
开源框架Hibernate3的新特性以及发展趋势
http://java.chinaitlab.com/Hibernate/758529.html
Hibernate是一种强大的可提供对象-关系持久化和查询服务的中间件,它可以使程序员依据面向对象的原理开发持久化类,实现对象之间的关联、继承、多态、组合、集合等。
Hibernate提供了它特有的数据库查询语言HQL,这种查询语言屏蔽了不同数据库之间的差别,使你可以编写统一的查询语句执行查询。不同于其他持久化解决方案的是Hibernate并没有把SQL的强大功能屏蔽掉,而是仍然兼容SQL,这使你以往的关系技术依然有效。
一、Hibernate的版本更新情况
Hibernate版本更新速度很快,目前为止有两个阶段性的版本:Hibernate2和Hibernate3,这一点程序员从其Jar文件名便可以看出来。至本文写成之日最新发布的版本是Hibernate3.4.
Hibernate2系列的最高版本是Hibernate2.1.8,Hibernate3系列在编写本书时的最高版本是Hibernate 3.2.5 GA版,GA也就是General Availability,即推荐广泛使用的版本,但目前使用较多且较稳定的版本是Hibernate 3.1.3或Hibernat 3.1.2.
另外,自Hibernate3发布以来,其产品线愈加成熟,相继出现了Hibernate注释、Hibernate实体管理器、Hibernate插件工具等一系列产品套件。在方便程序员使用Hibernate进行应用程序的开发的同时,也逐渐增强了Hibernate产品线的实力。
但目前市面上用于学习Hibernate开发的图书并不多见,大多是介绍老版的Hibernate2,最近希赛和博文联手推出的《贯通Hibernate开发》,对最新的Hibernate3作了详尽的解答,推荐读者阅读。
二、Hibernate3的新特性
Hibernate3在产品的应用性上有了极大提高,并且基于Java 1.5进行了改进,且与EJB3.0进行了集成,在功能上有了很大的提升。同时,Hibernate还对当今另一主流开发平台——微软的。NET平台进行了支持,因此具有更加强大的生命力。
相对于Hibernate2,Hibernate3版本的变化包括三个方面:(1)API的变化API的变化中比较重大的变化是包名的变化,主要是包的根路径发生了改变,这一点程序员只需要在Eclipse中查看Hibernate3.jar这个文件中所包含的类就知道了:Hibernate 3的根路径从Hibernate2的net.sf.hibernate变成了org.hibernate.由于这两个路径完全不同,所以程序员能够在同一个应用程序中同时使用Hibernate2和Hibernate3.如果希望把已有的应用升级到Hibernate3,那么升级的第一步是把Java 源程序中的所有net.sf.hibernate替换为org.hibernate.另外,在Hibernate3中,HibernateException异常以及它的所有子类都继承了Java.lang.RuntimeException.因此在编译时,编译器不会再检查HibernateException.在Hibernate3中,Session接口的createSQLQuery()方法被废弃,被移到org.hibernate.classic.Session接口中。Hibernate3采用新的SQLQuery接口来完成相同的功能。在UserType和CompositeUserType接口中也都加入了一些新的方法,这两个接口被移到org.hibernate.usertype包中,用户定义的UserType和CompositeUserType实现类必须实现这些新方法。Hibernate3提供了ParameterizedType接口,用于更好的重用用户自定义的类型。
以上的这些主要变化将会影响到应用程序,程序员必须要进行相应的调整,才能使基于Hibernate3的应用程序正常运行。
(2)元数据元数据主要是指Hibernate映射文件中各种元素和属性的用法的变化。首当其冲的是Hibernate映射文件的文档类型定义,即DTD文件发生了变化,这一点程序员可以从任何一个Hibernate3的映射文件的文件头中发现,即在元素中定义的URL从http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd变成了http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd.
还有一个重大的改变就是lazy属性的默认值从false变成了true,这也是Hibernate从优化应用程序性能的角度出发所做出的决定。因为当lazy=false时,Hibernate对所有字段都采取预先抓取的策略,如果程序员希望采用延迟加载,必须手工在映射文件中将lazy属性的值设为true,然而总是采用预先抓取策略势必会造成极大的资源占用,从而降低应用程序的性能。所以从应用程序的角度来讲,更希望lazy的默认值是true,这样在有需要的时候才去采用预先抓取的检索策略。
(3)HQL查询语句Hibernate3 采用新的基于ANTLR的HQL/SQL查询翻译器,不过,Hibernate2的查询翻译器也依然存在。在Hibernate的配置文件中,hibernate.query.factory_class属性用来选择查询翻译器。
三、Hibernate的发展趋势
Hibernate是一个非常优秀的持久层解决方案。具有以下发展趋势:(1)与其他开发框架的集成将越来越成熟:如与struts、spring、jbpm的集成,充分发挥Hibernate自身的优势,也吸取了对方框架的优势,在软件系统的各个层各司其职。
(2)产品线的逐渐完善:通过增加若干的工具套件,并支持。net平台,使Hibernate具有更强大的生命力。
(3)与EJB更好的集成:集成EJB,开始将重点转向重量级应用,使得Hibernate在企业级应用中必将占据一席之地。
Hibernate的轻量级 ORM 模型逐步确立了在Java ORM架构中领导地位,甚至取代复杂而又繁琐的EJB模型而成为事实上的Java ORM工业标准。而且其中的许多设计均被J2EE 标准组织吸纳而成为最新EJB3.0规范的标准。
随着Hibernate的广泛应用,越来越多的Java中间件厂商和Java项目(如JBoss、JBPM等)开始把目光集中到Hibernate上并将其纳入自身的体系,使Hibernate具有了越来越广阔的发展前景。
Hibernate框架ORM的实现原理
时间2007-12-6: ??作者?梁建全
梁建全:东方标准国际软件专业讲师
?1.?什么是ORM
ORM的全称是Object Relational Mapping,即对象关系映射。它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。因此它的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作。
2.什么是Hibernate
对于Hibernate的称呼有很多,比如工具、技术、框架以及解决方案等,这些都可以,重要的是大家要知道它的作用。在这里我习惯性称它为框架,它是一种能实现ORM的框架。能实现ORM这个功能的框架有很多,Hibernate可以说是这些框架中最流行、最受开发者关注的,甚至连JBoss公司也把它吸收进来,利用它在自己的项目中实现ORM功能。
3.ORM的实现原理
现在在Java领域大家对Hibernate的讨论很多,比如它的优缺点、如何应用、错误如何解决以及把它和Struts/Spring等框架相结合作为整个系统的解决方案。在这里我想和大家探讨一些更深层次的话题,那就是Hibernate是如何实现ORM的功能?如果让我们自己开发一款实现ORM功能的框架需要怎么做?其实这些问题就是围绕着一个词,那就是“映射”,如果我们知道如何实现这种映射那么我们也能够开发出自己的一款ORM框架。会使用Hibernate的开发人员都知道,在使用它实现ORM功能的时候,主要的文件有:映射类(*.java)、映射文件(*.hbm.xml)以及数据库配置文件(*.properties或*.cfg.xml),它们各自的作用如下。
⑴映射类:它的作用是描述数据库表的结构,表中的字段在类中被描述成属性,将来就可以实现把表中的记录映射成为该类的对象。
⑵映射文件:它的作用是指定数据库表和映射类之间的关系,包括映射类和数据库表的对应关系、表字段和类属性类型的对应关系以及表字段和类属性名称的对应关系等。
⑶数据库配置文件:它的作用是指定与数据库连接时需要的连接信息,比如连接哪中数据库、登录用户名、登录密码以及连接字符串等。
在这三种主要的文件中,映射类为普通Java源文件、映射文件为XML格式、数据库配置文件为Properties格式或者是XML格式。想理解“映射”首先我们需要知道如何解析这三种文件,即解析XML格式文件、解析Properties格式文件和解析Java类文件。下面我们来分别探讨一下如何实现这些文件的解析。
?⑴如何解析XML文件
?前面我们说过映射文件是XML格式,数据库配置文件也可以是XML格式,因此如果能解析XML文件我们就可以获取这两个文件的信息。XML文件格式我简单做下介绍,比如<name sex=”male”>tom</name>这句就是一个XML格式的描述,name代表节点,节点必须有开始标记<name>和结束标记</name>,在开始标记中我们可以添加一些属性的声明比如sex。解析XML的技术可以分为两类那就是SAX和DOM,这两种方式的差别和优缺点大家可以上网查阅或者我们会在以后的文章中提出,请大家关注。实现解析XML文件的功能很方便,我们可以通过下载第三方的一些工具包如xml-apis.jar和xercesImpl.jar等,也可以使用JDK自带的工具类DocumentBuilderFactory、DocumentBuilder、Document、Element等等,大家可以通过API文挡查阅这些类的说明。通过这些类我们可以把XML文件的信息读入内存并通过类中的某些方法获取指定节点的名字、值、属性名、属性值这些信息。
?⑵解析Properties文件
?数据库配置文件可以是XML格式也可以是Properties格式,Properties文件一般采用“属性名=属性值”的形式描述信息。如果配置文件采用Properties文件描述,我们就需要想办法解析这种类型的文件了。想解析Properties文件大家就需要熟悉Properties这个类了,这个类有一些常用方法比如,load()加载指定文件并读取文件中的属性信息,PropertyNames()返回所有属性名,getProperty()返回指定属性名的属性值。通过解析Properties文件我们可以得到连接数据库必要的信息,然后通过底层JDBC技术与数据库建立连接。
?⑶解析Java类文件
?通过解析映射文件和数据库配置文件我们可以建立数据库的连接,可以得到映射类的名字、属性名、数据库表名、字段名以及类型等信息。要把数据库中表的数据映射成为对象,首先需要把表中的记录取出,然后将每个字段值给映射类对象的每个属性,这个赋值过程要调用对象中的set方法。我们现在通过映射文件只知道类名和属性名,如何根据类名和属性名调用相应的set和get方法,是一个关键问题。在Java中有一种机制叫反射机制,使用这种机制我们可以得到类的信息,包括类只用的修饰符、方法、属性、继承的父类以及实现接口等信息。反射机制相关的类有Class、Field、Method以及Constructor等。通过Class的getFields()、getMethods()和getConstructors()方法得到相应的属性、方法和构造方法。通过Field类的getName()、getType()和getModifiers()方法得到相应的属性名、属性类型、属性修饰符信息。通过Method类getReturnType()可以获取方法的返回类型,invoke()方法可以根据给定的方法名和参数值执行对象中对应的方法。我们可以首先通过以上方法获取类中的属性名,然后拼写成setXXX和getXXX方法名,最后根据方法名执行对应的方法,将数据库数据加载到对象中。
此外要实现Hibernate机制还会涉及到一个技术点,那就是如何获取数据库的相关信息。要实现这个功能,就需要大家了解JDBC的DataBaseMetaData类和ResultSetMetaData类,通过这两个类的方法我们就可以获取数据库表的字段名、类型、大小等相关信息。
在这里我只是给大家把实现ORM功能的一些关键技术提了出来,通过上面介绍大家对ORM机制应该有个大概了解,比如通过解析数据库配置文件获取数据库连接信息并建立连接,通过解析映射文件可以获取映射类名、属性名、表名以及字段名等信息,得到名字后通过反射机制可以得到映射类信息,调用构造方法创建对象,调用每个属性的set方法给对象设值完成数据的装载。Hibernate就是采用这个过程来实现ORM的,当然Hibernate还使用了事务控制、缓存控制等很多技术,大家有兴趣的话我们可以以后探讨。
限于时间的原因前面提到的一些技术介绍的比较简单,对于有些人可能理解有困难,没关系我会在以后的时间把各个技术分别进行详细的介绍,请大家关注,同时热情邀请大家一起讨论,通过逐步剖析Hibernate,使我们对Hibernate的理解和驾御能力更近一步。谢谢大家。
JPA
<!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } -->
巴巴运动网商业项目实战视频教程 Struts2+Spring+JPA (106集)
视频目录
01_ 整体项目介绍与产品展示模块的分析
02_ 购物_ 结算_ 送货模块的分析
03_ 用户前台定单管理与付款模块的分析
04_ 订单的后台确认处理分析
05_ 订单的财务_ 仓库_ 配送处理分析
06_ 产品管理与用户评论模块的分析
07_ 用户管理模块分析
08_ 代金券_ 配送地理信息与计费模块的分析
09_ 网站频道_ 网站统计_ 内容管理模块的分析
10_ 权限管理模块分析
11_ 系统架构设计分析
ed2k://|file|11_ 传智播客巴巴运动网_ 系统架构设计分析.rar|47380299|8f035fcd59bcc727fcd373194e268750|h=WY46D46DZJGRJVBBSZX4VUTNG7EQZCH7|/
ed2k://|file|10_ 传智播客巴巴运动网_ 权限管理模块分析.rar|11836660|84fadd430f2b2c532f4f2e416b22c339|h=656P7VJPBFKWZ6VFFU7DNOIXKUWMVHIQ|/
ed2k://|file|09_ 传智播客巴巴运动网_ 网站频道_ 网站统计_ 内容管理模块的分析.rar|40449851|a0628eead6b645b279e5addaab9c9158|h=NNCEPTYGFHSADOEUCWYPN5BYZEFHPDSY|/
ed2k://|file|08_ 传智播客巴巴运动网_ 代金券_ 配送地理信息与计费模块的分析.rar|13886004|34b220086b3772658beeca832c2f2b8f|h=Y64AFFXZPDLXE757RVCSKES6RPMGONPC|/
ed2k://|file|07_ 传智播客巴巴运动网_ 用户管理模块分析.rar|14594509|68de73fc0a18d92e531e6d99f4ae44c8|h=TPRPEBRY2YDNDLOUFD45QNKNK5QCAJTO|/
ed2k://|file|06_ 传智播客巴巴运动网_ 产品管理与用户评论模块的分析.rar|24848487|7c3e9eb5c27242b6175fc160dfd05f4f|h=7DEKF2J7UEK7LG SAVU5KBVS6RVG6VXY3|/
ed2k://|file|05_ 传智播客巴巴运动网_ 订单的财务_ 仓库_ 配送处理分析.rar|28705533|86ecb7e6957989d974966477201a932a|h=BZL3DADNKIBH5EGCKN4BZICNFGCBQMDD|/
ed2k://|file|04_ 传智播客巴巴运动网_ 订单的后台确认处理分析.rar|44276775|be4cb83d6d487e30a58419648386270c|h=DOQAPSZEVIGZ75JM4HCTD FBNRDGMLAHY|/
ed2k://|file|03_ 传智播客巴巴运动网_ 用户前台定单管理与付款模块的分析.rar|32226754|8a4b792768e759ecc24f6d9b0778fe71|h=IOYQBH3N3AZNJ7AEIYJRYMMR2XMQBIP3|/
ed2k://|file|02_ 传智播客巴巴运动网_ 购物_ 结算_ 送货模块的分析.rar|29204642|0ed13e92c00d2ac622cd911101aef2a3|h=HB6DSYE64EBIJOLHMMLDY34DGBVLRLP3|/
ed2k://|file|01_ 传智播客巴巴运动网_ 整体项目介绍与产品展示模块的分析.rar|61934250|c0242c072bd4def42e1fb2632762cbcc|h=OKQIHCHEB5BIW2IZIU7NNBQ43U4DBS7V|/
巴巴运动网1 thunder://QUFmdHA6Ly9Bbm9ueW1vdXNANTguNTIuMTYxLjM3L7fH1K20tC9KMkVFL1u0q9bHsqW/zV2wzbDN1Mu2r834L1vAy+rYXVu3x9SttLRdW7Sr1seypb/NXbDNsM3Uy7avzfhfMDHV+8zlz+7Ev73pydzT67L6xrfVucq+xKO/6bXEt9bO9i5yYXJaWg== 巴巴运动网2 thunder://QUFmdHA6Ly9Bbm9ueW1vdXNANTguNTIuMTYxLjM3L7fH1K20tC9KMkVFL1u0q9bHsqW/zV2wzbDN1Mu2r834L1vAy+rYXVu3x9SttLRdW7Sr1seypb/NXbDNsM3Uy7avzfhfMDK5us7vX73hy+Nfy8279cSjv+m1xLfWzvYucmFyWlo= 巴巴运动网3 thunder://QUFmdHA6Ly9Bbm9ueW1vdXNANTguNTIuMTYxLjM3L7fH1K20tC9KMkVFL1u0q9bHsqW/zV2wzbDN1Mu2r834L1vAy+rYXVu3x9SttLRdW7Sr1seypb/NXbDNsM3Uy7avzfhfMDPTw7unx7DMqLaotaW53MDt0+u4tr/uxKO/6bXEt9bO9i5yYXJaWg== 巴巴运动网4 thunder://QUFmdHA6Ly9Bbm9ueW1vdXNANTguNTIuMTYxLjM3L7fH1K20tC9KMkVFL1u0q9bHsqW/zV2wzbDN1Mu2r834L1vAy+rYXVu3x9SttLRdW7Sr1seypb/NXbDNsM3Uy7avzfhfMDS2qbWltcS688yoyLfIz7SmwO231s72LnJhclpa 巴巴运动网5 thunder://QUFmdHA6Ly9Bbm9ueW1vdXNANTguNTIuMTYxLjM3L7fH1K20tC9KMkVFL1u0q9bHsqW/zV2wzbDN1Mu2r834L1vAy+rYXVu3x9SttLRdW7Sr1seypb/NXbDNsM3Uy7avzfhfMDW2qbWltcSyxs7xX7LWv+JfxeTLzbSmwO231s72LnJhclpa 巴巴运动网6 thunder://QUFmdHA6Ly9Bbm9ueW1vdXNANTguNTIuMTYxLjM3L7fH1K20tC9KMkVFL1u0q9bHsqW/zV2wzbDN1Mu2r834L1vAy+rYXVu3x9SttLRdW7Sr1seypb/NXbDNsM3Uy7avzfhfMDay+sa3udzA7dPr08O7p8bAwtvEo7/ptcS31s72LnJhclpa 巴巴运动网7 thunder://QUFmdHA6Ly9Bbm9ueW1vdXNANTguNTIuMTYxLjM3L7fH1K20tC9KMkVFL1u0q9bHsqW/zV2wzbDN1Mu2r834L1vAy+rYXVu3x9SttLRdW7Sr1seypb/NXbDNsM3Uy7avzfhfMDfTw7unudzA7cSjv+m31s72LnJhclpa 巴巴运动网8 thunder://QUFmdHA6Ly9Bbm9ueW1vdXNANTguNTIuMTYxLjM3L7fH1K20tC9KMkVFL1u0q9bHsqW/zV2wzbDN1Mu2r834L1vAy+rYXVu3x9SttLRdW7Sr1seypb/NXbDNsM3Uy7avzfhfMDi0+r3wyK9fxeTLzbXYwO3Qxc+i0+u8xrfRxKO/6bXEt9bO9i5yYXJaWg== 巴巴运动网9 thunder://QUFmdHA6Ly9Bbm9ueW1vdXNANTguNTIuMTYxLjM3L7fH1K20tC9KMkVFL1u0q9bHsqW/zV2wzbDN1Mu2r834L1vAy+rYXVu3x9SttLRdW7Sr1seypb/NXbDNsM3Uy7avzfhfMDnN+NW+xrW1wF/N+NW+zbO8xl/E2sjdudzA7cSjv+m1xLfWzvYucmFyWlo= 巴巴运动网10 thunder://QUFmdHA6Ly9Bbm9ueW1vdXNANTguNTIuMTYxLjM3L7fH1K20tC9KMkVFL1u0q9bHsqW/zV2wzbDN1Mu2r834L1vAy+rYXVu3x9SttLRdW7Sr1seypb/NXbDNsM3Uy7avzfhfMTDIqM/eudzA7cSjv+m31s72LnJhclpa 巴巴运动网11 thunder://QUFmdHA6Ly9Bbm9ueW1vdXNANTguNTIuMTYxLjM3L7fH1K20tC9KMkVFL1u0q9bHsqW/zV2wzbDN1Mu2r834L1vAy+rYXVu3x9SttLRdW7Sr1seypb/NXbDNsM3Uy7avzfhfMTHPtc2zvNy5ucnovMa31s72LnJhclpa 巴巴运动网12-20视频 thunder://QUFmdHA6Ly9Bbm9ueW1vdXNANTguNTIuMTYxLjM3L7fH1K20tC9KMkVFL1u0q9bHsqW/zV2wzbDN1Mu2r834L1vAy+rYXVu3x9SttLRdW7Sr1seypb/NXbDNsM3Uy7avzfhfMTItMjAucmFyWlo= 巴巴运动网21-30 thunder://QUFmdHA6Ly9Bbm9ueW1vdXNANTguNTIuMTYxLjM3L7fH1K20tC9KMkVFL1u0q9bHsqW/zV2wzbDN1Mu2r834L1vAy+rYXVu3x9SttLRdW7Sr1seypb/NXbDNsM3Uy7avzfgyMS0zMC5yYXJaWg== 巴巴运动网31-40.rar thunder://QUFmdHA6Ly9Bbm9ueW1vdXNANTguNTIuMTYxLjM3L7fH1K20tC9KMkVFL1u0q9bHsqW/zV2wzbDN1Mu2r834L1vAy+rYXVu3x9SttLRdW7Sr1seypb/NXbDNsM3Uy7avzfgzMS00MC5yYXJaWg== 巴巴运动网41-53 thunder://QUFmdHA6Ly9Bbm9ueW1vdXNANTguNTIuMTYxLjM3L7fH1K20tFxKMkVFXFu0q9bHsqW/zV2wzbDN1Mu2r834XFvAy+rYXVu3x9SttLRdW7Sr1seypb/NXbDNsM3Uy7avzfg0MS01My5yYXJaWg== 巴巴运动网54-79 thunder://QUFmdHA6Ly9Bbm9ueW1vdXNANTguNTIuMTYxLjM3L7fH1K20tC9KMkVFL1u0q9bHsqW/zV2wzbDN1Mu2r834L1vAy+rYXVu3x9SttLRdW7Sr1seypb/NXbDNsM3Uy7avzfhfNTQtNzkucmFyWlo= 巴巴运动网80-89 thunder://QUFmdHA6Ly9Bbm9ueW1vdXNANTguNTIuMTYxLjM3L7fH1K20tC9KMkVFL1u0q9bHsqW/zV2wzbDN1Mu2r834L1vAy+rYXVu3x9SttLRdW7Sr1seypb/NXbDNsM3Uy7avzfg4MC04OS5yYXJaWg== 巴巴运动网90-99 thunder://QUFmdHA6Ly9Bbm9ueW1vdXNANTguNTIuMTYxLjM3L7fH1K20tC9KMkVFL1u0q9bHsqW/zV2wzbDN1Mu2r834L1vAy+rYXVu3x9SttLRdW7Sr1seypb/NXbDNsM3Uy7avzfg5MC05OS5yYXJaWg== 巴巴运动网100-106 thunder://QUFmdHA6Ly9Bbm9ueW1vdXNANTguNTIuMTYxLjM3L7fH1K20tC9KMkVFL1u0q9bHsqW/zV2wzbDN1Mu2r834L1vAy+rYXVu3x9SttLRdW7Sr1seypb/NXbDNsM3Uy7avzfgxMDAtMTA2LnJhclpa
Apache Jakarta Commons DBCP
http://labs.xiaonei.com/apache-mirror/commons/dbcp/binaries/commons-dbcp-1.2.2.zip
http://jakarta.apache.org/commons/dbcp/
Attributes | Runtime API to metadata attributes such as doclet tags. |
BeanUtils | Easy-to-use wrappers around the Java reflection and introspection APIs. |
Betwixt | Services for mapping JavaBeans to XML documents, and vice versa. |
Chain | "Chain of Responsibility" pattern implemention. |
CLI | Command Line arguments parser. |
Codec | General encoding/decoding algorithms (for example phonetic, base64, URL). |
Collections | Extends or augments the Java Collections Framework. |
Configuration | Reading of configuration/preferences files in various formats. |
Daemon | Alternative invocation mechanism for unix-daemon-like java code. |
DBCP | Database connection pooling services. |
DbUtils | JDBC helper library. |
Digester | XML-to-Java-object mapping utility. |
Discovery | Tools for locating resources by mapping service/reference names to resource names. |
EL | Interpreter for the Expression Language defined by the JSP 2.0 specification. |
Library for sending e-mail from Java. | |
Exec | API for dealing with external process execution and environment management in Java. |
FileUpload | File upload capability for your servlets and web applications. |
IO | Collection of I/O utilities. |
JCI | Java Compiler Interface |
Jelly | XML based scripting and processing engine. |
Jexl | Expression language which extends the Expression Language of the JSTL. |
JXPath | Utilities for manipulating Java Beans using the XPath syntax. |
Lang | Provides extra functionality for classes in java.lang. |
Launcher | Cross platform Java application launcher. |
Logging | Wrapper around a variety of logging API implementations. |
Math | Lightweight, self-contained mathematics and statistics components. |
Modeler | Mechanisms to create Model MBeans compatible with JMX specification. |
Net | Collection of network utilities and protocol implementations. |
Pool | Generic object pooling component. |
Primitives | Smaller, faster and easier to work with types supporting Java primitive types. |
Proxy | Library for creating dynamic proxies. |
SCXML | An implementation of the State Chart XML specification aimed at creating and maintaining a Java SCXML engine. It is capable of executing a state machine defined using a SCXML document, and abstracts out the environment interfaces. |
Transaction | Implementations for multi level locks, transactional collections and transactional file access. |
Validator | Framework to define validators and validation rules in an xml file. |
VFS |
http://tgyd2006.iteye.com/blog/441959
WAS6中ibatis解析异常Cause: sun.io.MalformedInputException
要在websphere上部署一个应用,websphere版本6.0
应用中用到了ibatis作为数据访问层,ibatis的xml文件中有一些中文注释,像这样的<!-- 注释 -->,两边都空有两个空格
war包在本机tomcat 5.0上部署和访问都没有错误,但是部署在websphere上就报错,错误信息如下:
- [ 08 - 12 - 27 9 : 09 : 21 : 375 CST] 0000003e SystemErr R org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.abchina.csas.sch.service.impl.SchManagerServiceImpl#2409fc51' defined in ServletContext resource [/WEB-INF/classes/spring/applicationContext-sch.xml]: Can 't resolve reference to bean ' schManagerDAO ' while setting property ' schManagerDAO '; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ' schManagerDAO ' defined in ServletContext resource [/WEB-INF/classes/spring/applicationContext-sch.xml]: Can' t resolve reference to bean 'schSqlMapClient' while setting property 'sqlMapClient' ; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'schSqlMapClient' defined in ServletContext resource [/WEB-INF/classes/spring/applicationContext-resources.xml]: Initialization of bean failed; nested exception is com.ibatis.common.exception.NestedRuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap' . Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- Caused by: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap' . Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'schManagerDAO' defined in ServletContext resource [/WEB-INF/classes/spring/applicationContext-sch.xml]: Can 't resolve reference to bean ' schSqlMapClient ' while setting property ' sqlMapClient '; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ' schSqlMapClient ' defined in ServletContext resource [/WEB-INF/classes/spring/applicationContext-resources.xml]: Initialization of bean failed; nested exception is com.ibatis.common.exception.NestedRuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath ' /sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- Caused by: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap' . Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'schSqlMapClient' defined in ServletContext resource [/WEB-INF/classes/spring/applicationContext-resources.xml]: Initialization of bean failed; nested exception is com.ibatis.common.exception.NestedRuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap' . Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- Caused by: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap' . Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- com.ibatis.common.exception.NestedRuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap' . Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- Caused by: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap' . Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap' . Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- Caused by: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap' . Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException
- Caused by: sun.io.MalformedInputException
- at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:81 )
- at com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:62 )
- at org.springframework.orm.ibatis.SqlMapClientFactoryBean.afterPropertiesSet(SqlMapClientFactoryBean.java:258 )
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1059 )
[08-12-27 9:09:21:375 CST] 0000003e SystemErr R org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.abchina.csas.sch.service.impl.SchManagerServiceImpl#2409fc51' defined in ServletContext resource [/WEB-INF/classes/spring/applicationContext-sch.xml]: Can't resolve reference to bean 'schManagerDAO' while setting property 'schManagerDAO'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'schManagerDAO' defined in ServletContext resource [/WEB-INF/classes/spring/applicationContext-sch.xml]: Can't resolve reference to bean 'schSqlMapClient' while setting property 'sqlMapClient'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'schSqlMapClient' defined in ServletContext resource [/WEB-INF/classes/spring/applicationContext-resources.xml]: Initialization of bean failed; nested exception is com.ibatis.common.exception.NestedRuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException Caused by: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'schManagerDAO' defined in ServletContext resource [/WEB-INF/classes/spring/applicationContext-sch.xml]: Can't resolve reference to bean 'schSqlMapClient' while setting property 'sqlMapClient'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'schSqlMapClient' defined in ServletContext resource [/WEB-INF/classes/spring/applicationContext-resources.xml]: Initialization of bean failed; nested exception is com.ibatis.common.exception.NestedRuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException Caused by: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'schSqlMapClient' defined in ServletContext resource [/WEB-INF/classes/spring/applicationContext-resources.xml]: Initialization of bean failed; nested exception is com.ibatis.common.exception.NestedRuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException Caused by: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException com.ibatis.common.exception.NestedRuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException Caused by: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException Caused by: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: sun.io.MalformedInputException Caused by: sun.io.MalformedInputException at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:81) at com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:62) at org.springframework.orm.ibatis.SqlMapClientFactoryBean.afterPropertiesSet(SqlMapClientFactoryBean.java:258) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1059)
解决办法:
- MalformedInputException造成的原因就是IBM JDK重写了IO通道。原来 1.4 当中就有过类似的问题,原来解决方法是:
- 1 .打开管理控制台,找到并选择运行这个JSP的应用服务器
- 2 .依次选择进程定义,java虚拟机,一般JVM自变量
- 3 .添加-Dibm.stream.nio=true
- 4 .确定,保存
- 5 .重新启动该服务器
MalformedInputException造成的原因就是IBM JDK重写了IO通道。原来1.4当中就有过类似的问题,原来解决方法是: 1.打开管理控制台,找到并选择运行这个JSP的应用服务器 2.依次选择进程定义,java虚拟机,一般JVM自变量 3.添加-Dibm.stream.nio=true 4.确定,保存 5.重新启动该服务器
end