我的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),然后以编程方式填写这些访问参数?
答案 0 :(得分:0)
通过容器(例如tomcat)提供数据源(可能还有其他原因),以便应用程序甚至不知道连接和密码 - 因此不能将其丢失。如果不是您需要的,那么从容器中获取数据源不是必需的:您可以从您获得的任何数据创建数据源。
另一种选择 - 但可能更复杂 - 是创建自己的DatasourceFactory,它自己查找并填写所需的参数。这将在tomcat中分配Datasource,您的应用程序可以继续查找提供给它的任何数据源。