标签: scalatra

没有cookie的Scalatra会话

我正在使用Scalatra框架来构建Web应用程序.应用程序依赖于会话,但我不能使用会话cookie(因为从技术上讲,只有一个用户,它同时运行多个会话).

每个会话都有一个唯一的会话密钥,我想将其用作标识符.我希望将此密钥作为GET或POST参数而不是cookie标头发送.

我现在的问题是:如何在没有cookie的情况下将会话信息(即状态)存储在Scalatra servlet中,而只是将参数作为标识符存储?

到目前为止,我尝试使用文件系统来存储所有会话信息,但这太慢而且不必要,因为会话只持续几秒钟.

(安全不是问题)

session scala scalatra

5
推荐指数
1
解决办法
1763
查看次数

如何在IntelliJ Idea中调试scalatra应用程序?

我在IntelliJ Idea中找不到任何调试Scalatra应用程序的文档或示例.是否可以在调试模式下运行Scalatra应用程序以附加Idea?

debugging scala intellij-idea scalatra

5
推荐指数
1
解决办法
2035
查看次数

在SBT中启动Scala应用程序以进行集成测试

我有一个与嵌入式Jetty一起运行的Scalatra Web服务.我现在想编写集成测试:

  • 启动服务(使用应用程序的main方法)
  • 运行测试(驱动HTTP接口)
  • 停止服务.

这应该全部由SBT命令触发.

我该怎么办呢?

integration-testing scala sbt scalatra

5
推荐指数
0
解决办法
876
查看次数

什么Scala概念用于使Scalatra DSL工作?

我试图通过尝试使用Scalatra来进入Scala.我不久前在课程上完成了Martin Odersky的课程,但我仍然很难理解这是如何工作的:

package com.example.app
import org.scalatra._

class HelloWorldApp extends ScalatraFilter {
  get("/") {
    <h1>Hello, {params("name")}</h1>
  }
}
Run Code Online (Sandbox Code Playgroud)

此示例取自Scalatra主页:http://www.scalatra.org/

如何执行此声明:

get("/") {
    Hello, {params("name")}
}

{}参数的get()方法吗?你能解释一下Scala语言的哪些特性在使用吗?Scalatra源代码的指针将是完美的定义,这将是完美的.

scala scalatra

5
推荐指数
1
解决办法
186
查看次数

使用Akka和Scalatra

我的目标是为我的小部件构建一个高度并发的后端.我现在将后端作为Web服务公开,它接收运行特定小部件的请求(使用Scalatra),从DB获取小部件的代码并在演员(使用Akka)中运行它,然后回复结果.所以想象我做的事情如下:

get("/run:id") {
  ...
  val actor = Actor.actorOf("...").start
  val result = actor !! (("Run",id), 10000)
  ...
} 
Run Code Online (Sandbox Code Playgroud)

现在我相信这不是最好的并发解决方案,我应该在一个actor实现中以某种方式结合侦听请求和运行小部件.您如何设计这个以获得最大的并发性?谢谢.

concurrency scala akka scalatra

4
推荐指数
1
解决办法
2282
查看次数

Scalatra中的Scalate ResourceNotFoundException

我正在尝试基于scalatra-sbt.g8的以下内容:

class FooWeb extends ScalatraServlet with ScalateSupport {
  beforeAll { contentType = "text/html" }
  get("/") {
    templateEngine.layout("/WEB-INF/scalate/templates/hello-scalate.jade")
  }
}
Run Code Online (Sandbox Code Playgroud)

但我得到以下异常(即使文件存在) - 任何线索?

Could not load resource: [/WEB-INF/scalate/templates/hello-scalate.jade]; are you sure it's within [null]?

org.fusesource.scalate.util.ResourceNotFoundException: Could not load resource: [/WEB-INF/scalate/templates/hello-scalate.jade]; are you sure it's within [null]?
Run Code Online (Sandbox Code Playgroud)

FWIW,最重要的例外是来自org.mortbay.jetty.handler.ContextHandler.getResource1142行:_baseResource==null.

scala scalatra scalate

4
推荐指数
1
解决办法
634
查看次数

Scalatra 2.1 Akka期货示例

有没有人知道我可以找到一个经典的"聊天"应用程序的例子,使用Akka Futures和Scalatra 2.1?文档中的Futures示例有点微不足道,因为我对Akka是全新的,而且对Scalatra来说相对较新,我想从一个坚实的基础开始.我知道这可能很难,因为Scalatra 2.1仍在正式开发中.

asynchronous scala akka scalatra

4
推荐指数
1
解决办法
1308
查看次数

javascript中的玉插值

(注意,这是Scalate Jade,如果这有所不同)

我有以下路线:

get("/fruit") {
  contentType = "text/html"
  jade("fruity", "fruit" -> "apple")
}
Run Code Online (Sandbox Code Playgroud)

这个fruity.jade模板:

-@ val fruit: String

p Alerting #{fruit}
:javascript
  alert("#{fruit}");
Run Code Online (Sandbox Code Playgroud)

它呈现如下:

<body><p>Alerting apple</p>
<script type="text/javascript">
  //<![CDATA[
    alert("#{fruit}");
  //]]>
</script>
</body>
Run Code Online (Sandbox Code Playgroud)

fruit值不是针对javascript部分进行插值的.我怎样才能在javascript中解决它?

scalatra scalate pug

4
推荐指数
1
解决办法
1354
查看次数

我的http请求在Akka未来变为null

我的服务器应用程序使用Scalatra,json4s和Akka.

它收到的大多数请求都是POST,它们会立即返回给客户端并返回固定响应.实际响应以异步方式发送到客户端的服务器套接字.为此,我需要getRemoteAddr从http请求.我正在尝试使用以下代码:

case class MyJsonParams(foo:String, bar:Int)

class MyServices extends ScalatraServlet {
  implicit val formats = DefaultFormats

  post("/test") {
    withJsonFuture[MyJsonParams]{ params =>
      // code that calls request.getRemoteAddr goes here
      // sometimes request is null and I get an exception
      println(request)
    }
  }

  def withJsonFuture[A](closure: A => Unit)(implicit mf: Manifest[A]) = {
    contentType = "text/json"
    val params:A = parse(request.body).extract[A]
    future{
      closure(params)
    }      
    Ok("""{"result":"OK"}""")
  }    
}
Run Code Online (Sandbox Code Playgroud)

withJsonFuture函数的目的是将一些样板移出路径处理.

这有时会起作用(打印一个非空值request),有时候request是null,我觉得很令人费解.我怀疑我必须"关闭" request我的未来.但是,当没有其他请求发生时,在受控测试方案中也会发生错误.我想request是不可改变的(也许我错了?)

为了解决这个问题,我已将代码更改为以下内容:

case class …
Run Code Online (Sandbox Code Playgroud)

scala akka scalatra

4
推荐指数
1
解决办法
635
查看次数

使用ScalatraSuite(FunSuiteLike)进行独立sbt项目的Scalatra测试失败

我正在对scalatra路由进行测试,但对独立的sbt项目(使用Jetty)使用ScalatraSuite(FunSuiteLike)失败。

产生的错误是:
java.lang.IllegalArgumentException:要求失败:检测到的本地端口<1,这是不允许的

我还尝试过单独运行码头,然后再运行“ sbt测试”,但同时也引发了同样的错误。谁能帮忙解决这个问题?

scala jetty scalatest scalatra

3
推荐指数
1
解决办法
478
查看次数