我在项目中使用 Apache Tomcat JDBC 连接池库并相应地配置了 context.xml 文件。我的应用程序实例需要在多个位置运行,但应用程序上的负载会有所不同,因此我想根据运行时特定实例的客户大小修改 maxActive 大小和其他一些属性。
<Context path="/abc"
docBase="abc"
debug="5"
reloadable="false"
crossContext="true">
<Resource name="jdbc/abc"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
driverClassName="xxxxx"
url="xxxxxxx"
username="xxxxx" password="xxxxxx"
maxActive="20"
initialSize="0"
...
/>
</Context>
Run Code Online (Sandbox Code Playgroud) 我正在使用 kubernetes 进行 Web 应用程序部署。
containers:
- name: myapp
image: tomcat8-jre8:latest
imagePullPolicy: Always
env:
- name: DATABASE_HOST
valueFrom:
secretKeyRef:
name: my-secret
key: external.database.host
- name: DATABASE_USER
valueFrom:
secretKeyRef:
name: my-secret
key: external.database.user
- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: my-secret
key: external.database.password
Run Code Online (Sandbox Code Playgroud)
我还将 tomcat JNDI 与自定义 server.xml 和 catalina.properties 一起使用
<Resource factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
name="jdbc/mysource"
auth="Container"
type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://******" # secret url
username="${database.user}"
password="${database.password}" />
Run Code Online (Sandbox Code Playgroud)
我尝试将新属性放入 catalina.properties
### catalina specific configuration
database.user = ${DATABASE_USER}
database.password = ${DATABASE_PASSWORD}
Run Code Online (Sandbox Code Playgroud)
server.xml 可以很好地读取属性,但无法解析环境变量 ${DATABASE_USER} 和 ${DATABASE_PASSWORD}
server.xml …