如何从java应用程序创建Windows服务

2023-11-30

我刚刚继承了一个java应用程序,需要将其作为服务安装在XP和vista上。自从我以任何形式使用 Windows 以来,已经有大约 8 年了,我从来没有创建过服务,更不用说像 Java 应用程序这样的东西了(我有一个应用程序的 jar 和一个依赖项 jar - log4j )。使其作为服务运行所需的魔力是什么?我已经有了源代码,因此代码修改(尽管最好避免)是可能的。


Apache 共享守护进程是一个不错的选择。它有Procrun对于 Windows 服务,以及Jsvc对于 UNIX 守护进程。它使用限制较少的 Apache 许可证,Apache Tomcat 使用它作为自身的一部分在 Windows 和 Linux 上运行!要让它工作有点棘手,但是有一个详尽的文章与工作示例。

除此之外,您可以查看 bin\service.bat阿帕奇雄猫了解如何设置服务。在 Tomcat 中,它们重命名 Procrun 二进制文件(prunsrv.exe -> tomcat6.exe、prunmgr.exe -> tomcat6w.exe)。

我在使用 Procrun 时遇到了一些困难,您的启动和停止方法必须接受参数(String[] argv)。例如,“start(String[] argv)”和“stop(String[] argv)”可以工作,但“start()”和“stop()”会导致错误。如果您无法修改这些调用,请考虑创建一个引导程序类来处理这些调用以满足您的需求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从java应用程序创建Windows服务 的相关文章

  • 任务“:app:dexDebug”执行失败

    我目前正在处理我的项目 我决定将我的 Android Studio 更新到新版本 但在我导入项目后 它显示如下错误 Information Gradle tasks app assembleDebug app preBuild UP TO
  • MP3:一种以毫秒为单位获取任何给定字节位置的位置的方法?

    我创建了一个 servlet 它返回从客户端请求的任何给定字节位置开始的流 来自 MP3 文件 这允许客户端在任何给定字节位置立即开始播放 而无需进行任何本地查找 现在 我有一个滑块可以直观地显示进度 我正在使用当前字节位置来更新滑块 但是
  • 检查双精度值的等于和不等于条件

    我在比较两者时遇到困难double values using and 我创建了 6 个双变量并尝试进行比较If健康 状况 double a b c d e f if a b c d e f My code here in case of t
  • 将链接对象转换为流或集合

    我想迭代堆栈跟踪 堆栈跟踪由可抛出对象组成 其 getCause 返回下一个可抛出对象 最后一次调用 getCause 返回 null 示例 a gt b gt null 我尝试使用 Stream iterable 这会导致 NullPoi
  • 无法加载 jar 文件的主类

    我使用 Eclipse IDE 开发了一个应用程序 创建应用程序后 我以 jar 格式导出项目 当我尝试运行此 jar 文件时 出现错误 无法加载主类 请帮忙 当您将项目导出为 jar 时 请参阅此所以问题 https stackoverf
  • Android - 除了普通 SSL 证书之外还验证自签名证书

    我有一个通过 SSL 调用 Web 服务的 Android 应用程序 在生产中 我们将拥有由受信任的 CA 签名的普通 SSL 证书 但是 我们需要能够支持自签名证书 由我们自己的 CA 签名 我已经成功实施了接受自签名证书的建议解决方案
  • PropertySources 中各种源的优先级

    Spring引入了新的注释 PropertySources对于所有标记为的类 Configuration since 4 0 需要不同的 PropertySource作为论证 PropertySources PropertySource c
  • 场景生成器删除 fxml 文件中的导入

    我使用场景构建器 Gluon Scene Builder JavaFX Scene Builder 8 1 1 来创建应用程序的 UI 并使用 Eclipse 开发 JavaFX 现在 每次我在场景生成器中保存某些内容时 它都会从 fxml
  • 使用 java 按电子邮件发送日历邀请

    我正在尝试使用 java 发送每封电子邮件的日历邀请 收件人收到电子邮件 但不会显示接受或拒绝的邀请 而是将该事件自动添加到他的日历中 我正在使用 ical4j jar 构建活动 邀请 private Calendar getInvite
  • 尝试在没有 GatewayIntent 的情况下访问消息内容

    我希望每当我写一条打招呼的消息时 机器人都会在控制台中响应一条消息 但它只是给我一个错误 JDA MainWS ReadThread WARN JDA Attempting to access message content without
  • 具有多种值类型的 Java 枚举

    基本上我所做的是为国家编写一个枚举 我希望不仅能够像国家一样访问它们 而且还能够访问它们的缩写以及它们是否是原始殖民地 public enum States MASSACHUSETTS Massachusetts MA true MICHI
  • 覆盖 MATLAB 默认静态 javaclasspath 的最佳方法

    MATLAB 配置为在搜索用户可修改的动态路径之前搜索其静态 java 类路径 不幸的是 静态路径包含相当多非常旧的公共库 因此如果您尝试使用新版本 您可能最终会加载错误的实现并出现错误 例如 静态路径包含 google collectio
  • 将 RSA 密钥从 BigIntegers 转换为SubjectPublicKeyInfo 形式

    WARNING 最初的问题是关于 PKCS 1 编码密钥 而问题中的实际示例需要SubjectPublicKeyInfo X 509 编码密钥 我目前正致力于在 java 中从头开始实现 RSA 算法 特别是密钥生成方面 现在我的代码可以给
  • 如何为 Jackson 编写一个包罗万象的(反)序列化器

    当您提前知道类型时 编写自定义序列化器非常容易 例如 MyType一个人可以写一个MyTypeSerializer extends StdSerializer
  • 在 Selenium WebDriver 上如何从 Span 标签获取文本

    在 Selenium Webdriver 上 如何从 span 标记检索文本并打印 我需要提取文本UPS Overnight Free HTML代码如下 div id customSelect 3 class select wrapper
  • ExceptionHandler 不适用于 Throwable

    我们的应用程序是基于 Spring MVC 的 REST 应用程序 我正在尝试使用 ExceptionHandler 注释来处理所有错误和异常 I have ExceptionHandler Throwable class public R
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • 来自客户端的超时 Web 服务调用

    我正在使用 RestEasy 客户端调用网络服务 一项要求是 如果调用运行时间超过 5 秒 则中止 超时调用 我如何使用 RestEasy 客户端实现这一目标 我只看到服务器端超时 即如果在一定时间内未完成请求 Rest Easy 网络服务
  • struts 教程或示例

    我正在尝试在 Struts 中制作一个登录页面 这个想法是验证用户是否存在等 然后如果有错误 则返回到登录页面 错误显示为红色 典型的登录或任何表单页面验证 我想知道是否有人知道 Struts 中的错误管理教程 我正在专门寻找有关的教程 或
  • 重写Object类的finalize()方法有什么用?

    据我所知 在java中如果我们想手动调用垃圾收集器 我们可以执行System gc 1 我们在重写的finalize 方法中做了哪些操作 2 如果我们想手动调用JVM垃圾收集器 是否需要重写finalize 方法 我们在重写的 Finali

