【问题标题】:Connecting to HSQL DB from Spring从 Spring 连接到 HSQL DB
【发布时间】:2014-08-27 12:10:08
【问题描述】:

我使用 Maven 插件启动 HSQL DB(我在集成测试中使用该 DB):

<plugin>
    <groupId>com.btmatthews.maven.plugins.inmemdb</groupId>
    <artifactId>inmemdb-maven-plugin</artifactId>
    <version>1.4.3</version>
    <configuration>
        <monitorKey>inmemdb</monitorKey>
        <monitorPort>11527</monitorPort>
    </configuration>
    <executions>
        <execution>
            <id>run</id>
            <goals>
                <goal>run</goal>
            </goals>
            <phase>pre-integration-test</phase>
            <configuration>
                <daemon>true</daemon>
                <type>hsqldb</type>
                <database>MY_DB</database>
                <username>user1</username>
                <password>111</password>
            </configuration>
        </execution>
        <execution>
            <id>stop</id>
            <goals>
                <goal>stop</goal>
            </goals>
            <phase>post-integration-test</phase>
        </execution>
    </executions>
</plugin>

当数据库启动并运行时,我可以创建 JDBC 连接:

Class.forName("org.hsqldb.jdbcDriver");
Connection connection = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:9001/MY_DB", "sa", "");
System.out.print(connection);

此代码打印:org.hsqldb.jdbc.JDBCConnection@2d22efc3

但是,当我尝试在 Spring 中使用相同的连接设置来配置数据源时,出现异常 (java.net.ConnectException: Connection refused):

<bean id="dataSource" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource">
    <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
    <property name="url" value="jdbc:hsqldb:hsql://localhost:9001/MY_DB" />
    <property name="username" value="sa" />
    <property name="password" value="" />
</bean>

我也试过username:user1password:111,它产生另一个异常:org.hsqldb.HsqlException: invalid authorization specification - not found: user1

如何从 Spring 连接到这个数据库?

【问题讨论】:

  • 春天你过得怎么样?请贴出相关代码。
  • 您是否有机会使用 Spring 启动数据库?也许它还没起来。
  • @Darshan 在 Spring 配置中,我声明了我在问题中提供的数据源。然后我声明一个引用数据源的LocalContainerEntityManagerFactoryBean。当 Spring 尝试创建这些 bean 时,它们会抛出异常。
  • @Stéphane 我不使用 Spring 启动数据库,而是使用 Maven 启动它。我知道 Spring 内置了对内存数据库的支持,但我不想使用它。我认为数据库已经启动,否则我可能无法创建 JDBC 连接。我还可以在 Maven 日志中看到数据库已启动。
  • 我会得出结论,当您尝试从 spring 连接时,您的 hsql 数据库未启动。

标签: spring hibernate jdbc hsqldb


【解决方案1】:

根据顾问的建议,我补充说,当您尝试从 Spring 连接时,您的 hsql db 没有运行。

【讨论】:

  • 谢谢!我将启动嵌入式 Tomcat 并部署我的 Web 应用程序的 Maven 插件放在启动嵌入式数据库的插件之前。应用程序尝试连接到尚未启动的数据库。
猜你喜欢
  • 2014-09-14
  • 2012-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-26
  • 2021-09-16
  • 2020-09-04
  • 1970-01-01
相关资源
最近更新 更多