![](/img/trans.png)
[英]Play 2.5 akka.actor.ActorSystem isTerminated method deprecated
[英]Does is it possible access Http context in actor using Java Akka on Play Framework 2.5
当 Actor 收到任何消息时,我正在使用 JavaAkka 来执行一些任务。 当我的演员收到一条消息时,我想从我的控制器之一执行一些函数,但是在这些函数内部使用 http 上下文:
ctx().messages().at("sensor_alert");
或者
session().get("id");
我得到错误:
[error] 2017-02-02 13:06:54 -0300 a.a.OneForOneStrategy - There is no HTTP Context available from here.
java.lang.RuntimeException: There is no HTTP Context available from here.
at play.mvc.Http$Context.current(Http.java:62)
at play.mvc.Controller.ctx(Controller.java:27)
at controllers.IpmiMonitorController.gerarAlertas(IpmiMonitorController.java:370)
at actor.IpmiActor.onReceive(IpmiActor.java:27)
at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:165)
at akka.actor.Actor$class.aroundReceive(Actor.scala:484)
at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:95)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)
at akka.actor.ActorCell.invoke(ActorCell.scala:495)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)
有什么解决办法吗?
您的 HTTP 上下文不应超出控制器层,否则您会发现自己处于不适当的耦合中。
此外,为什么要从参与者调用控制器上的方法? 控制器旨在处理传入的 HTTP 请求。 这个方法可能不属于控制器吗?
如果您要生成警报,警报会去哪里? 如果是数据库,则将 DAO 注入到 actor 中。 如果它进入一个 HTTP 请求,将一个 web 服务客户端或类似的东西注入到 actor 中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.