如何从tomcat的context.xml传递加密相关的属性,用于java中的jdbc连接?

时间:2015-11-16 12:22:33

标签: java tomcat jdbc sybase bouncycastle

我们有一个用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" 

weblogic服务器用于PROD环境。在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。那么在eclipse和tomcat中进行连接时,如何通过context.xml传递上述三个属性?

目前,在“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)

请告知。

1 个答案:

答案 0 :(得分:1)

使用以下连接字符串:

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