Tag: playframework 2.0

玩2.0 + Java与Play 2.0 + Scala?

玩游戏1.2后,我正在考虑迁移到2.0。 有一件令我困扰的事情是,人们说Scala对于Play 2.0应用程序更“偏爱”。 我知道1.2和2.0之间的差异,但我不确定Play 2.0与Java和Play 2.0与Scala之间是否存在差异 所以在我脑海里有一些问题: 在Play 2.0应用程序中,有什么我不能用java在scala上做的事情? 如果我开始在play 2.0应用程序中学习和使用scala,我有什么优势?

在play2哪里可以看到logging的sql语句?

我发现在application.conf有这样的configuration: # If enabled, log SQL statements being executed. db.default.logStatements=true 我已经启用它,但我找不到logging执行sqls的任何日志文件。 我在哪里可以find它,或者我想念什么?

在Play Framework 2.0中Request.params不见了

有没有办法访问所有的请求参数,无论HTTP方法? 我没有在Play Framework 2.0中find方法,而是倾注了文档和API。 我在一个接受POST和GET的网站上search。 网站上的自定义跟踪会检查传入的所有参数,以确定存储跟踪数据的正确方式。 在Play Framework 1.2.x中,我能够使用Controller中的请求访问参数 request.params.get("keywords") request.params.get("location") request.params.all() 使用Play Framework 2.0,情况已经不复存在。 请求不再有方法params ,只有queryString和queryString只能使用GET而不是POST。 在Controller Action中定义每个可能的跟踪参数是不可行的,它们是dynamic的。 更新 :一个可能的解决方法是使用身体parsing器 。 根据请求的内容types,使用适当的parsing器,例如application / form-url-encoded vs application / json 这是结合了POST参数和GET参数的粗略Map,其中GET参数优先。 val params: collection.mutable.Map[String, Seq[String]] = collection.mutable.Map() params ++= request.body.asFormUrlEncoded.getOrElse[Map[String, Seq[String]]] { Map.empty } params ++= request.queryString

保护Play框架和OAuth2上的REST API

我正在开发一个Play 2.0和Scala的应用程序,它公开了一些REST API。 这些API将被不同的应用程序,Web,移动或桌面使用,所以OAuth协议(OAuth2)似乎是最合适的。 另外,我会最初使用Facebook等外部OAuth提供程序。 我的问题是:授权个别REST调用的确切stream程是什么? 我应该期待在服务器端每次打电话,我应该与外部提供商检查什么? 使用OAuth1,我知道客户端发送了带有所有签名请求的令牌,但是使用Oauth2我认为不是这样,我想如果一个令牌没有签名是不可信的,所以我不认为这是stream量。

在群集中发现阿卡演员

最近我一直试图围绕着阿卡和基于演员的系统的概念。 虽然现在我对Akka的基础知识已经有了很好的理解,但是在集群和远程angular色方面,我还是苦苦挣扎了一些。 我将尝试使用Play Framework 2.0附带的WebSocket聊天示例来说明问题:有一个演员拥有WebSockets,并保存当前连接的用户列表。 演员在技术上和逻辑上基本代表聊天室。 只要在一台服务器上运行一个聊天室,这种方式就完全正常了。 现在我试图理解,当我们谈论运行在服务器集群上的许多dynamic聊天室(可以随时打开/closures新的房间)时,这个例子将不得不被延长(单个节点被添加或删除根据目前的需求)。 在这样的情况下,用户A可以连接到服务器1,而用户B连接到服务器2.两者都可以在同一个聊天室中通话。 在每台服务器上,仍然会有一个actor(对于每个聊天室?),该actor保存WebSocket实例以接收和发布事件(消息)给正确的用户。 但从逻辑上讲,服务器1或服务器2上应该只有一个聊天室参与者,该主持人拥有当前连接的用户(或类似任务)的列表。 你将如何去实现这个目标,最好是在“纯粹的阿克卡”中,而不需要增加额外的消息系统,如ZeroMQ或RabbitMQ? 这是我到目前为止,请让我知道这是否有道理: 用户A连接到服务器1,并分配一个演员来保存他的WebSocket。 参与者检查(使用Router?EventBus?其他?)在任何连接的群集节点上是否存在活动聊天室的“聊天室演员”。 因为它不会要求创build一个新的聊天室演员,并会发送和接收这个演员未来的聊天消息。 用户B在服务器2上连接并且一个演员也被分配给他的WebSocket。 它还检查所请求的聊天室的演员是否存在并在服务器1上find它。 服务器1上的聊天室演员现在充当给定聊天室的中心,将消息发送给所有“连接”的聊天成员演员并分发传入的聊天室。 如果服务器2出现故障,聊天室的参与者将不得不重新创build/移动到服务器2,尽pipe这不是我现在主要关心的问题。 我最想知道如何dynamic发现演员如何传播各种基本上独立的机器可以使用Akka的工具集。 我一直在看阿卡的文档已经有相当长的一段时间了,所以也许我在这里忽略了这个问题。 如果是这样,请赐教:-)

