我在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
。这可行吗?看起来很简单,在改变之前我害怕任何惊喜问题
项目
答案 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文件的配置文件中管理。
这种方法使我能够: