我使用的是Spring3.2和Hibernate4.2。我有两个bean:datasource(c3p0)和带有属性文件(application.properties)的SessionFactoryBean(LocalSessionFactoryBean)。
properties -> {user=******, password=******}
'properties'属性显示
properties -> {java.runtime.name=xxx, line.separator=xxx, maven.home=xxx, ...}
和所有环境变量,但没有关于用户或密码的内容。并且它拒绝连接到数据库:
java.sql.SQLException: ORA-01017: invalid username/password; logon denied
但是在application.properties中,我会添加:
hibernate.connection.username=xxx
hibernate.connection.password=xxx
c3p0再次打印所有环境属性,但没有用户和密码,但连接成功。好吧:池可以推送到会话工厂,但是凭据必须在数据源中
那是怎么回事?我希望拥有带有凭据和池配置的数据源,以及带有hibernate配置的hibernate会话工厂。
万一有关系。下面是我的配置:
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="xxx.model" />
<property name="hibernateProperties">
<util:properties location="classpath:/spring/application.properties" />
</property>
</bean>
xml DS:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
<property name="user" value="xxx"/>
<property name="password" value="xxx"/>
<property name="jdbcUrl" value="xxx"/>
</bean>
和java DS:
@Bean
public DataSource dataSource() throws PropertyVetoException {
ComboPooledDataSource ds = new ComboPooledDataSource();
ds.setDriverClass("oracle.jdbc.driver.OracleDriver");
ds.setUser("xxx");
ds.setPassword("xxx");
ds.setJdbcUrl("xxx");
return ds;
}
所以这很奇怪。
我的猜测是这样的。C3P0的DriverManagerDataSource有一个名为“properties”的属性,类型为java.util.properties。
在您的中间件领域中的某些东西被配置为自动将这样的属性设置为System.Properties。我觉得这是一件坏事,但似乎就是这样。最好的办法就是关闭这种行为。这不是一个c3p0的东西,但除此之外,我不确定你应该去哪里看。
建议您尝试在XML中显式设置properties属性[yuk]。也许这会防止它默认为系统属性。有关如何设置Properties类型的属性,请参见此处。properties属性应该包含一个名为“user”的键和一个名为“password”的键(不需要在这些属性之外设置user和password)。类似于:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
<property name="jdbcUrl" value="xxx"/>
<property name ="properties">
<props>
<prop key="user">xxx</prop>
<prop key="paswords">xxx</prop>
</props>
</property>
</bean>
祝你好运!
问题内容: 好吧,我正在尝试使用JPA + Hibernate + Spring首次配置C3P0。在persistence.xml中,我有: 但是,当我尝试初始化tomcat时,出现以下错误: 编辑1: 这是我的applicationContext.xml,如何在其中配置C3P0呢? 问题答案: 您的配置有缺陷。您正在应用程序上下文中进行配置。因此,基本上所有属性都是无用的,其次,该属性的设置破坏
我有麻烦管理詹金斯的秘密密码。我希望密码不显示在日志上,但我尝试了两种方法没有成功: 第一次尝试 我尝试使用全局凭据(不受限制)设置用户和pwd,如下所示: 我执行了: 但我可以在日志中看到,用户的写入是正确的,但pwd的写入方式与它的路径相同: 在我的自动测试中,也是通过输入完整路径而不是变量的值。 第二次尝试 我试着用这样的密文: 但控制台日志上显示的是原样的密码。 有人能帮我吗? 先谢谢你。
除非我真的很沮丧,否则我不会发这个帖子。我试图在一个非常简单的应用程序中用Hibernate 4.1.1配置C3P0,但是我得到了一个类未找到异常。我已经在类路径中包含了C3P0特定的jar文件。Hibernate-c3p0-3.5.2-Final.jar hibernate.properties: Stacktrace:
我正在构建一个Java Web应用程序,当经理批准他们的请求时,它会自动授予用户对其Windows PC的管理权限。 为了实现这一点,我将编写一个脚本来自动远程访问用户的计算机,并将他们添加到计算机的管理组中。我想为了做到这一点,我需要一个管理服务帐户来访问所有的计算机。 我的问题是,我如何安全地存储管理服务帐户信息?应用程序每次需要访问并授予用户管理员权限时都需要凭据,那么我如何让应用程序在没有
问题内容: 我是休眠的新手,已经开始使用C3P0作为休眠的连接池管理器,因为没有它,在与MySQL服务器没有联系8个小时之后,我遇到了超时问题。 切换到C3P0后,我最近遇到了死锁,我不确定它是如何发生的。我虽然显示了所有堆栈跟踪和配置。 这是配置日志 这是我设置的属性 这是被锁定的线程之一的线程转储。 由于我对此并不陌生,因此无法从日志和转储中识别问题。我还注意到C3P0创建了很多线程。 问题答