原來的項目中包含了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
行者吳江 閱讀(2036)
評論(1) 編輯 收藏