使用@before时,它仅用于一个类.如何在playframework中应用全局过滤器?因此,一个过滤器用于所有控制器类.
我有一个在服务器集群上运行的Web服务.此Web服务执行一些内部处理,然后可以调用外部服务,这会产生费用.
我想进行一些缓存,这样如果我收到相同的服务请求(保证会发生),那么我就不必重复处理,既节省了处理时间/功率,也节省了外部部件的成本服务电话.
但是,当我遇到以下约束时,我正在努力弄清楚如何管理这个缓存
在分布式环境中工作时,如何阻止执行其他服务调用,直到第一个服务调用响应(因此在缓存中可用).
我已经考虑过放入一个前端代理模式并在代理中建立一个相同请求的队列,这样当第一次返回时,它也可以向其他请求返回相同的响应.这是正确的模式,还是有更好的并发模式来处理这种情况?
我已经回顾了一些关于SO的Struts 1 vs 2问题,但似乎没有人从我正在考虑的角度回答这个问题.
我即将开始构建一个新系统,对一个非常古老的桌面应用程序进行全面的重新设计.目标是使其基于Web,添加更多功能,使其更有用等(通常的再造原因).
开发该系统的团队主要是Java开发人员,过去5年来一直在Struts 1.x上工作.
该系统计划在未来许多年内存在,因此在更好的框架出现的3 - 5年内再次重新设计的想法不是一种选择.它并不打算大量使用AJAX.
我的问题是,当我的团队对Struts 1.x有如此丰富的经验时,为什么我会费心去Struts 2.我知道有一些改进,但我担心让团队加快速度,因错误使用等而导致返工的时间将远远超过我们从Struts 2获得的任何好处.我们喜欢Struts 1,它做的就是我们需要它,所有的设计模式,标准,最佳实践等都已到位.
Struts 2是否有任何杀手级功能或Struts 1中我不知道的严重问题会影响继续使用Struts 1的决定.
在Play 1中,我可以编写一个扩展PlayPlugin的类,并执行以下操作:
@Override
public void onConfigurationRead() {
Play.configuration.put("logger.application","DEBUG");
}
Run Code Online (Sandbox Code Playgroud)
我没有看到如何在Play 2中执行等效操作.Plugin接口不再具有"on ConfigurationRead"方法.我不确定在onApplicationStart中执行此操作是否安全,即使是这样,我也没有看到如何修改Scala中的Play.configuration对象.
我的问题是:
当我使用以下代码调用json时
var url="http://localhost:9000/json";
$.getJSON(url,
function(data){
alert(data['yay']);
});
Run Code Online (Sandbox Code Playgroud)
它工作正常,但是,我的localhost IP是10.0.0.145,当我用IP地址替换localhost时,它不再有效
var url="http://10.0.0.145:9000/json";
$.getJSON(url,
function(data){
alert(data['yay']);
});
Run Code Online (Sandbox Code Playgroud) 我在客户端有一个javascript对象列表,它是用户执行的"事件"列表.用户准备好后,我想将其发送到服务器.事件的顺序很重要,因此保留列表顺序是必要的.
我想要做的是有一个JSON库(不介意哪一个)将JSON绑定到我的Java代码中的一些Event对象,其中Event是一个抽象类,我有3个具体的类都扩展了Event (比如说EventA,EventB和EventC).
理想的情况就像是
List<Event> events = jsonlibrary.deserialise(jsonString);
Run Code Online (Sandbox Code Playgroud)
其中可能包含诸如的项目列表
[eventA, eventC, eventA, eventA, eventB]
Run Code Online (Sandbox Code Playgroud)
这是可能的,还是我必须手动检查JSON树,并反序列化json数组的各个元素?
我有一个使用Play框架的项目,公司标准是所有项目都应该由Hudson构建.但是,我无法找到如何执行此操作,因为Hudson不遵循任何Java标准,并且需要在运行它的计算机上安装框架.我试图用Maven构建项目(如果我已经管理过这个,将它添加到Hudson应该很简单),但是我没能使它工作.我尝试了Play Maven模块,但Maven声称它没有找到列出的外部仓库(http://nexus.infin-it.fr/content/groups/public).这可能是因为我在防火墙后面.我也尝试了这里列出的配方,但本地maven构建失败,因为它无法找到org.playframework:play:1.1:jar.
有没有人这样做,可以提供一个howto?
我正在尝试打包游戏!针对Java 7构建的应用程序.我收到此错误.此外,我无法从命令行启动应用程序,但从Eclipse可以运行.
D:\Dropbox\eclipseProjectsClassic>play war MyApp -o MyApp.war --zip
~ _ _
~ _ __ | | __ _ _ _| |
~ | '_ \| |/ _' | || |_|
~ | __/|_|\____|\__ (_)
~ |_| |__/
~
~ play! 1.2.3, http://www.playframework.org
~
Listening for transport dt_socket at address: 8000
04:17:03,694 INFO ~ Starting D:\Dropbox\eclipseProjectsClassic\MyApp
Exception in thread "main" java.lang.UnsupportedClassVersionError: DocViewerPlugin : Unsupported maj
or.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at play.classloading.ApplicationClassloader.loadApplicationClass(ApplicationClassloader.java
:158)
at play.classloading.ApplicationClassloader.loadClass(ApplicationClassloader.java:84) … 有,
def test(args: Any*) = args.size
Run Code Online (Sandbox Code Playgroud)
我想根据条件用空参数列表来调用它,但是要避免if/else.
我已经提出了这个解决方案:
test(List("one").filter( _ => condition) : _*)
Run Code Online (Sandbox Code Playgroud)
还有比这更好的方法吗?
有关更多上下文,我正在使用Play 2.0 scala,并且具有以下功能:
user => Redirect(routes.Application.index).withSession("username" -> user._1).withCookies(
List(Cookie("rememberme", Crypto.sign(user._1) + "-" + user._1)).filter(_ => user._3) : _*)
Run Code Online (Sandbox Code Playgroud)
在哪里user._3是rembemberme布尔.
我不想调用withSession或用空参数列表调用它(不是实例化Cookie)如果rememberme是假的,则以scala方式.
谢谢.
我目前正在构建一个 API,我将要求许多开发人员使用它。其中大部分都很简单,但有几个 api 调用本质上很复杂,但应该以几乎样板的方式使用。
我想要做的是在类中生成样板代码,也许通过标记一些注释,但是这些生成的方法在 Eclipse/IntelliJ 中可用,供开发人员查看。我查看了 Javassist,但不确定运行时性质是否是一件好事。我宁愿采用编译时方法。
如果可能,我希望隐藏已实现的代码(即我不希望开发人员尝试更改生成方法的代码,因为它们会在重新编译时被覆盖)。
整个过程都是为了向开发人员和维护人员隐藏处理的复杂性,并将其仅保留在核心框架代码中。