我需要从我的代码创建HSQLDB服务器,运行它并从另一个应用程序连接(对于e.x. by runManagerSwing.bat)
以下是我的代码:
HsqlProperties p = new HsqlProperties();
p.setProperty("server.database.0", "file:./db/idt_simulatordb");
p.setProperty("server.dbname.0", "idt_simulatordb");
p.setProperty("server.port", "9001");
Server server2 = new Server();
server2.setProperties(p);
server2.start();
// I even can connect to my server from the same application
Connection conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:9001 /idt_simulatordb", "sa", "");
Statement st = conn.createStatement(); // statements
String expression1 = "DROP SCHEMA IF EXISTS simulators CASCADE;\n";
String expression2 = "CREATE SCHEMA SIMULATORS AUTHORIZATION SA;";
String expression3 = "CREATE TABLE SIMULATORS.dirtyhack();";
st.executeUpdate(expression1); // run the query
st.executeUpdate(expression2); // run the query
st.executeUpdate(expression3); // run the query
//
st.close();
conn.close();
server2.shutdownWithCatalogs(Database.CLOSEMODE_NORMAL);
但是当我在服务器运行后放置断点并尝试从runManagerSwing连接到我的服务器时,我收到了超时错误。
但是如果我从bat-file启动服务器,那么一切都还可以。
我想我必须使用MainInvoker
,但我不知道如何传递参数以及如何关闭服务器。
答案 0 :(得分:0)
您需要在报告的最后一行之后启动服务器
...
server2.setProperties(p);
server2.start();
答案 1 :(得分:0)
是的,这是正常的,因为当您重新达到断点时,您也会挂起数据库,因此无法连接到数据库。
解决方案: 使您的断点挂起仅在其中而不是整个程序中的线程。如果使用intellij,请右键单击断点,然后将suspend选项设置为“ Thread”而不是“ all”