立即部署生产和UAT Web服务

时间:2014-08-13 12:52:46

标签: web-services java-ee testing jboss wildfly

我有一个在http://localhost:8080/ws上的Wildfly上运行的Web服务,我使用wildfly-maven-plugin从maven部署。

我想部署相同的Web服务,但指向测试数据源,http://localhost:8080/ws_test,因此我可以将其用作UAT环境并在不影响生产数据库的情况下运行测试。

有一种简单的方法吗?


更多信息:

  • 根(ws)在jboss-web.xml中配置:

    <jboss-web>
      <context-root>/ws</context-root>
    </jboss-web>
    
  • 我有这个课程:

    @ApplicationPath("/")
    public class MyApplication extends Application { }
    
  • 我的生产数据源是“硬编码”:

    @Resource(lookup = "java:jboss/jdbc/prod")
    private javax.sql.DataSource ds;
    
  • maven pom(提取物):

    <plugin>
      <groupId>org.wildfly.plugins</groupId>
      <artifactId>wildfly-maven-plugin</artifactId>
      <version>1.0.2.Final</version>
      <executions>
        <execution>
          <phase>install</phase>
          <goals>
            <goal>deploy</goal>
          </goals>
          <configuration>
            <hostname>localhost</hostname>
            <username>user</username>
            <password>pass</password>
          </configuration>
        </execution>
      </executions>
    </plugin>
    

1 个答案:

答案 0 :(得分:0)

我最终做的是:

  • 添加与测试数据库对应的第二个数据源:

    @Resource(lookup = "java:jboss/jdbc/test")
    private javax.sql.DataSource dsTest;
    
  • 让我的控制器知道可以从两个URI调用它:

    @Path("{a:(test/)?}some_page")
    public class MyController { ... }
    
  • 将呼叫指向正确的DB:

    private @Context UriInfo uriInfo;
    
    DataSource getDatasource() {
      LOG.info("in mode: {}", uriInfo.getPath());
      return uriInfo.getPath().startsWith("/test") ? dsTest : ds;
    }