Tag: playframework

Play Framework:为Spring RabbitMQ监听器手动打开JPA上下文

我正在使用Spring-AMQP来监视Play应用程序中的RabbitMQ消息队列。 问题是我无法从侦听器代码访问我的数据库,因为JPA上下文未在此范围内打开。 我理解Play Framework管理JPA上下文,以便在处理HTTP请求时打开它,但有没有办法可以从外部Play控制器/作业中使用JPA?

使用videojs在播放框架中流式传输video

最近我和我的朋友一起在播放框架1.2.4中的web应用程序上工作,我们尝试使用videojs播放器流式传输存储在项目的/ public目录中的video。 这个video是.mp4格式,但我想这与这个问题无关。 我们直接访问video而不使用任何服务器端脚本。 我们在测试期间发现了2个问题。 video从未被缓存到最后。 只有几秒钟的时间总是存储在缓冲区中。 播放video时,如果我们按下暂停然后播放,则video的播放将完全中断。 有时它会永远缓冲video,有时它会继续播放video,但它只显示黑屏而没有声音。 当我们对不存储在Web应用程序中的文件尝试相同的videojs脚本,但是从其他一些服务器提供服务时,它可以完美地工作。 即使其他服务器只是在同一台计算机上运行tomcat。 因此,我建议这必须是服务器播放用于运行其应用程序的问题。 我们使用“play run”命令和默认配置运行应用程序。 谁能解释这种奇怪的行为? 是否需要在配置中设置某些内容,或者这只是一个错误? 谢谢。

玩2.5:在自定义http动作中获取响应体

我正在尝试使用Play 2.5.0 Java创建自定义http操作( https://playframework.com/documentation/2.5.x/JavaActionsComposition )来记录请求和响应主体。 这是我到目前为止所得到的: public class Log extends play.mvc.Action.Simple { public CompletionStage call(Http.Context ctx) { CompletionStage response = delegate.call(ctx); //request body is fine System.out.println(ctx.request().body().asText()) //how to get response body string here while also not sabotaging http response flow of the framework? //my guess is it should be somehow possible to access it below? […]

为什么我的PlayFramework应用程序会超时很长?

我已经创建了一个有效的应用程序,但有时当我更改内容并在浏览器中点击“重新加载”-Button时,应用程序需要永远超时(300000毫秒或5分钟! )。 之后,我在浏览器中收到以下exception: java.util.concurrent.TimeoutException: Futures timed out after [300000 milliseconds] scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:219) scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:223) scala.concurrent.Await$$anonfun$result$1.apply(package.scala:111) scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53) scala.concurrent.Await$.result(package.scala:111) play.forkrun.ForkRun$$anonfun$askForReload$1.apply(ForkRun.scala:123) play.forkrun.ForkRun$$anonfun$askForReload$1.apply(ForkRun.scala:121) play.runsupport.Reloader.reload(Reloader.scala:295) play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:122) play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scalscala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) scala.concurrent.forkjoin.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1361) scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) 控制台中的错误: [error] application – [info] [info] ! Internal server error, for (GET) [/] -> [info] [info] java.util.concurrent.TimeoutException: Futures timed out after [300000 milliseconds] [info] at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:219) ~[scala-library-2.11.1.jar:na] [info] at […]

如何在play 2.0.1中更改上传的文件目录?

我试图在我的application.conf文件中指定attachments.path属性,但这没有任何影响。 在play 2.0.1的文档中,我没有找到解释如何更改上传文件目录的任何内容。 我错过了什么吗?

Playframework:如何在特定操作上禁用会话/ cookie?

对于特定的控制器操作,我想关闭cookie。 我试图删除cookie Map,但这似乎不起作用。 我需要完全删除除我自己以外的所有响应标头。 有任何想法吗?

Play Framework 2.1(Java)eBean @Encrypted Annotation Errors

我正在尝试在字符串字段上为数据库模型使用eBean @Encrypted批注。 文档使它看起来很简单,但是我在浏览器中使用内置的H2内存数据库获得了一个非常模糊的运行时错误: package models; import java.util.*; import javax.persistence.*; import play.db.ebean.*; import play.db.ebean.Model.Finder; import play.data.format.*; import play.data.validation.*; import com.avaje.ebean.*; import com.avaje.ebean.annotation.*; @Entity public class Test extends Model { @Id public Long id; @Encrypted public String identifier; } 生成与@Encrypted批注相关的以下运行时错误: Unexpected exception RuntimeException: Error reading annotations for models.Test No source available, here is the exception stack trace: […]

JPA EntityManager:merge()试图在db中创建一个新行 – 为什么?

我通过Play Framework使用JPA。 我正在检查是否缓存了User对象,如果是,我将检索它并merge()它以便我可以更新字段并稍后保存更改: user = (User) Cache.get(“user-auth-” + sessionAuthToken); if (user != null) { user = user.merge(); // I believe this is the same as EntityManager.merge() } 但是,当我这样做时,我收到以下错误: PersistenceException occured : org.hibernate.exception.ConstraintViolationException: could not insert: [models.User] … Caused by: com.mysql.jdbc.exceptions.jdbc4. MySQLIntegrityConstraintViolationException: Duplicate entry ‘1235411688335416533’ for key ‘authToken’ 它似乎试图插入一个新用户,即使该用户应该是,并且已经在数据库中。 为什么merge()会这样做? 或者也许我会以完全错误的方式解决这个问题 – 建议会受到赞赏。

如何启动两个播放应用程序实例?

我正在尝试在不同的端口部署相同播放应用程序的两个实例,然后通过前面的nginx进行负载平衡。 根据手册 ,要启动多个播放实例,这些是命令。 $ start -Dhttp.port=9998 $ start -Dhttp.port=9999 但是,如果我给出了这些,第一个命令正确地在端口9998中启动我的应用程序,但第二个命令无法通过提供以下消息来执行此操作。 This application is already running (Or delete /play/app/folder/RUNNING_PID file) 我正在使用Ubuntu 12.05。 那么,如何启动单个播放实例的多个实例?

Play Framework – 如何从超类inheritance?

我有一个扩展Model的User类,以及我想扩展User类的两个类。 User.java: @Entity @Table(name = “users”) public class User extends Model implements RoleHolder { private static final long serialVersionUID = 1L; @Id public Long id; … Driver.java: public class Driver extends User { … Customer.java: public class Customer extends User { … 编辑需要直接访问所有三个实体。 换句话说,我有用户,客户和司机; 客户和驱动程序碰巧共享用户的所有属性。 因此,我需要有一个有效的用户实体以及客户和驱动程序。 我需要能够获得所有用户(包括客户和驱动程序)的列表。 我无法弄清楚如何在Play中使用ebean来完成这项工作。 我怎样才能做到这一点?