这是配置:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${connection.driverclass}"/>
<property name="url" value="${connection.url}/${connection.database}"/>
<property name="username" value="${connection.username}"/>
<property name="password" value="${connection.password}"/>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingLocations">
<list>
<value>classpath:path/to/hibernate/mappings/*.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=${hibernate.dialect}
</value>
</property>
</bean>
当我使用 IDE (IntelliJ IDEA) 就地部署时,一切都按预期工作,但是当我部署到独立的 Tomcat 7 时,BasicDataSource 抛出 UnsuportedOperationException。
调试表明抛出异常是因为使用用户名“sa”调用了 BasicDataSource:getConnection,进一步表明 LocalSessionFactoryBean 正在使用该用户名进行实例化。我对此完全感到困惑,因为我找不到用户名的注入位置。
我正在使用 MariaDB。