将基于Hibernate的J2EE应用程序部署到远程服务器的正确方法

时间:2009-06-26 22:55:39

标签: java hibernate spring deployment

我在这里开发了一个非常可怕的Java应用程序。截至目前,它只在我本地安装的Tomcat / MySQL设置上部署。

为了完整起见,该应用程序是一个使用Spring编写的在线游戏服务器,Hibernate与MySQL目前位于后端。

现在,我可以轻松打包WAR并在远程服务器上获取它。问题是数据库。现在,它是使用ANT脚本生成的,该脚本使用Hibernate(特别是HBM2DDL Ant任务)生成模式,然后使用静态SQL和一些从其他数据读取的基于ant的解析器(XML)填充数据库。大多)。之后,我有一个完全创建的数据库,其中填充了游戏服务器“启动”数据集。

Java中的问题有点绿色我不知道正确的部署方式是什么。

我应该:

  1. 从我的本地MySQL导出SQL并在新服务器上手动导入它? EWW。
  2. 让ANT脚本不那么生气(它现在有很多硬编码目录)并在服务器上运行它?
  3. 我不知道的优雅选择?
  4. 另一个复杂因素是WAR将转到不同于MySQL数据库的服务器。是否有全面解决这些部署问题的Java书籍或Web资源?

3 个答案:

答案 0 :(得分:1)

我通过创建ant目标来将ant脚本推送到远程计算机,这个ant脚本具有生成DB的目标,从而做了类似的事情。由于您已经有ant目标来生成模式并初始化数据库,因此您可以将现有的ant脚本推送到远程计算机(假设远程计算机具有相同的工具集)。

您可以使用 scp ant任务执行远程复制,使用 sshexec 执行ant和脚本的远程调用。

答案 1 :(得分:1)

我认为有3种选择:

  1. 更改ANT脚本以定位远程计算机上的数据库。您可以在本地计算机上运行它,因此您无需更改它:它将在相同的位置找到所需的文件。这种方法的主要缺点是通过网络(Internet)执行大量SQL可能会很慢。
  2. 将架构从本地(构建)数据库导出到新数据库。如果您的数据库支持某种二进制格式,则不必是SQL。通常这是最快且最不容易出错的方法,但如果远程数据库的配置与本地设置(例如字符集)略有不同,可能会出现一些非常微妙的问题。
  3. 在您的服务器上运行ANT脚本。最大的问题是你的数据库服务器必须拥有所有必需的工具(比如ant和java),还需要所有源文件(hibernate映射),它通常(作为数据库服务器)不需要。

答案 2 :(得分:0)

您可以使用Hibernate hbm2ddl任务为您创建架构。但是,它不会填充任何参考数据。我经常使用JUnit任务和配置运行一次,然后继续使用它。