在本地测试spring openshift应用程序

时间:2013-04-03 17:57:26

标签: java spring tomcat jboss openshift

我在Openshift上运行了一个应用程序。它工作正常,但测试很困难,因为我必须将每个小东西推到openshift并等待所有构建并重新启动以查看更改。

所以我试图找到一种在本地测试应用程序的方法。 另一个人在这里问了同样的事情:How to test an openshift application on local host,但我想知道是否存在更简单的解决方案。

我在这里使用了快速入门项目http://github.com/openshift/spring-eap6-quickstart.git来启动它。所以基本上它是一个使用Hibernate的Spring应用程序。

我想在项目中有两组配置文件(persistence.xml等),一个用于本地Tomcat服务器,一个用于Jboss eap和 根据我要部署到的服务器更改web.xml。这可行吗?看起来很简单,在改变之前我害怕任何惊喜问题 项目

3 个答案:

答案 0 :(得分:3)

这就是我最终的表现。我重命名了原始web.xml文件,类似于web-openshift.xml。在OpenShift中构建项目时,将使用maven openshift配置文件。您可以在pom.xml的<profiles>部分找到它。所以我在我的pom.xml添加了一行:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-war-plugin</artifactId>
         <configuration>
         ....
           <webXml>src/main/webapp/WEB-INF/web-openshift.xml</webXml>  <!--add this-->  

这使得maven-war-plugin在构建战争时使用web-openshift.xml文件作为Web部署描述符。然后我添加了一个web.xml文件,该文件将用于我的本地构建。在这些文件中,您可以使用以下命令配置servlet:

<init-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/jboss-as-spring-mvc-context.xml</param-value>

因此,通过更改我的两个<param-value>文件中的web.xml,我能够以不同的方式配置Spring和Hibernate。

然后我将<provided>中标记为pom.xml的jar添加到我的Tomcat安装的\lib目录中。现在我能够将应用程序部署并运行到OpenShift和Tomcat。

答案 1 :(得分:0)

如果您有快速连接,则可以在本地服务器上运行应用程序,并让persistence.xml指向openshift数据库。要远程访问数据库,您必须使用端口转发(https://www.openshift.com/blogs/getting-started-with-port-forwarding-on-openshift)。您需要设置rhc客户端(https://www.openshift.com/developers/rhc-client-tools-install)并运行rhc port forward客户端来访问数据库。 然后,您可以指向在tomcat服务器上运行eclipse项目,它将(使用persistence.xml我假设您使用的是数据库)连接到数据库。任何代码更改都将被视为任何其他tomcat项目。 大多数情况下不需要单独的web.xml(除非你有一些特定于openhift的配置)。

如果需要,您甚至可以使用Toad等工具连接数据库。

答案 2 :(得分:0)

在我在本地和Openshift上运行的应用程序中,我使用持久性app-root / data文件夹来存储任何特定的OpenShift配置。

在我的web.xml中,我包含如下属性:

<context:property-placeholder location="file:${user.home}/app-root/data/configuration.properties"/>

如果您正在管理敏感的配置属性,如用户名和密码,那么Openshift的env变量可以有很长的路要走。例如,您可以将以下属性放在pom.xml中的openshift配置文件下:

<properties>
  <db.username>${env.OPENSHIFT_POSTGRESQL_DB_USERNAME}</db.username>
  <db.password>${env.OPENSHIFT_POSTGRESQL_DB_PASSWORD}</db.password>                    
  <db.connectionURL>postgresql://${env.OPENSHIFT_POSTGRESQL_DB_HOST}:5432/${env.PGDATABASE}</db.connectionURL>
</properties>

从Openshift环境变量中检索数据库连接属性。然后,您可以使用maven的资源过滤将这些属性放入特定目录中的任何文件,如src / main / resources

我自己的本地数据库连接属性在〜/ .m2 / settings.xml文件的配置文件中管理。

这种方法使我能够:

  • 将所有敏感属性保留在我的公共代码存储库之外
  • 通过启用/禁用maven构建配置文件,只需在openshift和本地部署之间切换。