尝试使用 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对配置文件加密,加密数据库连接