Hibernate 3.1+Tomcat 5.5.X(配置JNDI篇)
热门软件下载:
正文:
【51cto.com独家特稿】一、引言
在tomcat从其5.0版本升级到5.5.x版本之后,它的配置发生了很多变化。这些改变明显地影响到tomcat jndi的建立,这反过来又影响到hibernate—假定你想在自己的hibernate安装中利用tomcat jndi所提供的方便的datasource配置的话。
另外,在hibernate从其3.0版本升级到3.1版本的过程中,在有关获取线程安全的hibernate会话方面也进行了极大的简化。
从hibernate的角度来观察,tomcat是一种混合的环境。tomcat提供一个jndi和datasource—它们都不是一个独立的应用程序。这个datasource工具为实现应用程序服务器的可移植性提供了方便。但是,就象一个独立的环境一样,tomcat并没有提供事务管理器;因此,你的代码中必须使用hibernate事务管理器。
到目前为止,我们很难找到有关这两个新版本框架联用的完整的描述—在因特网,甚至在hibernate.org站点(http://www.hibernate.org)上都未曾发现。而在其它一些地方找到的相关信息都已过时。原先的hibernate 3.0参考文档中提供了有关hibernate/tomcat集成(基于tomcat 4.1)的很有用的一章,但在当前hibernate 3.1的参考文档中已经删除了原有的这一章。因此,我们十分希望,本系列文章(三篇)会对你的工程开发中在新版本的hibernate和tomcat联用方面助一臂之力。
二、context.xml文件
在tomcat的早期版本中,你必须经由服务器范围的配置文件—server.xml来配置tomcat jndi。为此,你需要在这个文件内包括多个
下面图1中的屏幕快照展示了在你的tomcat目录层次下的context.xml文件的位置:
在你的应用程序的context.xml文件中,相应于每一个datasource你都应该包括一个
|
上面的
顺便说一下,本系列的几篇中都可能会使用mysql作为数据存储方式,这正如你在上面的
不仅hibernate能够使用tomcat jndi,你的原始jdbc也能够存取jndi,其方式与你从一个应用程序服务器的一个jndi中存取一个datasource的方式完全一致。下面代码片断来自于一个servlet中,它从上面的jndi
initialcontext initctx = new initialcontext(); |
在本篇中,我们提供了一个完整的servlet源码实现。我们的目的是为了展示hibernate 3.1和tomcat 5.5函数是如何协作的(后面两篇中的示例也是这一目的)。而且,这些代码是很容易理解的—不同于你将正式发布的具有商业质量的代码—它们会包括完整的异常处理以及其它实践(例如使用mvc模式,这与本文中我们的目的毫无关系)。(你当然会使用一个jsp而不是一个servlet作为你的视图组件。但是,即使添加少部分的mvc模式内容也会干扰我们所讨论的主要内容—hibernate和tomcat的联合问题。)
在此,我们列出本文第一个完整的servlet示例源码:
package tomcatjndi; out.println(" "); try { initialcontext initctx = new initialcontext(); datasource ds = (datasource)initctx.lookup("java:comp/env/jdbc/sampdb"); connection conn = ds.getconnection(); out.println(" "); out.println("connection from datasource successfully opened! "); statement stmt = conn.createstatement(); resultset rs = stmt.executequery("select * from car"); while (rs.next() ) { string onerow = "car manufacturer: " + rs.getstring("manufacturer") + ," model: " + rs.getstring("model") + ," year: " + rs.getstring("year") + " "; out.println(onerow); } rs.close(); stmt.close(); conn.close(); initctx.close(); out.println(" "); out.println("connection from datasource successfully closed! "); } catch(exception e) { out.println(" "); out.println("connection from datasource not successfully opened! "); out.println(e.getmessage() + " "); } out.println(" "); out.println(""); out.flush(); out.close(); } public void init() throws servletexception { //在此加入你的代码 } } //类retrieval结束 |
注意,就象任何一个正常应用程序服务器一样,tomcat实际上也自动提供了数据库连接池支持。在tomcat情况下,连接池支持是由dbcp组件提供的。在前面展示的
三、小结
在本篇中,我们集中讨论了tomcat 5.5.x jndi的配置问题。上面展示的context.xml文件,不需作任何修改即可支持hibernate。事实上,为了从hibernate中使用tomcat jndi,这样的一个文件也是必需的。
(
- · 平面设计软件都有哪些?
- · 施工组织设计
- · 课程设计心得
- · 数据结构课程设计——猴子选大王问题
- · photoshop9.0
- · photoshop软件
- · 哪有photoshop教程下载
- · photoshop笔刷
- · photoshop作品
- · 为什么我安装外挂滤镜 再启动photoshop8.01就会出现找不到文件
- · 服务器芯片上演“赤壁之战”——浪潮是否会联合英特尔抗击AMD?
- · 基于Hibernate校验器组件实现Web开发中的校验逻辑(1)
- · 通过日志恢复MS SQL数据案例
- · 基于Spring+Hibernate+Eclipse进行敏捷Java开发(1)
- · CA精简什么?——CA EXPO现场亲历
- · Wyse推首个企业桌面虚拟化运算参考平台
- · 浪潮签约英特尔 成为国内首家PSR战略伙伴
- · Oracle同JDE和Peoplesoft用户蜜月结束
- · 开源对象数据库db4o 6.0版本发布
- · Sun执行副总裁谈企业策略-开源无偿 服务有价
- · Windows Vista 能否引发安全革命?(1)
- · SUN公司CEO驳斥“开源软件不安全”论
- · 季度定期补丁 Oracle修补101个安全漏洞
- · Google升级图书搜索 体验酷似AcrobatReader
- · 中国首家自主研发的WIKI系统宣布开源
- · 甲骨文、IBM、微软列季度数据库市场前三
- · 名企进名校精选IT人 07年毕业生就业看好
- · 艾瑞发布《2006网络求职者研究报告》(1)
- · 职业教育专家提醒:大一开始就培养职业观念
- · 互联网企业融资新途径出现
- · IBM吸纳280名应届毕业生 周伟焜颁发聘用证书
- · 女性对IT业敬而远之 厌倦IT业工作强度(1)
- · 人才消费价值回归 学历虚高将会远离职场
- · 2006年最具影响力IT高管25强 联想CEO第14
- · 前程无忧:IT类职位需求回升 排名第二
- · 国内外IT巨头相继招兵买马 测试人才位置突出
- · 销售收入强劲 三季度北电网络亏损进一步下降
- · Google魅力不复存在?求职者已不再痴迷
- · Microsoft Exchange Server应用案例
- · RedHat Linux9.0安装实例(1)
- · 网络不通TTL跳数超时是谁惹的祸?
- · 专家:十大值得关注的IT安全趋势
- · 企业管理是一种艺术也是一种科学
- · 黑客攻击新手段 重装系统也没用
- · 基于UniJa平台的NetBeans使用(图)
- · Linux补丁管理
- · 如何给solaris打补丁
- · 让系统通过域用户自动打补丁
- · WUS服务-集中管理系统补丁(1)
- · 全面揭露SP2补丁的各种弊病
- · 轻松撤销掉你的Windows 补丁错误
- · Windows Update解决小型企业补丁管理问题
- · 制作Win XP系统补丁自安装光盘(图)
- · 专访Rational“舵手”分享SOAG策略(1)
- · Window 2000/XP在局域网内批量升级
- · BT下载占用带宽大 用路由限制BT下载
- · 教你几招判断Windows是否被流氓侵入
- · 网络管理:到底能够管到什么地步?(1)
- · 平均才显公平 网络负载平衡轻松用(1)
- · 拒绝同质化 无线路由进入特色时代(1)

