2009-06-26 16 views
0

我在這裏開發了一個非常怪異的Java應用程序。到目前爲止,它只被部署在我本地安裝的Tomcat/MySQL設置上。將基於Hibernate的J2EE應用程序部署到遠程服務器的正確方法

爲了完整起見,該應用程序是一個使用Spring編寫的在線遊戲服務器,當前位於後端的MySQL使用Hibernate。

現在,我可以輕鬆打包WAR,並在遠程服務器上獲取它。問題是數據庫。現在,它是通過使用Hibernate(特別是HBM2DDL Ant任務)生成模式的ANT腳本生成的,然後使用靜態SQL和從其他數據讀取的一對基於ant的解析器組合來填充數據庫(XML大多)。在那之後,我有一個完全創建的數據庫填充遊戲服務器「啓動」數據集。

這個問題在Java中有點綠色我不知道部署這個的正確方法是什麼。

我應該:

  1. 導出SQL從我的本地MySQL和手動導入新的服務器上?好惡。
  2. 讓ANT腳本少一點(它現在有很多硬編碼目錄)並在服務器上運行它?
  3. 我不知道的優雅選項?

其他的複雜情況是,WAR將會運行到不同的服務器上,而不是MySQL數據庫。是否有全面解決這些類型部署問題的Java書籍或Web資源?

回答

1

我認爲有3個選項:

  1. 更改Ant腳本到目標數據庫的遠程機器上。你可以在你的本地機器上運行它,所以你不必改變它:它會在相同的地方找到必要的文件。這種方法的主要缺點是通過網絡(互聯網)執行大量SQL可能會很慢)。
  2. 將架構從本地(構建)數據庫導出到新數據庫。如果你的數據庫支持一些二進制格式,它不一定是SQL。通常這是最快和最不容易出錯的方式,儘管如果遠程數據庫的配置與本地設置(例如字符集)略有不同,可能會有一些非常微妙的問題。
  3. 在服務器上運行ANT腳本。最大的問題是你的數據庫服務器必須擁有所有必要的工具(比如ant和java),而且還需要所有的源文件(hibernate映射),它通常是數據庫服務器所不需要的。
+0

感謝您的回答。看起來2號是3種解決方案中最優雅的。 – 2009-06-27 22:56:10

0

您可以使用Hibernate hbm2ddl任務爲您創建模式。但它不會填充任何參考數據。我經常使用JUnit任務和配置來運行一次,然後使用它。

1

我已經做了類似的創建ant目標來將ant腳本推送到遠程機器,該ant腳本具有生成數據庫的目標。由於您已經有了ant目標來生成模式並初始化數據庫,所以您可以將現有的ant腳本推送到遠程計算機(假定遠程計算機具有相同的一組工具)。

可以使用SCP螞蟻任務做遠程複製,並sshexec做的螞蟻和腳本的遠程調用。

相關問題