我刚刚继承了一个java应用程序,需要在XP和vista上作为服务安装。我已经8年没有使用任何形式的windows了,我从来没有创建过服务,更不用说从java应用程序(我已经为应用程序准备了一个jar和一个依赖jar - log4j)。使其作为服务运行所必需的魔力是什么?我已经得到了源代码,所以代码修改(尽管最好避免)是可能的。
当前回答
我目前需要运行一个基于eclipse的应用程序,但我需要先设置一些应用程序本地的变量。sc.exe只允许可执行文件,不允许脚本,所以我转向了Windows 2003资源包中的autoexnt.exe。它将服务限制为单个批处理文件,但我只需要将一个批处理脚本转换为服务。
嗨!
其他回答
使用“winsw”,它是为Glassfish v3编写的,但通常与Java程序一起工作得很好。
要求安装。net运行时。
另一个不错的选择是FireDaemon。它被一些大公司使用,比如NASA、IBM等;他们的网站上有完整的列表。
使用Java 8,我们可以在没有任何外部工具的情况下处理这种情况。Java 8附带的Javapackager工具提供了一个创建自包含应用程序包的选项:
原生类型 生成自包含的应用程序包(如果可能的话)。使用-B选项为正在使用的绑定器提供参数。如果指定了type,则只创建该类型的bundle。如果没有指定类型,则使用all。
以下值对type有效:
-native type
Generate self-contained application bundles (if possible). Use the -B option to provide arguments to the bundlers being used. If type is specified, then only a bundle of this type is created. If no type is specified, all is used.
The following values are valid for type:
all: Runs all of the installers for the platform on which it is running, and creates a disk image for the application. This value is used if type is not specified.
installer: Runs all of the installers for the platform on which it is running.
image: Creates a disk image for the application. On OS X, the image is the .app file. On Linux, the image is the directory that gets installed.
dmg: Generates a DMG file for OS X.
pkg: Generates a .pkg package for OS X.
mac.appStore: Generates a package for the Mac App Store.
rpm: Generates an RPM package for Linux.
deb: Generates a Debian package for Linux.
在windows的情况下,参考以下文档,我们可以根据需要创建msi或exe。
exe: Generates a Windows .exe package.
msi: Generates a Windows Installer package.
我在Java服务包装器方面有一些运气
还有一个答案是“另一个Java服务包装器”,这似乎是Java服务包装器的一个很好的选择,因为它有更好的许可。它的目的还在于便于从JSW迁移到YAJSW。当然,对于我这个刚刚接触windows服务器并试图让Java应用程序作为服务运行的人来说,它非常容易使用。
我发现了一些其他的,但最终没有使用:
Java服务启动器我没有使用它,因为它看起来比YAJSW更复杂。我觉得这不是包装。 JSmooth创建窗口的服务不是它的主要目标,但可以做到。我没用这个,因为从2007年开始就没有活动了。
推荐文章
- Mockito中检测到未完成的存根
- 我应该如何复制字符串在Java?
- “while(true)”循环有那么糟糕吗?
- 这个方法签名中的省略号(…)是干什么用的?
- .msi和setup.exe文件之间的具体区别是什么?
- Java:如何测试调用System.exit()的方法?
- 带有返回类型的Java方法在没有返回语句的情况下编译
- Java“此语言级别不支持lambda表达式”
- “Java”不能被识别为内部或外部命令
- JPA:如何将本机查询结果集转换为POJO类集合
- 日历日期为yyyy-MM-dd格式的java
- 在IntelliJ IDEA中导入Maven依赖项
- 在Java中转换float为String和String为float
- 将double类型转换为字符串
- Java关联数组