Spark rest api服务器部署

时间:2017-03-09 08:21:09

标签: java tomcat gradle spark-java

使用this link,我制作了休息api服务器。当我运行eclipse ide时,它运行良好。但是,我不知道如何在服务器上部署。我制作了war文件,并尝试在tomcat上部署,但不知何故无法访问我定义的任何页面,不像在eclipse上运行。这是我做的一些gradle配置。

apply plugin: 'war'

war {
    baseName = 'server'
    manifest {
        attributes 'Implementation-Title': 'SparkAPIServer', 'Implementation-Version': '1.0', 'Main-Class': 'com.server.Main'
    }
}

我确定' Main-Class'路径是正确的。对此有何想法?

2 个答案:

答案 0 :(得分:4)

从Eclipse IDE运行与在Tomcat上运行不同,因为在Eclipse上运行时,Spark使用内置的Jetty服务器,当部署到Tomcat时,Spark运行在Tomcat服务器上。

引用documentation

  

其他网络服务器

     

要在Web服务器(而不是嵌入式jetty服务器)上运行Spark,   spark.servlet.SparkApplication接口的实现是   需要。您必须在init()方法中初始化路由,并且   必须在web.xml中配置以下过滤器:

     

...

因此,为了在部署到Tomcat后运行相同的代码,您需要:

  1. 您的课程应该实施SparkApplication。
  2. 实现init()方法,并在那里注册所有路由。 (当然,如果您希望能够在Eclipse上本地运行并在Tomcat上远程运行,只需将所有路由注册到一些私有方法startSpark(),它将从init()和main()中调用。 / LI>
  3. 应相应地设置您的web.xml。

答案 1 :(得分:1)

看到您使用Spark和main方法启动Web服务器,您实际上是在创建一个jar,如下所示(根据需要进行调整):

jar {
  manifest {
    attributes 'Main-Class': 'com.foo.bar.MainClass'
  }
}

请参阅jar task文档。并且不要忘记将外部库的类路径添加到清单中。