问题标签 [java-service-wrapper]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 在机器启动期间测量java服务性能?
我们有几个使用 Tankui 的 java 服务包装器作为 Windows 服务运行的 java 应用程序。我们的客户在机器启动时(前 30 秒)遇到了可扩展性问题。
传统上,我们使用 jconsole/visualvm 来监控 Java 虚拟机的运行状况。但是这些工具对于在机器启动期间捕获 java.exe 性能并不是很好。
我用谷歌搜索了一个答案,我发现最好的搜索结果是一篇题为“测量 Java 虚拟机的启动时间”的论文,但他们求助于使用 JNI 调用来检测应用程序http://www.mii.lt/ olympiads_in_informatics/pdf/INFOL073.pdf。我们更喜欢侵入性较小的方法。
什么是能够在机器启动期间捕获 java.exe 统计信息(线程计数、堆使用等)的良好外部工具或技术?
@djmorton 要求定义可扩展性问题。问题是当应用程序监控 100 个系统对象时,一切都很好。但是当数据增加到 1,000 个系统对象时
- 1,100 个 JVM 线程同时运行
- 线程 X 在 Java 读写锁上持有写锁 C1 正忙于使用 Hibernate/c3p0/JDBC/MySQL 更新系统对象的一部分
- 线程 Y 持有结构 P 的 JVM 对象内在锁,正在等待获取 Java 读写锁 C1 上的读锁,以使用 Hibernate/c3p0/JDBC/MySQL 从数据库中读取系统对象的另一部分
- 线程 Z 正在等待获取结构 P 的 JVM 对象内在锁。
java - 如何从 jar 文件创建 windows 服务以及如何从另一个 jar 文件调用它?
我有一个为特定目的而构建的 jar 文件(主 jar)。它获取数据作为输入并将输出存储为特定格式的文件。我有另一个 Java 应用程序(二级 jar),用于通过用户界面进行二级分析。辅助 jar 使用主 jar 进行某些分析。
目前:主jar在辅助jar启动时启动,在辅助jar关闭时停止。但我想将主 jar 创建为服务,以便它一直运行,辅助 jar 只是将作业提交给主 jar 服务。
问题:我已经搜索并找到了将 jar 文件包装到 Windows 服务中的方法。但是如何从辅助 jar 应用程序与正在运行的服务进行通信,向它发送数据呢?
service - 通过在 UBUNTU 中执行 JAR 文件来创建服务
我正在尝试通过在 Ubuntu 机器中执行 jar 文件来创建服务。我用下面的代码创建了一个包装器
但我坚持使用PID_PATH_NAME
. 这个PID是什么,我需要做什么来配置/创建/修改这个?请帮我。
maven - 使用 appassembler 作为守护程序脚本运行 apache-camel 路由在重新启动期间失败
我有一个 apache 骆驼路由,它使用 appassembler 将路由作为 linux(redhat) 服务运行。我创建了一个指向服务包装器的符号链接作为 /etc/init.d/daemon-science。当我尝试将符号链接作为服务运行时,它工作正常,但是当我重新启动时,它没有指向正确的文件夹。
wrapper.log 显示错误:致命 | 包装 | 2015/06/25 14:02:37 | 无法解析配置文件的完整路径,/etc/etc/wrapper.conf: No such file or directory
我的 pom.xml 有一个条目
不知何故,服务包装器的 BASEDIR 部分在重新启动期间获得了不同的路径:
我可以手动更改 BASEDIR 的值,但是当我重新编译时,我需要再次手动更改 BASEDIR。
应该是 BEDIR ="${project.build.directory}/generated-resources/appassembler/jsw/daemon-science"
有没有办法修复错误?
提前致谢。
linux - 如何为使用 java 服务包装器的进程禁用 linux OOM 杀手?
我们遇到了一个问题,即由于 CentOS 上开箱即用的过度使用内存设置,内存不足杀手正在杀死我们的进程。
在研究了很多之后,我认为最好的办法是告诉 OOM 杀手永远不要杀死进程,如下所述:http ://www.oracle.com/technetwork/articles/servers-storage-dev/ oom-killer-1911807.html
为此,我们需要在启动后执行以下命令:
回声 -17 > /proc/{pid}/oom_adj
我认为这可以作为 *.sh 脚本的一部分来完成,该脚本通过 java 服务包装器执行,但我不确定如何执行此操作(主要是我可以在该脚本中放置有效逻辑的位置)。我希望在此之前有人可能会提供帮助。
谢谢!
gradle - 使用 Gradle 创建 Tanuki 脚本
我正在从 Maven 迁移到 Gradle。但是,我被困在 Tanuki(Java 服务包装器)脚本的生成上。
Maven为此提供了一个插件,但是我看不到如何使用gradle创建脚本。
java - Java Server Wrapper (tanuki) - 启动失败:等待来自 JVM 的信号超时
我正在尝试使用Tanuki Java Service Wrapper
.
设置和配置工作正常,但在通过包装器启动我的应用程序(也可以工作)后,它会在一段时间后关闭,因为包装器“等待来自 JVM 的信号时超时”。
我的应用程序在启动后工作,但仍然被关闭。
我目前仍处于设置/测试阶段,所以我只是通过bat
文件启动包装器,而不是作为 Windows 服务。
我有两个想法为什么会这样:
1)主线程在启动其他几个线程后终止。我试图让主线程永远等待而不是终止,但这没有帮助(除了我猜包装器也应该在没有主线程的情况下工作)。
2)我的程序主要是在等待事件(目录监视服务),但即使我触发了一些事件,它仍然会被关闭。
我试图通过禁用 JVM ping 检查,wrapper.ping.timeout=0
但这也不起作用,如果我有检查以防应用程序真的挂起,那就太好了。
我正在使用jdk1.7.0_79
和wrapper-windows-x86-32-3.5.27
。
java - How to detect a user login using Java Service Wrapper
I have created a Java application and used Java Service Wrapper method 3 that implements the WrapperListener to convert it to a Windows Service.
The WrapperManager can be used to identify various events that get raised and caught in the wrapper listener controlEvent function, this includes a user logging off, however doesn't have a user login event.
Is there a way I can detect a user logging in to the system and perform some kind of action in my Java application? If not, is there a way to detect a spike in CPU usage that I can use to make an assumption of a user logging in? This is required because my application needs to perform some action when a user logs in.
java - File.exists() 使用 javaservice.exe 返回 false
我有以下 Java 代码来检查远程目录是否存在:“\\server_web\\Covers”
通过命令行或 .Bat 文件执行时效果很好,但是如果我使用JavaService.exe将 java 类包装在 Windows 服务中,则 File.exists() 方法返回 false;
如果使用本地路径,则不会出现此问题。
这是JavaService.exe 错误?
JavaService.exe 版本:2.0.10.0 平台:Windows 2008 Java 版本:8.0_40
java - 使用管理员用户运行 javaservice
我有一个 Java 应用程序,我想使用JavaService包装器运行它。
该服务在不使用 -user 参数时运行良好(使用默认用户作为本地系统)。
出于权限原因,我需要使用管理员用户作为服务的所有者,但是当我启动它时会出现以下消息。
翻译:由于登录错误,无法启动服务。
service.exe 安装命令如下:
JavaService.exe -install "ServiceName" "%JAVA_HOME%\bin\client\jvm.dll" -start "ServiceClass" -user ".\Administrador" -password "1234"
更新:如果我使用 services.msc 控制台更改服务的用户,结果是一样的。