如何部署一个火花Java Web应用程序?

Mic*_*elP 18 java webserver spark-java

我使用spark web框架来创建webapp,但我不知道如何部署这个webapp.我很抱歉,如果这是非常基本的,但我是新的引发框架,我找不到任何指导我如何部署spark webapp的文档:

  • 如何独立部署spark webapp
  • 如何构建spark webapp(war文件或此类文件)并使用Web服务器(jetty或Tomcat)进行部署.

dMc*_*ish 15

您首先需要创建一个可以构建到.war文件中的常规Java项目(在Eclipse中,这将是一个动态Web项目)

此链接中的spark文档描述了需要添加到项目web.xml文件的内容.http://sparkjava.com/documentation.html#other-webserver

过滤器中文档中列出的参数值需要指向已定义路径的类.

此外,以前在main()中的所有代码都需要移动到init().

@Override
public void init() {
    get(new Route("/test") {
        @Override
        public Object handle(Request request, Response response) {
            return "response goes here;
        }

    });
Run Code Online (Sandbox Code Playgroud)

另外,为了让我将它部署到JBoss,我只需要包含spark库而不是Jetty库.完成此操作后,您应该能够构建战争并将其部署到服务器,就像使用任何其他Java项目一样.


小智 7

在这里,您可以找到有关部署的信息:http: //sparkjava.com/documentation.html#embedded-web-server

首先,为web.xmlconfig 设置过滤器选项:

<web-app>
  <!-- some options -->
  <filter>
    <filter-name>SparkFilter</filter-name>
    <filter-class>spark.servlet.SparkFilter</filter-class>
    <init-param>
      <param-name>applicationClass</param-name>
      <param-value>your.package.Application</param-value>
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>SparkFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)

Applicationclass应该实现接口,spark.servlet.SparkApplication并且必须初始化init()方法中的路由.

这个看起来像(在Java SE 8中,您可以将Lambda Expression用于路由器.):

package your.package;

import static spark.Spark.*;

public class Application implements SparkApplication {
    @Override
    public void init() {
        get("/", (request, response) -> "Hello World");

        get("/hello/:name", (request, response) -> {
            return "Hello: " + request.params(":name");
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

具有此配置的应用程序适用于tomcat和glassfish服务器.