在play的2.0.x doc中,您可以看到如何安排异步任务:
http://www.playframework.org/documentation/2.0.4/ScalaAkka
Akka.system.scheduler.schedule(0 seconds, 30 minutes, testActor, "tick")
Run Code Online (Sandbox Code Playgroud)
你怎么能用最近的重新播放Play 2.1来实现同样的目的?
整个akka API似乎已经改变了......
我检查过:
https://github.com/playframework/Play20/wiki/Highlights https://github.com/playframework/Play20/wiki/Migration以及 http://doc.akka.io/docs/akka/2.1.0- RC1 /项目/迁移指南-2.0.x版本,2.1.x.html
也在这里问:https://groups.google.com/d/topic/play-framework/7VcwNea6QlM/discussion
如上所述:http: //www.w3.org/Protocols/rfc2616/rfc2616-sec5.html
为了允许在未来版本的HTTP中转换为所有请求中的absoluteURI,所有HTTP/1.1服务器必须接受请求中的absoluteURI表单,即使HTTP/1.1客户端只会在对代理的请求中生成它们.
我有客户端将POST请求发送到我的play-2.1.1服务器.他这样发送:
POST http://172.16.1.227:9000/A8%3aF9%3a4B%3a20%3a89%3a40/1089820966/ HTTP/1.1
Content-Length: 473
Content-Type: application/json
Date: Thu, 25 Apr 2013 15:44:43 GMT
Host: 172.16.1.227:9000
User-Agent: my-client
...some data...
Run Code Online (Sandbox Code Playgroud)
所有请求都会被"未找到操作"错误拒绝.我使用curl发送的相同请求很好,它们之间的唯一区别是curl使用相对URI发送它:
POST /A8%3aF9%3a4B%3a20%3a89%3a40/1089820966/ HTTP/1.1
Accept: */*
Content-Length: 593
Content-Type: application/json
Host: 172.16.1.227:9000
User-Agent: curl/7.30.0
Run Code Online (Sandbox Code Playgroud)
我在Global.scala中创建了以下简单的解决方法:
override def onRouteRequest(request: RequestHeader): Option[Handler] = {
if (request.path.startsWith("http://")) {
super.onRouteRequest(request.copy(
path = request.path.replace("http://"+request.host, "")
))
} else super.onRouteRequest(request)
}
Run Code Online (Sandbox Code Playgroud)
通过此解决方法,我的客户端的所有请求都得到了正确处理.
那么,在Play Framework中有更简单的方法吗?或者这是唯一的方法吗?
我正在用mongodb编写一个play2.1应用程序,我的模型对象有点广泛.当更新数据库中的条目时,我需要将来自表单的临时对象与数据库中的内容进行比较,这样我就可以构建更新查询(并记录更改).
我正在寻找一种方法来通常采取2个实例并得到它们的差异.迭代每个数据成员是长的,硬编码的和容易出错的(如果a.firstName.equalsIgnoreCase(b.firstName))所以我正在寻找一种方法迭代所有数据成员并水平比较它们(名称的地图 - >值将执行,或者我可以信任的列表,每次都以相同的顺序枚举数据成员).
有任何想法吗?
case class Customer(
id: Option[BSONObjectID] = Some(BSONObjectID.generate),
firstName: String,
middleName: String,
lastName: String,
address: List[Address],
phoneNumbers: List[PhoneNumber],
email: String,
creationTime: Option[DateTime] = Some(DateTime.now()),
lastUpdateTime: Option[DateTime] = Some(DateTime.now())
)
Run Code Online (Sandbox Code Playgroud)
以下所有三个解决方案都很棒,但我仍然无法获得该领域的名称,对吧?这意味着我可以记录更改,但不会记录它影响的字段...
在顶部的回答播放框架2:阅读Build.scala定义的应用程序版本,它的建议,应用程序版本号中规定conf/application.conf
,并在加载Build.scala
通过play.api.Configuration
.我正在使用Play 2.1-RC2
并在构建时收到以下错误消息:
[error] [...]/project/Build.scala:7: object Configuration is not a member of package play.api
[error] val conf = play.api.Configuration.load(new File("."))
Run Code Online (Sandbox Code Playgroud)
我认为这可能是因为Play 2.1构建依赖项必须被指定为SBT的插件,而play.api.Configuration
不是Play的SBT插件的一部分.我猜我必须包含Play的核心库project/plugins.sbt
,但我还没弄清楚如何.有任何想法吗?
(注意:如果我有足够的重复点,本来可以在原始问题中做出评论)
所以我一直试图让IDEA 12.0与Play 2.1.0和Scala 2.10.0一起使用.我只是放弃了,因为它不像我想要的那样对我有用.这是我的一个副本build.properties
,Build.scala
和plugins.sbt
.我按照playframework网站上的方法在idea with-sources=yes
Play控制台中执行.我也尝试添加sbt-idea
插件版本1.3.0-SNAPSHOT,如插件中所示,但是如果我想引用刚刚创建的新视图模板或新路由,似乎没有任何效果.我可以在IDEA中工作的唯一方法是,如果我打开并运行控制台sbt compile
,请返回IDEA,它将刷新自身并识别新的视图模板或路径.
plugins.sbt
logLevel := Level.Warn
scalaVersion := "2.10.0"
// The Typesafe repository
resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"
// Sonatype snapshots to get sbt-idea 1.3.0-SNAPSHOT
//resolvers += "Sonatype snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/"
// Use the Play sbt plugin for Play projects
addSbtPlugin("play" % "sbt-plugin" % "2.1.0")
//addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.3.0-SNAPSHOT")
Run Code Online (Sandbox Code Playgroud)
build.properties
sbt.version=0.12.2
Run Code Online (Sandbox Code Playgroud)
Build.scala
import sbt._
import Keys._
import play.Project._
object ApplicationBuild extends Build …
Run Code Online (Sandbox Code Playgroud) 我应该采取哪些步骤在生产服务器上正确部署Playframework 2.1.1网站?更具体的问题:
1)我应该在我的生产服务器上安装Play吗?
2)在本地使用很明显play run
但在生产中我需要全天候运行它并在服务器重新启动后再次重新启动它.这是怎么回事?一些outostart或什么?
3)如何在mydomain.com(端口80)上的Ubuntu 12.04(Apache2)服务器上部署它?4)我应该为生产更改/添加哪些配置设置以禁用调试等?
我非常感谢有关Playframework 2.1.1的默认部署工作流程的信息
我有一个Reads[T]
.我想解析一个Json对象,该对象应该是一个数组T
.有没有一种简单的方法来获得一个Reads[Seq[T]]
没有定义我Reads[T]
的隐含?基本上,我正在寻找一个获取Reads[T]
和返回的函数Reads[Seq[T]]
.
我遇到过Reads.TraversableReads
,并且认为我可以明确地传递它需要的隐式阅读器,但是这个功能也需要一个CanBuildForm[...]
听起来不太有趣的功能.
我正在尝试使用LESS文件使用Twitter Bootstrap 3设置Play框架2.1.1.
我已经把bootstrap LESS文件放入了app\assets\stylesheets\bootstrap
.
我更新了我的项目配置(Build.scala
),以便只编译主bootstrap.less
文件(导入其他文件):
val main = play.Project(appName, appVersion, appDependencies).settings(
lessEntryPoints <<= baseDirectory(customLessEntryPoints),
javascriptEntryPoints <<= baseDirectory(customJavascriptEntryPoints)
)
def customLessEntryPoints(base: File): PathFinder = (
(base / "app" / "assets" / "stylesheets" / "bootstrap" / "bootstrap.less") +++
(base / "app" / "assets" / "stylesheets" / "*.less")
)
def customJavascriptEntryPoints(base: File): PathFinder = (
(base / "app" / "assets" / "javascripts" * "*.js")
)
Run Code Online (Sandbox Code Playgroud)
我无法编译Bootstrap,我得到以下内容:
Expected )
In ...\app\assets\stylesheets\bootstrap\mixins.less at line 0.
Run Code Online (Sandbox Code Playgroud)
这个问题似乎来自于用分号分隔的mixin参数.当我用逗号替换这些分号时,它可以正常工作.
Play LESS编译器是否需要逗号?我是否需要用逗号替换每个分号,还是可以配置Play …
less twitter-bootstrap playframework-2.1 twitter-bootstrap-3
我有一个Play 2.1.x应用程序,它使用JKS签名.这取决于,运行和可用的domain.com:9443
,我要代理其与nginx的,因为会出现在同一台机器上更多的应用程序,(因此不能只是口运行443
),我增加了nginx的配置中,希望proxy_pass
有https
让我只是代理它到客户端
upstream backend-secure {
server 0.0.0.0:9443;
}
server {
listen 443 ssl;
server_name domain.com;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass https://backend-secure;
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,当https://domain.com
我尝试在浏览器中打开时,我只能登录nginx/error.log
:
服务器在SSL端口握手时定义没有"ssl_certificate",客户端:123.123.123.123,服务器:0.0.0.0:443
有没有办法让它工作或只有选项是使用nginx SSL +使用http
后端的常用方法?
编辑:如果重要的话,这是EV,多域证书.
在scala的play 2中的Book App示例之后,我现在有了一个基本的工作应用程序.我现在想要的是添加一些功能
用户注册
用户验证访问某些页面
在scala中玩这个游戏的最佳方法是什么?我应该自己管理吗?有插件吗?