Play!框架部署为JAR包或服务?

4
我们使用play!开发了一个小应用程序,它可以在用户的计算机上独立运行(Windows XP或Windows 7),因为用户没有网络访问权限。目前,它在控制台/命令窗口中运行。我希望能够使它不在任务栏中显示控制台窗口,因为用户往往会关闭该窗口。我想到了几个解决方案,但我希望能得到一些验证或其他想法。
首先,我考虑使用javaw来运行Java,这通常是运行Java GUI应用程序的方式。但是我应该运行什么?我想我可以使用play!的WAR输出运行Winstone Servlet容器(在下面的另一个stackoverflow问题中提到的解决方案)。
其次,我考虑尝试将其包装在Windows服务中。
这个问题类似,但略有不同(我不介意安装play!,这只涉及解压框架):Deploy Play! application as executable jar 有人使用过这两种技术吗?还是有更好的方法?优缺点/示例?
谢谢!
更新:关于Winstone有什么评论吗?由于安全限制,我们将无法[轻松地]创建服务或计划任务(作为SYSTEM)。再次感谢。

有一个类似的问题/答案,也描述了yajsw的方法。 - jl.
4个回答

2

我曾为几个应用程序做过类似的事情。我所执行的步骤是

  1. 创建一个启动play应用程序的批处理文件。这可以简单地使用 play runplay start 实现。
  2. 创建一个计划任务,在系统启动时执行,使用 SYSTEM 作为用户配置文件来运行该命令。

这种方法在我的内部系统上已经运行了一年多的时间。


是的,我们实际上正在我们的开发环境中尝试这种事情,但我认为我们将无法在目标环境中设置计划任务作为系统。 - Eve Freeman

2

或者您可以使用yajsw将您的play应用程序包装为Windows服务。它运行良好且易于设置。

我遇到的唯一问题是,在运行Windows Server 8 R2的某个计算机上,当调度程序启动时,一些作业会被复制。我不确定它是否直接与yajws相关,并且我无法在具有相同设置的其他环境中重现错误。

我通过在我的doJob方法中添加同步块来解决了这个问题。 在这里查看有关使用play设置yajws的信息。


0

我不确定play是否能在winstone上运行。已知与play兼容的应用服务器列表可以在这里找到。

你需要使用play war myapp -o myapp.war将你的play应用程序打包成war文件,并先进行测试。


这是一个很好的观点,我想其中有几个是基于Java的,并且可以通过javaw轻松运行--我会尝试使用Jetty。 - Eve Freeman

0
我最终创建了一个批处理文件,运行“play run”,以及一个可运行的JAR文件,调用“start /B runPlay.bat”作为系统调用。这样,控制台窗口根本不会启动。到目前为止,它运行得非常好。似乎有各种各样的解决方案,但这个相当简单。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接