一、前言                            

由于防止维护人员误操作关闭Java控制台程序,因此决定将其改造为以Windows服务的形式运行。弄了一个上午总算搞定了,下面记录下来,以供日后查阅。

二、Java Service Wrapper                  

官网地址:http://wrapper.tanukisoftware.com/doc/english/download.jsp

JavaServiceWrapper以守护进程或windows服务的方式运行java程序。JSW提供四种方案改造原有项目,以实现守护进程或windows服务的方式运行。而且还提供JVM监控功能和自动重启功能,反正十分强大的样子。

  方式1:WrapperSimpleApp

  用于通过同一个类实现启动和关闭的程序。
  官方推荐使用该方式加工原有项目,好处是简单,且不用修改原有项目的代码。

  步骤1:下载并解压得到工具包,目录结构如下    

    /
    |-- bin,wrapper控制windows服务的bat文件
    |-- conf,wrapper配置文件
    |-- doc,教程
    |-- lib,wrapper的依赖包
    |-- logs,日志
    |-- src,模板
      |-- conf
      |-- bin

步骤2:搭建项目结构:新建项目发布目录(假设为agent),然后将src下的conf和bin复制到agent下,并且将conf和bin下的文件重命名,去掉`.in`后缀。然后将bin/wrapper.exe复制到agent/bin/下,再将lib复制到agent下,得到目录结构如下

    agent
     |-- lib
         |-- wrapper.dll
       |-- wrapper.jar
       |-- conf
         |-- wrapper.conf
       |-- bin
       |-- wrapper.exe
       |-- 一堆bat文件
     最后将原有项目的文件复制到bin目录下。

步骤3:配置agent/conf/wrapper.conf的参数

# 配置java命令路径
wrapper.java.command=jre/bin/java # 配置CLASSPATH路径(并不会修改全局的环境变量)
# 若原有项目还依赖其他jar包,均需要添加进来
wrapper.java.classpath.=../lib/wrapper.jar
wrapper.java.classpath.=. # 配置lib路径
wrapper.java.library.path.=../lib # 配置服务的main class(就是原有项目的程序入口类)
wrapper.app.parameter.=agent.Daemon # 配置wrapper日志文件
wrapper.logfile=logs/Agent.log # 配置系统服务名称
wrapper.ntservice.name=AgentService # 配置系统服务显示的名称
wrapper.ntservice.displayname=AgentService # 配置系统服务描述
wrapper.ntservice.description=AgentService # 配置系统服务的启动方式,取值范围是AUTO_START或DEMAND_START
wrapper.ntservice.starttype=AUTO_START # 配置内存溢出则重启服务
wrapper.filter.trigger.=Exception in thread "*" java.lang.OutOfMemoryError
wrapper.filter.allow_wildcards.=TRUE
wrapper.filter.action.=RESTART
wrapper.filter.message.=The JVM has run out of memory.

步骤4:安装、卸载服务

点击对应的Install.bat和Uninstall.bat即可。

  2. 方式2:WrapperStartStopApp

  用于像tomcat那样,启动程序和关闭程序是分开的项目。该方式同样不用修改原来项目的代码。

  3. 方式3:WrapperListener

  该方式需要修改原来项目的代码,但最灵活。

  4. 方式4:WrapperJarApp

  用于原有项目已经打包为jar或war包的情况,配置方式与`WrapperSimpleApp`相似,但`wrapper.app.parameter.1=jar或war包路径`。该方式同样不用修改原来项目的代码

三、总结                                

官方文档以JBOSS为例子说明WrapperSimpleApp的使用,十分不好懂,幸好有前人记录实操过程我才从苦海得救,感谢感谢。

尊重原创,转载请注明来自:http://www.cnblogs.com/fsjohnhuang/p/4019267.html  ^_^肥仔John

四、参考                                

http://blog.csdn.net/arjick/article/details/4526392

最新文章

  1. sql 递归子查询
  2. 本地 Maven项目部署到Nexus Repository
  3. Design pattern---观察者模式
  4. jquery 操作select
  5. 纯css3代码写九宫格效果
  6. c - 每位数字尾部加空格
  7. JAVA基金会 (三)反射 反思的深度分析
  8. Markdown 编写规范
  9. vi代码智能提示功能及相关配置
  10. 使用cobbler工具实现centos 6,7系统的自动化安装
  11. Asp.net Core 项目中如何使用 MongoDB 数据库
  12. git 的简单实用
  13. POJ 3190
  14. Eclipse配置python开发环境
  15. C# 结合 using 语句块的三种实用方法
  16. ElasticSearch 入门
  17. webstrom的热更新没效果
  18. js 基础数据类型和引用类型 ,深浅拷贝问题,以及内存分配问题
  19. 2018.09.27 codeforces1045D. Interstellar battle(期望dp)
  20. 4.Java基础:Java对象的内存管理机制

热门文章

  1. Maven 简单配置gpg
  2. pgpgin|pgpgout|pswpin|pswpout意义与差异
  3. asp.net 后台实现删除,划掉效果
  4. C# 模拟鼠标(mouse_event)
  5. Sublime Text 使用技巧
  6. Google 面试题:Java实现用最大堆和最小堆查找中位数 Find median with min heap and max heap in Java
  7. Swift 通用类型和通用函数 | Generic type and function
  8. T-SQL 公用表表达式(CTE)
  9. HTML5应用程序缓存Application Cache详解
  10. 理解RxJava:(三)RxJava的优点