动态修改web.xml和server.xml

时间:2016-01-25 11:54:51

标签: tomcat jdbc jboss

我的Web应用程序使用 JDBC 数据源。 它在 web.xml 中定义为 resource-ref

 <resource-ref>
  <res-ref-name>jdbc/dss</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
  <res-sharing-scope>Shareable</res-sharing-scope>
 </resource-ref>

并且 server.xml 中的进一步配置:

<Context debug="0" docBase="dss" path="/dss" reloadable="true"><Resource auth="Container" defaultTransactionIsolation="READ_COMMITTED" driverClassName="com.mysql.jdbc.Driver"
         maxActive="10" maxIdle="5" maxWait="5000" name="jdbc/dss" password="admin" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/dss45" username="root" />
    </Context>

问题是我只能动态获取数据源访问参数(我使用的是基于OpenShift的Paas)。

有没有办法可以无错误地启动 Tomcat(7.x),然后以编程方式填写这些访问参数?

1 个答案:

答案 0 :(得分:0)

通过容器(例如tomcat)提供数据源(可能还有其他原因),以便应用程序甚至不知道连接和密码 - 因此不能将其丢失。如果不是您需要的,那么从容器中获取数据源不是必需的:您可以从您获得的任何数据创建数据源。

另一种选择 - 但可能更复杂 - 是创建自己的DatasourceFactory,它自己查找并填写所需的参数。这将在tomcat中分配Datasource,您的应用程序可以继续查找提供给它的任何数据源。