尝试使用 jasypt 加密值连接 oracle 数据库时出错

Posted

技术标签:

【中文标题】尝试使用 jasypt 加密值连接 oracle 数据库时出错【英文标题】:Error when trying to connect oracle database with jasypt encrypted values 【发布时间】:2014-08-04 14:16:15 【问题描述】:

我正在尝试使用 camel-jasypt 生成的加密密码和用户名来连接 oracle 数据库,方法是将生成的值保存在 .properties 文件中。但是,不幸的是,我遇到了用户名和密码不正确等错误。我正在提供我的程序的骆驼上下文。

    <bean id="properties" class="org.apache.camel.component.properties.PropertiesComponent"/>
        <property name="location" value="classpath:DB.properties"/>
        <property name="propertiesParser" ref="jasypt"/>
    </bean>
       <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:xe"/>
        <property name="username" value="$db.username"/>
        <property name="password" value="$db.password"/>
         </bean>
       </beans>

我将我的所有用户名、密码、oracle jdbc 驱动程序和 url 用于连接到 .properties 文件中的数据库。我在 Apache Camel 软件发行版中使用 camel-jasypt jar 加密了我的用户名和密码,我有一个疑问,我可以同时加密用户名和密码,也可以只加密一个用户名或密码,但我尝试同时加密。我的属性文件是

            db.driverClassName=oracle.jdbc.driver.OracleDriver
            db.url=jdbc:oracle:thin:@127.0.0.1:1521:xe
            db.username=ENC(/leiK3jiyKe1y87A8i743g==)
            db.password=ENC(3bwhRqBKu1Pye4Z+gBz9mm9q5Nxgah0n)

当我尝试使用 .properties 文件中的加密值连接 oracle 数据库时,我遇到以下错误

[ERROR] Error occurred while running main from: org.apache.camel.spring.Main
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'properties' defined in file [C:\Users\761285\workspace\camel-jasyp\target\classes\META-INF\spring\camelContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'camel-1': Invocation of init method failed; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.apache.commons.dbcp.BasicDataSource] for bean with name 'dataSource' defined in file [C:\Users\rahul\workspace\camel-jasyp\target\classes\META-INF\spring\camelContext.xml]; nested exception is java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:529)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296)
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628)
(ClassPathXmlApplicationContext.java:93)

【问题讨论】:

您的 .properties 文件的名称是什么? 【参考方案1】:

基于异常:

nested exception is 
  org.springframework.beans.factory.CannotLoadBeanClassException: 
    Cannot find class [org.apache.commons.dbcp.BasicDataSource] for bean 
    with name 'dataSource' 

您的应用程序找不到此类,您必须将 apache-common.jar 添加到您的 pom 或类路径或存储库的任何位置。

【讨论】:

以上是关于尝试使用 jasypt 加密值连接 oracle 数据库时出错的主要内容,如果未能解决你的问题,请参考以下文章

springboot使用jasypt对配置文件加密,加密数据库连接

springboot使用jasypt对配置文件加密,加密数据库连接

使用Jasypt对SpringBoot配置文件加密

使用Jasypt对SpringBoot配置文件加密

使用Jasypt对SpringBoot配置文件加密

jasypt 集成springspring boot 加密