随机推荐

  • 将变量值传递给锚标记中的 href 参数

    如何将变量值传递给锚标记中的 href 参数 a something here a 我希望锚标记在执行上述代码后看起来像这样 a href http www google com jobid 10 something here a 但不知何
  • 查找并替换对象数组中的部分属性值

    我需要在对象数组中搜索关键字并替换它的所有实例 例如 我有以下数组 const test marketType 90 displayName FT Total Match scoreType Over Under 0 75 Remove m
  • 在WPF中检测鼠标直接越过边框

    我有一个简单的 UserControl 其直接子元素是边框
  • 计算字符串中特定的相同字符的连续出现次数 - PHP

    我正在尝试计算一些 连胜 特别是连续获胜和失败的最高次数 以及大多数没有获胜的比赛 没有失败的比赛的发生次数 我有一个看起来像这样的字符串 WWWDDWWWWLLWLLLL 为此我需要能够返回 A 字符的最长连续运行 然后我将复制 L 没有
  • 从文件中读取并查找特定行

    我需要根据某些关键字获取设置文件中的信息 我无法更改格式 该文件是这样的 username myusername address 156a1355e3486f4 data function i if i 0 return true else
  • 使用 Google Translate API 将 JavaScript 内容翻译为 HTML

    我需要创建一个按钮 能够在法语和英语之间切换页面内容的语言 我如何使用 Google Translate API 来实现此目的 这有帮助吗 div div
  • 如何限制上传图片的宽度或高度

    我想以类似的方式操作 调整图像大小兴趣但我不确定解决这个问题的最佳方法是什么 目标是允许混合纵向和横向图像 但对最大高度和宽度施加一些限制 我看到的问题是 如果我调整宽度 肖像图像可能会变得太薄 而风景图像则相反 关于如何使用 PHP 实现
  • 重构 JSON

    我现在有来自服务器的 JSON 响应 但我想根据日期重组它 例如我现在有 items A name a date 2 10 2010 sales 100 name b date 6 10 2010 sales 400
  • “git分支”和“git checkout -b”有什么区别?

    I used git checkout b创建一个新分支 我觉得git branch做同样的事情 如果这两个命令有不同的话 它们有何不同 git checkout b BRANCH NAME创建一个新分支并签出新分支 同时git branc
  • 我应该设计一个主键为 varchar 还是 int 的表?

    我知道这是主观的 但我想了解人们的意见 并希望在设计 sql server 表结构时可以应用一些最佳实践 我个人认为 在固定 最大 长度的 varchar 上键入表是不行的 因为这意味着必须在使用它作为外键的任何其他表上传播相同的固定长度
  • 如何读取/流式传输文件而不将整个文件加载到内存中?

    如何读取任意文件并 逐个 处理它 意味着逐字节或其他一些可以提供最佳读取性能的块大小 而不将整个文件加载到内存中 处理的一个示例是生成文件的 MD5 哈希值 尽管答案可以适用于任何操作 我想拥有或编写这个 但如果我可以获得现有的代码 那就太
  • PDO 使用键作为列名插入数组

    我正在使用 PDO 将 PHP 数组的 POST 内容插入到表中 我正在查看以下代码行 我有一个 必须有更好的方法来做到这一点 的时刻 如果键名与表中的列名匹配 是否有更简单的方法来插入所有键名 代码例如 statement db gt p
  • 下划线:基于多个属性的sortBy()

    我正在尝试根据多个属性对包含对象的数组进行排序 即 如果两个对象之间的第一个属性相同 则应使用第二个属性来比较这两个对象 例如 考虑以下数组 var patients name John roomNumber 1 bedNumber 1 n
  • 与 AVX/AVX2 一起使用的最低 OS X 版本是什么?

    我有一个图像绘制例程 为 SSE SSE2 SSE3 SSE4 1 SSE4 2 AVX 和 AVX2 编译多次 我的程序通过检查 CPUID 标志来动态调度这些二进制变体之一 在 Windows 上 我检查 Windows 版本 如果操作
  • 在 C 中设置位

    我正在尝试执行以下操作 写一个函数setbits x p n y 返回x with n开始于的位 位置p设置到最右边n的位y 留下其他位 不变 我这样尝试但没有得到正确的答案 谁能告诉我哪里错了 unsigned setbits unsig
  • Android 键盘隐藏 EditText

    当我尝试在屏幕底部的 EditText 中写入内容时 软键盘会隐藏 EditText 我该如何解决这个问题 下面是我的 xml 代码 我在片段中使用它
  • 如何检索 Android 中可用/已安装字体的列表?

    在Java中我会做类似的事情 java awt GraphicsEnvironment ge java awt GraphicsEnvironment getLocalGraphicsEnvironment Font fonts ge ge
  • 命令行参数太多 Terraform 计划

    我是地形新手 我正在尝试通过天蓝色管道创建一个简单的存储帐户 但是当我运行管道时 我收到错误 命令行参数太多 我很震惊 我不知道我做错了什么 有人可以帮忙吗 这是我的计划脚本 script terraform plan out plan t
  • 如何使用占位符将列名值作为 SQL 参数传递

    如何使用参数占位符将列名值作为 SQL 参数传递 目标是让这个工作 var sql SELECT FROM Condos WHERE 0 LIKE 1 var sqlData db Query sql choice searchString
  • 如何从java应用程序创建Windows服务

    我刚刚继承了一个java应用程序 需要将其作为服务安装在XP和vista上 自从我以任何形式使用 Windows 以来 已经有大约 8 年了 我从来没有创建过服务 更不用说像 Java 应用程序这样的东西了 我有一个应用程序的 jar 和一