我有一个在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>
答案 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;
}