Jdbc Jetty中的嵌入式数据库

Jdbc Jetty中的嵌入式数据库,jdbc,jetty,hsqldb,embedded-database,xml-configuration,Jdbc,Jetty,Hsqldb,Embedded Database,Xml Configuration,我想要的是,当Jetty启动时,它会创建一个可供我的Web应用程序使用的数据库。我的目标是能够在每台计算机上部署我的webapps来显示我的应用程序 我需要一种方法在Jetty配置中声明我的HSQLDB数据库(我的所有数据库都有SQL文件来设置结构并用数据填充它)。这些参数只需设置一次,将来不会更改 我觉得我已经到处找过了,什么都试过了,但什么都不想用:(顺便说一下,我用的是Jetty 9 这是我尝试过的选项之一,对我来说似乎接近我的解决方案 <New id="toto" class="o

我想要的是,当Jetty启动时,它会创建一个可供我的Web应用程序使用的数据库。我的目标是能够在每台计算机上部署我的webapps来显示我的应用程序

我需要一种方法在Jetty配置中声明我的HSQLDB数据库(我的所有数据库都有SQL文件来设置结构并用数据填充它)。这些参数只需设置一次,将来不会更改

我觉得我已经到处找过了,什么都试过了,但什么都不想用:(顺便说一下,我用的是Jetty 9

这是我尝试过的选项之一,对我来说似乎接近我的解决方案

<New id="toto" class="org.eclipse.jetty.plus.jndi.Resource">
  <Arg></Arg>
  <Arg>jdbc/toto</Arg>
  <Arg>
    <New class="org.apache.commons.dbcp.BasicDataSource">
      <Set name="DriverClassName">org.hsqldb.jdbc.jdbcDataSource</Set>
      <Set name="Url">jdbc:hsqldb:hsql://localhost:9015/toto</Set>
      <Set name="Username">toto</Set>
      <Set name="Password">toto</Set>
    </New>
  </Arg>
</New>
尽管如此,我还是得到了一个例外:

java.lang.ExceptionInInitializerError
at org.apache.jasper.servlet.JspServlet.init(JspServlet.java:159)
at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:540)
at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:349)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:812)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:288)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1322)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:732)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:490)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:118)
at org.eclipse.jetty.util.component.ContainerLifeCycle.addBean(ContainerLifeCycle.java:282)
at org.eclipse.jetty.util.component.ContainerLifeCycle.addBean(ContainerLifeCycle.java:214)
at org.eclipse.jetty.util.component.ContainerLifeCycle.updateBeans(ContainerLifeCycle.java:764)
at org.eclipse.jetty.server.handler.HandlerCollection.setHandlers(HandlerCollection.java:89)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.setHandlers(ContextHandlerCollection.java:145)
at org.eclipse.jetty.server.handler.HandlerCollection.addHandler(HandlerCollection.java:155)
at org.eclipse.jetty.deploy.bindings.StandardDeployer.processBinding(StandardDeployer.java:41)
at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186)
at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:495)
at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:146)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:175)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:64)
at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:605)
at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:528)
at org.eclipse.jetty.util.Scanner.scan(Scanner.java:391)
at org.eclipse.jetty.util.Scanner$1.run(Scanner.java:329)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
编辑2014年1月7日


我放弃了这条路径,但我成功地实现了我在这里想要的:

看起来您正在将HSQLDB用作嵌入式数据库,但正在尝试以服务器模式连接到它。在嵌入式模式下运行HSQLDB时,请查看以下文档以获取正确的JDBC连接字符串:

你能告诉我“什么都不管用”是怎么回事吗?执行JDBC调用时是否出现异常?数据库是否未填充数据?我尝试使用Execute Query查看数据库,但它没有连接。我通过Eclipse成功连接到某个测试数据库,但没有连接到我在Jetty配置中声明的数据库。Jetty使用此代码正确启动,但Execute Query未找到数据库,说别名(又名“toto”)我忘了说明我使用的是hslqdb-1.8。我的Web应用程序也是用spring maven配置开发的,但不是最新的spring,其中有一个用于嵌入式数据库的新工具。不可能只在Jetty配置中使用XML文件。我的应用程序由十几个Web应用程序和一个我把它们都消耗掉了。每个webapp都有自己的数据库。我还尝试在项目的web-INF目录中使用一个jett-web.xml文件,但没有成功。
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
  <property name="url" value="jdbc:hsqldb:mem:toto"/>
  <property name="username" value="toto"/>
  <property name="password" value="toto"/>
</bean>
<resource-ref>
  <res-ref-name>jdbc/toto</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref>
<Configure id='wac' class="org.eclipse.jetty.webapp.WebAppContext">
  <New id="square" class="org.eclipse.jetty.plus.jndi.Resource">
    <Arg><Ref id="wac" /></Arg>
    <Arg>jdbc/square</Arg>
    <Arg>
     <New class="org.hsqldb.jdbc.jdbcDataSource">
       <Set name="Database">file:square</Set>
       <Set name="User">${database.connection.username}</Set>
       <Set name="Password">${database.connection.password}</Set>
      </New>
    </Arg>
  </New>
</Configure>
OPTIONS=jndi
OPTIONS=plus
etc/jetty-plus.xml
java.lang.ExceptionInInitializerError
at org.apache.jasper.servlet.JspServlet.init(JspServlet.java:159)
at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:540)
at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:349)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:812)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:288)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1322)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:732)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:490)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:118)
at org.eclipse.jetty.util.component.ContainerLifeCycle.addBean(ContainerLifeCycle.java:282)
at org.eclipse.jetty.util.component.ContainerLifeCycle.addBean(ContainerLifeCycle.java:214)
at org.eclipse.jetty.util.component.ContainerLifeCycle.updateBeans(ContainerLifeCycle.java:764)
at org.eclipse.jetty.server.handler.HandlerCollection.setHandlers(HandlerCollection.java:89)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.setHandlers(ContextHandlerCollection.java:145)
at org.eclipse.jetty.server.handler.HandlerCollection.addHandler(HandlerCollection.java:155)
at org.eclipse.jetty.deploy.bindings.StandardDeployer.processBinding(StandardDeployer.java:41)
at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186)
at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:495)
at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:146)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:175)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:64)
at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:605)
at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:528)
at org.eclipse.jetty.util.Scanner.scan(Scanner.java:391)
at org.eclipse.jetty.util.Scanner$1.run(Scanner.java:329)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)