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

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

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

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

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

filter中文档中列出的参数值需要指向已定义路径的类。

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

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

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

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

首先,为web.xml配置设置filter选项:

    SparkFilter spark.servlet.SparkFilter  applicationClass your.package.Application    SparkFilter /*   

Application类应实现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"); }); } } 

具有此配置的应用程序适用于tomcatglassfish服务器。

对于独立方案,您可以使用Gradle (或Maven)来创建fat(意味着包含所有依赖项,包括嵌入式Jetty服务器),可执行jar文件。 这是一个简单的build.gradle文件,它可以做到这一点:

 apply plugin: 'java' apply plugin: 'application' // TODO Change this to your class with your main method mainClassName = "my.app.Main" defaultTasks 'run' repositories { mavenCentral() } dependencies { compile group: 'com.sparkjava', name: 'spark-core', version: '2.5.5' // TODO add more dependencies here... } // Create a fat executable jar jar { manifest { attributes "Main-Class": "$mainClassName" } from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } archiveName "app.jar" } 

通过gradle build在命令行上构建您的应用程序。 这将在build/libs文件夹中创建一个app.jar文件,然后运行:

 java -jar build/libs/app.jar 

如果你想要真正的最新:)那么你必须使用Docker打包你的JRE和应用程序jar,因此你不依赖于服务器上安装的软件堆栈。 为此,我们可以使用Dockerfile

 FROM java:8 ADD build/libs/app.jar / EXPOSE 4567 ENTRYPOINT ["java", "-jar", "app.jar"] 

构建docker镜像并运行它,例如:

 docker build -t myapp:v1 . docker run --rm --name myapp -p 4567:4567 myapp:v1 

当然,如果要在远程Web服务器上使用Docker镜像,则需要将其推送到Docker Hub或私有docker存储库,并在运行之前使用docker pull其拉到服务器。