【问题标题】:Spark rest api server deploySpark rest api 服务器部署
【发布时间】:2017-07-30 03:05:48
【问题描述】:

this link,我做了rest api server。当我在 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'
    }
}

我确定“主类”路径是正确的。有这个想法吗?

【问题讨论】:

    标签: java tomcat gradle spark-java


    【解决方案1】:

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

    引用documentation:

    其他网络服务器

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

    ...

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

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

    【讨论】:

    • 能否详细说明 web.xml 应该如何设置? github上有没有例子?!
    • 看看here
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-31
      • 1970-01-01
      • 1970-01-01
      • 2023-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      相关资源
      最近更新 更多