6

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

所以我试图找到一种在本地测试应用程序的方法。另一个人在这里问了同样的问题:如何在本地主机上测试 openshift 应用程序,但我想知道是否存在更简单的解决方案。

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

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

4

3 回答 3

3

这就是我最终做的事情。我将原始web.xml文件重命名为web-openshift.xml. 在 OpenShift 中构建项目时,openshift会使用 maven 配置文件。您可以<profiles>在 pom.xml 的部分中找到它。所以我在我的添加了一行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 部署描述符。web-openshift.xml然后我添加了一个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。

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

于 2013-04-22T22:36:10.437 回答
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 端口转发客户端来访问数据库。然后,您可以点在您的 tomcat 服务器上运行 eclipse 项目,它将(使用 persistence.xml 我假设您使用数据库)连接到数据库。任何代码更改都将像任何其他 tomcat 项目一样处理。大多数情况下不需要单独的 web.xml(除非您有一些特定于 openshift 的配置)。

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

于 2013-04-03T23:57:17.287 回答
0

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

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

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

如果您要管理敏感的配置属性,例如用户名和密码,Openshift 的环境变量可以发挥很大作用。例如,您可以将以下属性放在 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 和本地部署之间切换。
于 2014-05-11T19:31:29.443 回答