2

我的 Spark Java 应用程序在其嵌入式 Jetty 服务器上运行良好,所有 h2database 连接都运行良好。

我打包了一个战争以在 tomcat 8 上运行它。但是,一旦我将战争部署到 tomcat。与 h2databse 的连接失败!!

如何解决这个问题?这是我的 web.xml

    <?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <display-name>Hello</display-name>

    <filter>
        <filter-name>SparkFilter</filter-name>
        <filter-class>spark.servlet.SparkFilter</filter-class>
        <init-param>
            <param-name>applicationClass</param-name>
            <param-value>com.aqueel.project.Main</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>SparkFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

这是我的主要课程。只有当我打开 sql2o 连接时,代码才会失败。这意味着tomcat无法建立连接,而jetty服务器可以。

String dataSource = "jdbc:h2:~/app123.db";

    String conString = dataSource + ";INIT=RUNSCRIPT from 'classpath:db/init.sql'";
    Sql2o sql2o = new Sql2o(conString, "", "");
    FoodDao foodDao = new Sql2oFoodDao(sql2o);
    Connection con = sql2o.open();
    Gson gson = new Gson();

    //GET MENU (ALL) works
    get("/delectable/menu", "application/json", (req, res) -> {
        res.status(200);
        return foodDao.findAll();
    }, gson::toJson);

这是我用来打包war文件的build.gradle:

group 'com.aqueel.project'

apply plugin: 'java'
apply plugin: 'war'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {

    compile "com.sparkjava:spark-core:2.5"
    compile "com.h2database:h2:1.4.191"
    compile "org.sql2o:sql2o:1.5.4"
    compile group: 'org.slf4j', name: 'slf4j-simple', version: '1.6.1'
    compile group: 'com.google.code.gson', name: 'gson', version: '2.3.1'
    testCompile group: 'junit', name: 'junit', version: '4.11'

}
4

0 回答 0