Я использую весну 3.2 и спящий режим 4.2. У меня есть 2 компонента: datasource (c3p0) и sessionFactory (LocalSessionFactoryBean) с файлом свойств (application.properties).c3p0 и спящий режим пользователя/пароль
Когда я определяю источник данных, используя конфигурацию java с явным именем пользователя и паролем, все работает хорошо. во время запуска c3p0 регистрирует свою конфигурацию. например Свойство «Свойства»:
properties -> {user=******, password=******}
это точные результаты
но когда я определить один и тот же источник данных в XML (также с пользователем и паролем), а не в Java, приложение ведет себя по-разному.
свойство «Свойства» показывает
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 снова выводит все свойства среды без пользователя и пароля, но соединение успешно. хорошо, хорошо: объединение может быть перенесено на сессионную фабрику, но учетные данные должны быть в источнике данных
так что происходит? Я хочу иметь datasource с учетными данными и конфигурацией объединения и спящим сеансом с настройкой спящего режима.
в случае, если это имеет значение. Ниже моя конфигурация:
<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;
}
yep, и удивительно, используя это подход заставляет свойство свойств снова выглядеть нормально – piotrek