原来的项目中包含了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项目,目录结构如图一。
在根目录建立META-INF目录,在目录下编写jboss-service.xml文件
将以上项目以dataInterface.har为名称Deploy到Jboss,启动Jboss后,就可以通过JNDI名为java:/hibernate/SessionFactory的服务来取得SessionFactory。
通过Spring来取得该SessionFactory可以在ApplicationContext.xml中这样写
注意的是:你项目中hibernate3.jar包不能包含在项目的Classpath中,否则会出现hibernate not bound的异常。
先说说我的开发环境
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项目,目录结构如图一。
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
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...
2 < property name ="jndiName" >
3 < value > java:/hibernate/SessionFactory </ value >
4 </ property >
5 </ bean >
注意的是:你项目中hibernate3.jar包不能包含在项目的Classpath中,否则会出现hibernate not bound的异常。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1828626