Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Web服务器上部署akka_Java_Scala_Akka_Spray_Xsbt Web Plugin - Fatal编程技术网

Java 在Web服务器上部署akka

Java 在Web服务器上部署akka,java,scala,akka,spray,xsbt-web-plugin,Java,Scala,Akka,Spray,Xsbt Web Plugin,我有一个基于spray+akka的应用程序。使用本指南: 它解释了这个例子: 这个应用程序运行得很好。但是,当我试图在Web服务器上部署时,我没有找到一种方法 我尝试使用xsbt web插件在Tomcat上部署,得到以下输入: [信息]正在启动服务器。。。正在为目标/webapp添加上下文 启动服务Tomcat启动Servlet引擎: Apache Tomcat/7.0.34 org.Apache.catalina.startup.ContextConfig getDefaultWebXmlF

我有一个基于spray+akka的应用程序。使用本指南:

它解释了这个例子:

这个应用程序运行得很好。但是,当我试图在Web服务器上部署时,我没有找到一种方法

我尝试使用xsbt web插件在Tomcat上部署,得到以下输入:

[信息]正在启动服务器。。。正在为目标/webapp添加上下文

启动服务Tomcat启动Servlet引擎:

Apache Tomcat/7.0.34 org.Apache.catalina.startup.ContextConfig

getDefaultWebXmlFragment信息:未找到全局web.xml

org.apache.coyote.AbstractProtocol开始信息:开始

ProtocolHandler[“http-nio-8080”]

但是Tomcat会返回404来处理所有请求

有人知道如何在Tomcat上部署spray akka应用程序吗?

解决了这个问题

这是使xsbt插件与spray应用程序一起工作所需的:

  • 在application.conf中设置
    根路径
  • 正如@jrudolph所指出的:spray servlet不知道如何在tomcat上自动解决它:

    spray.servlet {
       boot-class = "com.sysgears.example.boot.Boot"
       root-path = "/rest"
       request-timeout = 10s
     } 
    
  • 将class
    boot
    更改为扩展
    webBoot
  • boot.scala

    class Boot extends WebBoot {
      // create an actor system for application
    
      val system = ActorSystem("rest-service-example")
    
      // create and start rest service actor
    
      val serviceActor = system.actorOf(Props[RestServiceActor], "rest-endpoint")
    }
    
  • 添加web.xml,如xsbt web插件所述:

    src/main/webapp/WEB-INF/WEB.xml:

    <listener>
        <listener-class>spray.servlet.Initializer</listener-class>
    </listener>
    
    <servlet>
        <servlet-name>SprayConnectorServlet</servlet-name>
        <servlet-class>spray.servlet.Servlet30ConnectorServlet</servlet-class>
        <async-supported>true</async-supported>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>SprayConnectorServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    

    
    spray.servlet.Initializer
    喷雾器
    spray.servlet.Servlet30连接器servlet
    

    看这个问题,spray servlet自动计算tomcat上的上下文路径似乎有问题,所以您需要手动设置:您是否尝试过在
    应用程序.conf
    中更改
    spray.servlet.root路径
    ?是的,这很有帮助,谢谢。我现在的问题是在网络中定义什么。xml@griffonvulture-我可以问一下为什么要在web服务器(容器)上部署Spray吗?Spray本身是无容器的,可以作为可运行的jar文件部署。你考虑过这个选择吗?您还可以将您的流量从web服务器重定向到Spray实例。也许您应该尝试从“官方”模板设置您的应用程序,该模板已包含所有这些文件,并使用最新版本的spray:)
    <listener>
        <listener-class>spray.servlet.Initializer</listener-class>
    </listener>
    
    <servlet>
        <servlet-name>SprayConnectorServlet</servlet-name>
        <servlet-class>spray.servlet.Servlet30ConnectorServlet</servlet-class>
        <async-supported>true</async-supported>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>SprayConnectorServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>