原來的項(xiàng)目中包含了Hibernate的應(yīng)用,最近,另外一個(gè)項(xiàng)目也要引用這個(gè)Hibernate的應(yīng)用,因此決定將Hibernate應(yīng)用獨(dú)立出來,作為一個(gè)MBean部署到JBoss中,不同的項(xiàng)目通過JNDI來訪問。
先說說我的開發(fā)環(huán)境
Eclipse3.2+MyEclipse5.0+Spring2.0+Hibernate3.0+JBoss4.0.5GA
首先在Google上搜索一番,知道了要在JBoss下部署Hibernate的應(yīng)用,需要一個(gè)Hibernate的部署器。我在我的Jboss的Deploy目錄中沒有找到這個(gè)部署器(不知道為什么沒有

),沒辦法,只好到Google上搜索一番,終于在下載到了這個(gè)加載器
Hibernate3-deployer(點(diǎn)擊下載),把它部署到JBoss下的Deploy目錄中。接著,在Eclipse中建立一個(gè)Hibernate的Java項(xiàng)目,目錄結(jié)構(gòu)如圖一。
在根目錄建立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
將以上項(xiàng)目以dataInterface.har為名稱Deploy到Jboss,啟動(dòng)Jboss后,就可以通過JNDI名為java:/hibernate/SessionFactory的服務(wù)來取得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...
注意的是:你項(xiàng)目中hibernate3.jar包不能包含在項(xiàng)目的Classpath中,否則會(huì)出現(xiàn)hibernate not bound的異常。
Luke Skywalker in BlogJava


posted on 2007-09-18 14:39
行者吳江 閱讀(2035)
評(píng)論(1) 編輯 收藏