整合Jboss和Hibernate

原来的项目中包含了Hibernate的应用,最近,另外一个项目也要引用这个Hibernate的应用,因此决定将Hibernate应用独立出来,作为一个MBean部署到JBoss中,不同的项目通过JNDI来访问。

先说说我的开发环境
Eclipse3.2+MyEclipse5.0+Spring2.0+Hibernate3.0+JBoss4.0.5GA

首先在Google上搜索一番,知道了要在JBoss下部署Hibernate的应用,需要一个Hibernate的部署器。我在我的Jboss的Deploy目录中没有找到这个部署器(不知道为什么没有 ),没办法,只好到Google上搜索一番,终于在下载到了这个加载器 Hibernate3-deployer(点击下载),把它部署到JBoss下的Deploy目录中。接着,在Eclipse中建立一个Hibernate的Java项目,目录结构如图一。
整合Jboss和Hibernate_第1张图片
在根目录建立META-INF目录,在目录下编写jboss-service.xml文件
 1  <? xml version="1.0" encoding="UTF-8" ?>   
 2  < server >   
 3        < mbean
 4            code ="org.jboss.hibernate.jmx.Hibernate"
 5           name ="jboss.har:service=Hibernate" >    
 6          < depends > jboss.jca:service=RARDeployer </ depends >
 7          < depends >
 8            jboss.jca:name=TestDS,service=DataSourceBinding
 9          </ depends >         
10           < attribute  name ="DatasourceName" >
11               java:/TestDS
12           </ attribute >    
13            < attribute  name ="Dialect" >
14               org.hibernate.dialect.Oracle9Dialect
15           </ attribute >  
16           < attribute  name ="SessionFactoryName" >
17               java:/hibernate/SessionFactory
18           </ attribute >  
19           < attribute  name ="ShowSqlEnabled" >
20                 false
21          </ attribute >   
22          < attribute  name ="ScanForMappingsEnabled" >
23                  true
24          </ attribute >  
25          < attribute  name ="CacheProviderClass" >
26                  org.hibernate.cache.HashtableCacheProvider
27          </ attribute >  
28        </ mbean >    
29  </ server >
30 

将以上项目以dataInterface.har为名称Deploy到Jboss,启动Jboss后,就可以通过JNDI名为java:/hibernate/SessionFactory的服务来取得SessionFactory。
通过Spring来取得该SessionFactory可以在ApplicationContext.xml中这样写
1  < bean  id ="sessionFactory"  class ="org.springframework.jndi.JndiObjectFactoryBean" >
2       < property  name ="jndiName" >            
3        <
value > java:/hibernate/SessionFactory </ value >
4       </ property >
5  </ bean >
其他的就和你平常写法一样了。o(∩_∩)o...

注意的是:你项目中hibernate3.jar包不能包含在项目的Classpath中,否则会出现hibernate not bound的异常。
 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1828626


 

你可能感兴趣的:(java,eclipse,Hibernate,MyEclipse,jboss,service)