比较提升与Play2

我以前用java的play2。 这感觉有点像样板,特别是如果你用java与akka。 但这不是框架的错误。 昨天我读“斯卡拉不耐烦”,我真的很喜欢这种语言。 现在我看了两个框架Lift 2.5和Play 2.0.3。 我认为电梯有更高的学习曲线,我不能只是做一些事情。 这不适合我。 从我看到的,Lift有一个非常漂亮和干净的devise。 但对我而言,很难说出主要的差异。 我认为这两个框架都很棒。 视图优先的方法不允许你在你的模板中编码,而是你必须在代码片段。 我很喜欢这个,因为它看起来更有组织性。 它也让你使用一个正常的HTML编辑器。 (我没有太多的经验,这只是我的第一印象) 为了安全起见,我不认为这是框架的工作。 无状态/有状态:很难区分主要区别在哪里。 我只知道如果你使用networking套接字,游戏也有一个状态。 按F5后,这两个框架都能够编译。 我非常喜欢这个function。 这两个框架都使用sbt 电梯来与授权,但我认为有一个play2斯卡拉插件,做同样的事情 Lift有一个用于mongoDB的ORM映射器。 因为我想使用noSQL,这对我来说看起来更清洁。 (再次没有太多的经验) 编辑有一个scala mongodb在play2的ORM映射器https://github.com/leon/play-salat asynchronous – 播放2使用Akka。 不知道电梯使用什么,但他们也有类似的东西。 Lift提供CSRF支持。 Play2有一个CSRF模块,但是这样会为您的代码添加样板。 无状态身份validation似乎有一些安全漏洞。 这两个框架都有状态validation。 (play2有状态/无状态,电梯有状态) 每个框架的优点是什么?

Play Framework 2.1 – 找不到隐式的ExecutionContext

我打电话给这样的webservice: WS .url(url) .get .map { response => // error occurs on this line response.status match { case 200 => Right(response.json) case status => Left(s"Problem accessing api, status '$status'") } } 完整的错误: Error: Cannot find an implicit ExecutionContext, either require one yourself or import ExecutionContext.Implicits.global

使用Play从Java类访问application.conf属性! 2.0

我想添加一个对象到全局范围,为了构造它,我需要将它传递给一个文件的path。 我不想在源代码中对文件path进行硬编码,所以我想从application.conf中获取这个path。 问题是我不知道如何从java类访问这些属性。 我试过这个: Configuration.root().getString("file.path") 但是它以NullPointerException结束。 我错了,假设有一个全局的configuration实例,我可以使用? 谢谢。

Play Framework 1.0和2.0之间的主要区别是什么?

随着最近发布的Play Framework 2.0,我想知道是否有人能从高层次的angular度总结Play Framework 1和2之间的主要区别。 我已经编译了一些(玩1.0 – >玩2.0): 模板引擎:Groovy页面 – > Scala模板 坚持:hibernate – > Ebean 语言支持:Java – > Scala,Java dynamic编译:字节码注入 – >通过SBTdynamic编译 构build系统:不适用 – > SBT 可扩展性:模块,插件 – >子项目,插件,SBT插件 还有什么 ? 阿卡?

如何在Play框架中处理可选的查询参数

比方说,我有一个已经运作的基于Play 2.0框架的应用程序在Scala中提供一个URL,如: HTTP://本地主机:9000 /生日 其中列出了所有已知的生日 我现在想通过添加限制结果的能力来增强这个function,可选的“from”(date)和“to”请求参数,例如 HTTP://本地主机:9000 /生日从= 20120131&到= 20120229? (这里的date解释为yyyyMMdd) 我的问题是如何在Scala中处理Play 2.0中的请求参数绑定和解释,尤其是考虑到这两个参数都应该是可选的。 这些参数是否应该用“路线”规范expression? 或者,如果响应的Controller方法以某种方式从请求对象中分离参数? 有没有另外一种方法来做到这一点?