java如何在apache服务器

时间:2016-02-26 12:44:24

标签: java apache tomcat spark-java

我有一个Spark MVC应用程序,非常简单。

根据spark documentation,这应该足以运行应用程序:

public class SparkServer {
    public static void main(String args[]) {
        Spark.staticFileLocation("src/main/webapp");
        System.out
                .println("bla bla bla");
        RService rService = new SparqlRService();
        new RController(rService);
    }
}

我将该类放在项目中的包中,然后在Apache Tomcat服务器上运行Web应用程序(动态Web应用程序)。

运行Apache Tomcat时不会出现print语句,这意味着此类未被调用。 我知道这很有意义。这就是我要问的原因。请问如何让Apache Tomcat运行我的spark应用程序?

更新

@mlk answer之后,我做了以下事情:

public class SparkServer implements SparkApplication {

    @Override
    public void init() {
        Spark.staticFileLocation("src/main/webapp");
        System.out
                .println("bla bla lba");
        RService rService = new SparqlRService();
        new RController(rService);
    }
}

在我的web.xml中我做了:

    <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    id="WebApp_ID" version="3.1">
    <display-name>SRecommender</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <filter>
        <filter-name>SparkFilter</filter-name>
        <filter-class>spark.servlet.SparkFilter</filter-class>
        <init-param>
            <param-name>
    applicationClass</param-name>
            <param-value>com.srecommender.SparkServer</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>SparkFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

我的SparkServer在一个包中: 源文件夹中存在的com.recommendersrc/main/java

我运行apache tomcat,但是当我从spark调用任何路径时,它仍然返回404。

HITE 我可以从main方法运行spark并调用我的页面,它们正在运行。所以我配置spark的方式问题在apache tomcat中运行

更新2

这是设置视图路径的方法

public RecommendationController(RecommendationService service) {
        get("/", (request, response) -> {

            Map<String, Object> model = new HashMap<>();
            model.put("data", "forza ROMA");
            model.put("data2", "It's Rome, It's home");

            return View("src/main/webapp/template/index.html", model);
        });

2 个答案:

答案 0 :(得分:2)

Spark内置了一个容器,因此您不需要tomcat或jetty。如果您要部署到完整的容器,然后you can by creating a web.xml file并实施spark.servlet.SparkApplication

编辑:您缺少Web.xml中的applicationClass属性。

答案 1 :(得分:1)

WebApps不执行static void main()方法,它们根据其部署的WAR文件中的web.xml进行引导。

您是否有运行Web应用程序的经验?你需要一个像Tomcat或Jetty这样的容器。 Apache服务器仅用于提供HTTP,本身不是应用程序容器。