关于用wrapper将一个jar包转换成NT服务的问题

egg13 2006-07-17 10:41:45
jar包可以单独运行成功
wrapper也可将jar包安装成NT服务
但是在启动服务的时候总是出现以下报错

INFO | wrapper | 2006/07/17 21:24:58 | Waiting to start...
INFO | wrapper | 2006/07/17 21:25:03 | Waiting to start...
INFO | wrapper | 2006/07/17 21:25:08 | Waiting to start...
ERROR | wrapper | 2006/07/17 21:25:29 | Startup failed: Timed out waiting for a signal from the JVM.
------------------------------------------------------------------------
ADVICE | wrapper | 2006/07/17 21:25:29 |
ERROR | wrapper | 2006/07/17 21:25:29 | JVM did not exit on request, terminated
FATAL | wrapper | 2006/07/17 21:25:29 | There were 5 failed launches in a row, each lasting less than 300 seconds. Giving up.
FATAL | wrapper | 2006/07/17 21:25:29 | There may be a configuration problem: please check the logs.
STATUS | wrapper | 2006/07/17 21:25:29 | <-- Wrapper Stopped


查询了下资料
说可能会有程序泄漏
或者JVM正在做前面的垃圾收集
但是我在运行的时候机器的资源还有非常的多
后来尝试写了一个hellpworld简单的jar做测试
还是同样的错误

但是用wrapper自带的测试程序确可以启动成功

在下甚是迷惑
还望高手指点
...全文
867 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
egg13 2006-07-19
  • 打赏
  • 举报
回复 1
问题解决

需要在有main()函数的class中
添加关于wrapper管理的相关程序

需要将wrapper相关的启动,停止方法嵌入这个class中
而不是像先前直接拿个jar就做服务

若想将一个jar用wrapper转换成NT服务
需要重写带有main()的class

以下是基本结构实例
希望对于和我碰到相同问题的人有所帮助

------------------------------
import org.tanukisoftware.wrapper.WrapperActionServer;
import org.tanukisoftware.wrapper.WrapperManager;
import org.tanukisoftware.wrapper.WrapperListener;
import org.tanukisoftware.wrapper.event.WrapperEventListener;

public class HelloWorld implements WrapperListener{

private HelloWorld() {
}

public Integer start( String[] args ){
System.out.println( "start()" );

try{
System.out.println("HelloWorld!");
}
catch ( Exception e ){}
return null;
}

public int stop( int exitCode ){
System.out.println( "stop(" + exitCode + ")" );
return exitCode;
}

public void controlEvent( int event ){
System.out.println( "controlEvent(" + event + ")" );
}

public static void main( String[] args ){
System.out.println( "Initializing..." );
WrapperManager.start( new HelloWorld(), args );
}
}
egg13 2006-07-18
  • 打赏
  • 举报
回复
JRE应该没有问题
因为我还写其他的的JAVA程序
都是可以运行的

D:\> service /test
敲了命令
一直都没有反应
没有返回错误
也没有返回什么数据

我开另一个窗口
做telnet localhsot 1234
来测试service
返回无法连接

对于TCP 端口的问题
我不是很清楚
这台机子也没有装防火墙

有点怀疑是否是我程序的问题
低调的小青蛙 2006-07-18
  • 打赏
  • 举报
回复
如果 "例子做测试" 都不能成功,会不会是 JRE 环境的问题?

使用 RegExLab 上的 jar2exe 生成的 service.exe 例子,可以使用

D:\> service /test

的方式测试运行,你看是否能够成功启动。另外,你的服务要占用的 TCP 端口,是不是已经被占用了。
egg13 2006-07-18
  • 打赏
  • 举报
回复
回 sswater(光杆兵)

我用你说的jar2exe试验了下

无法启动成功
我又下载了http://www.regexlab.com/jar2exe/上的例子做测试
还是不能成功

不知道时候是系统的问题
但是其他的服务还是可以正常的停止或者启动
wrapper自带的测试例子也是可以正常的停止或者启动

不知道是哪里出现了问题
weky 2006-07-18
  • 打赏
  • 举报
回复
帮顶以下~~~
低调的小青蛙 2006-07-18
  • 打赏
  • 举报
回复
将 java 程序封装成 NT 服务,推荐使用 "中文界面" 的工具:
http://www.regexlab.com/jar2exe/
免费工具(稳定运行的 NT 服务收费)

也就是说,调试运行期间,完全免费
ttaallkk1 2006-07-18
  • 打赏
  • 举报
回复
mark
zhmt 2006-07-18
  • 打赏
  • 举报
回复
mark,友情up
kingdoom 2006-07-17
  • 打赏
  • 举报
回复
关注下
yyjzsl 2006-07-17
  • 打赏
  • 举报
回复
关注,学习下...

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