2012-03-12 75 views
4

我们使用Play!开发了一个小应用程序,它在用户计算机(Windows XP或Windows 7)上独立运行,因为用户没有网络访问权限。目前,它在控制台/命令窗口中运行。我想做到这一点,所以在运行播放的任务栏中没有控制台窗口 - 这主要是因为用户很容易关闭窗口。我提出了一些想法,但我希望得到一些验证或其他想法。玩!框架部署为JAR或服务?

首先,我想通过javaw运行Java,这通常是运行Java应用程序的GUI应用程序运行的,但是我会运行什么?我想我可以运行带有WAR输出的Winstone Servlet容器! (作为下面的其他stackoverflow问题的解决方案提及)。

其次,我正试图把它包装在一个windows服务中。

这个问题是相似,但略有不同的(我不介意安装游戏!刚刚涉及解压缩框架): Deploy Play! application as executable jar

有没有人使用这些技术无论是,还是有更好的办法?优点/缺点/例子?

谢谢!


更新:有关Winstone的评论?事实证明,由于安全限制,我们无法[轻松]创建服务或计划任务(如SYSTEM)。再次感谢。

+0

还有一个类似的问题/答案(http://stackoverflow.com/questions/12120489/how-do-i-run-a-play-framework-2-0-application-as-a-windows-服务),也描述了yajsw方法。 – 2013-01-30 07:53:07

回答

2

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

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

这种方法在我的内部系统上工作了一年多。

+0

是的,我们实际上正在开发环境中尝试这类事情,但我认为我们不能在目标环境中将系统设置为系统。 – 2012-03-13 23:54:06

2

或者,您可以使用yajsw将您的播放应用程序封装为Windows服务。它工作得很好,而且很容易设置。

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

我设法通过在我的doJob方法中添加一个同步块来解决它。 看看here的信息,用于设置玩游戏的yajws。

0

我不确定游戏是否能在winstone上运行。已知可用于游戏的应用服务器列表可以在here找到。

您将需要与您的游戏应用程序战争玩战争myapp -o myapp.war并先测试它。

+0

这是一个很好的观点,我想其中有些是基于Java的,并且可以用javaw很简单地运行 - 我会给Jetty一个尝试。 – 2012-03-17 18:32:35

0

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