如何从 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

此外,检查 http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc39001.0700/html/prjdbc0700/X32549.htm