如何从 tomcat 的 context.xml 为 java 中的 jdbc 连接传递加密相关属性?
How to pass encryption related properties from tomcat's context.xml for jdbc connection in java?
我们在 struts2 开发了一个应用程序。使用的应用服务器是Weblogic。我们正在使用 Sybase ASE 数据库。我们正在使用纯 JDBC 连接到数据库。
最近我们在 weblogic 服务器中打开了加密。所以我们添加了 3 个属性
key="ENCRYPT_PASSWORD" value="true"
key="JCE_PROVIDER_CLASS" value="org.bouncycastle.jce.provider.BouncyCastleProvider"
key="RETRY_WITH_NO_ENCRYPTION" value="true"
在PROD环境下使用weblogic服务器。在 weblogic 中,它运行良好。但是我们使用 tomcat 7.0 进行本地开发。在 tomcat 中,我们使用带有以下标签的 context.xml。
<Resource name="CONN.DS" auth="Container"
type="javax.sql.DataSource"
username="abc"
password="dfg"
driverClassName="com.sybase.jdbc4.jdbc.SybDriver"
url="jdbc:sybase:Tds:xyz:1234/DbName"
maxActive="10" maxIdle="4"/>
要在 java 中建立连接,我们使用以下代码
javax.sql.Datasource ds = null;
try{
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
ds = (DataSource) envContext.lookup("CONN.DS");
}catch(Exception e){
e.printStackTrace();
}
return ds.getConnection();
实际上在 weblogic 中,通过添加以上 3 个属性,它工作正常。但是在 tomcat 中,我们使用 context.xml。那么我们如何通过 context.xml 传递以上三个属性,同时在 eclipse 和 tomcat 中建立连接?
目前,在“ds.getConnection()
”行,出现错误:
'An exception occurred: org.apache.tomcat.dbcp.dbcp.SQLNestedException'
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
请指教
使用以下连接字符串:
jdbc:sybase:Tds:xyz:1234/DbName?ENCRYPT_PASSWORD=true&JCE_PROVIDER_CLASS=org.bouncycastle.jce.provider.BouncyCastleProvider&RETRY_WITH_NO_ENCRYPTION=true
我们在 struts2 开发了一个应用程序。使用的应用服务器是Weblogic。我们正在使用 Sybase ASE 数据库。我们正在使用纯 JDBC 连接到数据库。
最近我们在 weblogic 服务器中打开了加密。所以我们添加了 3 个属性
key="ENCRYPT_PASSWORD" value="true"
key="JCE_PROVIDER_CLASS" value="org.bouncycastle.jce.provider.BouncyCastleProvider"
key="RETRY_WITH_NO_ENCRYPTION" value="true"
在PROD环境下使用weblogic服务器。在 weblogic 中,它运行良好。但是我们使用 tomcat 7.0 进行本地开发。在 tomcat 中,我们使用带有以下标签的 context.xml。
<Resource name="CONN.DS" auth="Container"
type="javax.sql.DataSource"
username="abc"
password="dfg"
driverClassName="com.sybase.jdbc4.jdbc.SybDriver"
url="jdbc:sybase:Tds:xyz:1234/DbName"
maxActive="10" maxIdle="4"/>
要在 java 中建立连接,我们使用以下代码
javax.sql.Datasource ds = null;
try{
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
ds = (DataSource) envContext.lookup("CONN.DS");
}catch(Exception e){
e.printStackTrace();
}
return ds.getConnection();
实际上在 weblogic 中,通过添加以上 3 个属性,它工作正常。但是在 tomcat 中,我们使用 context.xml。那么我们如何通过 context.xml 传递以上三个属性,同时在 eclipse 和 tomcat 中建立连接?
目前,在“ds.getConnection()
”行,出现错误:
'An exception occurred: org.apache.tomcat.dbcp.dbcp.SQLNestedException'
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
请指教
使用以下连接字符串:
jdbc:sybase:Tds:xyz:1234/DbName?ENCRYPT_PASSWORD=true&JCE_PROVIDER_CLASS=org.bouncycastle.jce.provider.BouncyCastleProvider&RETRY_WITH_NO_ENCRYPTION=true