這仍然是一個懸而未決的問題。希望有一天我會得到答案。感謝所有回覆的人。如何在Hibernate XML配置文件中使用屬性表示
我的問題很簡單。如何在Hibernate XML配置文件中使用$ {catalina.home}或$ {catalina.base}屬性?
這裏是我的示例配置文件:
<hibernate-configuration>
<session-factory>
<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">false</property>
<property name="cache.use_second_level_cache">false</property>
<mapping jar="/opt/tomcat/apache-tomcat-5.5.29/webapps/MyApp/WEB-INF/lib/MyHibernateMaps.jar" />
</session-factory>
我當前的配置文件是好的。但我想至少抽象出tomcat的位置。如果不使用這個的:
<mapping jar="/opt/tomcat/apache-tomcat-5.5.29/webapps/MyApp/WEB-INF/lib/MyHibernateMaps.jar" />
我想將其轉換成這樣:
<mapping jar="${catalina.base}/webapps/MyApp/WEB-INF/lib/MyHibernateMaps.jar" />
我想直接這樣做,但我得到了一個錯誤的jar文件丟失或無法找到。我谷歌搜索,但無濟於事。
爲什麼我需要這樣的設置是因爲我在三臺機器上部署我的應用程序。一個是生產。另一個是發展。最後一個是localhost(在家)。這三臺機器在三個不同的位置安裝了tomcat。
因此,每次我部署我的應用程序,我必須修改線/opt/tomcat/apache-tomcat-5.5.29/以匹配機器上的tomcat位置。
任何想法?
此外,它是可取的使用catalina.home或catalina.base?我只在本地主機上使用一個tomcat。但是在開發和生產上,我們有兩個雄貓(當然在兩個不同的地方)。
感謝
順便說一句,這Hibernate配置文件使用Spring的XML配置文件中:
<bean id="appSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="appDataSource"/>
</property>
<property name="configLocation">
<value>${hibernate.config}</value>
</property>
</bean>
哦,真的。我從來沒想過那個。謝謝回覆。我一定會嘗試一下,然後回到這裏。 – chris 2010-08-12 23:25:46
我嘗試了一下本地機器和開發機器的建議。但是,它沒有工作。我得到了以下錯誤: 在ServletContext資源[/WEB-INF/appConfig.xml]中定義名稱爲'appSessionFactory'的Bean時創建錯誤:調用init方法失敗;嵌套的異常是org.hibernate.InvalidMappingException:無法讀取從jar中映射文檔:MyApp.jar – chris 2010-08-12 23:56:13
我忘記了注意到hibernate配置文件是在Spring XML配置文件中聲明的SessionFactory屬性。 – chris 2010-08-12 23:57:21