原来的项目中包含了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文件
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的异常。
Luke Skywalker in BlogJava
posted on 2007-09-18 14:39
行者吴江 阅读(2029)
评论(1) 编辑 收藏