使用JavaService.exe(amd64)发布java服务(jdk x64)
最近项目中需要使用java服务,但是java服务已经写好了,就等待部署到windows服务中,遇到了种种困难------在x64服务器中部署jdk x64编译的jar时,遇到了各种纠结。
本文找到了一种解决方案(在x64服务器、jdk x64 java环境中部署java服务的解决方案):
首先,我们选测的工具是JavaService.exe,目前最新版本是:2.0.10

下载地址:http://forge.ow2.org/projects/javaservice/
之后,解压下载的

再最后,编译待部署的java服务程序jar包:

再之后,整理部署java服务的目录结构:
1,建立java服务安装目录为:D:\Java_Study\windowsservice\JavaService_2_0_10-amd64
2,拷贝编译好的TestTimer.jar包到服务安装目录的根目录下:D:\Java_Study\windowsservice\JavaService_2_0_10-amd64\TestTimer.jar;
及拷贝TestTimer工程依赖的外部包log4j-1.2.17.jar到服务安装目录的根目录下:D:\Java_Study\windowsservice\JavaService_2_0_10-amd64\bin\log4j-1.2.17.jar;
3,把JavaService_2_0_10-amd64.zip解压出的JavaService.exe文件拷贝到D:\Java_Study\windowsservice\JavaService_2_0_10-amd64\JavaService.exe;
4, 整理install.bat和uninstall.bat。
install.bat:
@echo off
rem 修改控制台颜色
color 1d
rem * 使用JavaService将TestTimer安装为Windows服务的脚本
rem *
rem * JavaService - Windows NT Service Daemon for Java applications
rem * Copyright (C) 2006 Multiplan Consultants Ltd. LGPL Licensing applies
rem * Information about the JavaService software is available at the ObjectWeb
rem * web site. Refer to http://javaservice.objectweb.org for more details.
rem 开始批处理文件中环境改动的本地化操作,在使用endlocal后环境将恢复到原先的内容
SETLOCAL
rem 设置环境变量,指向当前路径
SET BASE_PATH=%CD%
rem 设置Java path: jre_home
SET JRE_HOME=D:\Java_Study\Java\jdk1.7.0_79 rem 判断JRE_HOME是否正确
if "%JRE_HOME%" == "" goto no_java
if not exist "%JRE_HOME%\bin\java.exe" goto no_java rem 设置jvm内存分配情况
set JVM_MEMORY=-Xms128m -Xmx256m
rem 设置jvmdll使用哪一种模式
SET jvmdll=%JRE_HOME%\jre\bin\server\jvm.dll
if not exist "%jvmdll%" goto no_java rem 设置JavaService路径
set JSBINDIR=D:\Java_Study\windowsservice\JavaService_2_0_10-amd64
set JSEXE=%JSBINDIR%\JavaService.exe rem 判断jar是否正确
SET acctjar=%BASE_PATH%\TestTimer.jar
if not exist "%acctjar%" goto no_peer @echo . Using following version of JavaService executable:
@echo .
"%JSEXE%" -version
@echo . rem parameters and files seem ok, go ahead with the service installation
@echo . rem 处理该批处理的输入参数,后台服务启动模式:自动
SET svcmode=
if "%1" == "-manual" SET svcmode=-manual
if "%1" == "-auto" SET svcmode=-auto rem 设置JAVA_OPTS
set JAVA_OPTS=%JAVA_OPTS% -Djava.class.path="%BASE_PATH%\bin\log4j-1.2.17.jar;%BASE_PATH%\TestTimer.jar"
set JAVA_OPTS=%JAVA_OPTS% %JVM_MEMORY% rem 设置startstop
SET START_STOP=-start cn.test.timer.TestTimer rem 设置Log文件路径
set OUT_ERR=-out "%BASE_PATH%\service_out.log" -err "%BASE_PATH%\service_err.log" rem 设置desp
set DESP=-description "TestTimer Service" rem 设置执行命令行
set runcmd="%JSEXE%" -install TestTimerService
set runcmd=%runcmd% "%jvmdll%"
set runcmd=%runcmd% %JAVA_OPTS%
set runcmd=%runcmd% %START_STOP%
set runcmd=%runcmd% %OUT_ERR%
set runcmd=%runcmd% -current
set runcmd=%runcmd% "%BASE_PATH%"
set runcmd=%runcmd% %svcmode%
set runcmd=%runcmd% -overwrite
set runcmd=%runcmd% -startup 6
set runcmd=%runcmd% %DESP%
echo %runcmd% rem 执行安装命令
%runcmd%
rem 启动服务
net start TestTimerService if ERRORLEVEL 1 goto js_error
goto end
:no_java
@echo . 没有Java运行环境,安装脚本不能运行
goto error_exit
:no_peer
@echo . 启动文件TestTimer.jar不存在,安装脚本不能运行
goto error_exit
:no_jsexe
@echo . 可执行文件JavaService.exe 不存在,安装脚本不能运行
goto error_exit
:js_error
@echo . TestTimerService在安装为服务的过程中发生了错误,请检查相关日志文件
goto error_exit
:error_exit @echo .
@echo . 安装失败,不能将 TestTimer安装为Windows服务
@echo .
@echo . 命令格式:
@echo .
@echo . %~n0 [-auto / -manual] [-np]
@echo .
@echo . 其中:
@echo . -auto (默认) or -manual 参数说明了服务的启动模式:自动或者手动
@echo . -np 批处理命令执行完毕后不暂停
@echo .
@echo . 比如:
@echo . %~n0 -auto -np
:end ENDLOCAL
@echo .
if "%2" NEQ "-np" @pause
uninstall.bat
@echo off rem 修改控制台颜色
color 1d rem * 使用JavaService卸载TestTimerService服务的脚本
rem *
rem * JavaService - Windows NT Service Daemon for Java applications
rem * Copyright (C) 2006 Multiplan Consultants Ltd. LGPL Licensing applies
rem * Information about the JavaService software is available at the ObjectWeb
rem * web site. Refer to http://javaservice.objectweb.org for more details. rem 开始批处理文件中环境改动的本地化操作,在使用endlocal后环境将恢复到原先的内容
SETLOCAL rem 设置环境变量
SET BASE_PATH=D:\Java_Study\windowsservice rem 设置JavaService的路径
set JSBINDIR=%BASE_PATH%\JavaService_2_0_10-amd64
set JSEXE=%JSBINDIR%\JavaService.exe rem 卸载服务前先停止服务
net stop TestTimerService rem 设置执行命令行
set runcmd="%JSEXE%" -uninstall TestTimerService %runcmd% @echo . ENDLOCAL
@echo .
if "%2" NEQ "-np" @pause
整理后的目录结构为:

使用JavaService.exe部署Java服务并启动服务:
运行install.bat
运行过程中,如果正行,cmd屏幕信息如下:

安装目录结构变化:

停止并卸载服务:
运行uninstall.bat.
运行过程中,如果正行,cmd屏幕信息如下:

参考文章:《【JavaService】部署Java jar为Windows后台服务 http://blog.csdn.net/alibert/article/details/49944721》
《JavaService将jar发布为windows 服务 http://blog.csdn.net/alibert/article/details/49944823》
使用JavaService.exe(amd64)发布java服务(jdk x64)的更多相关文章
- 05.使用jdk发布webservice服务
无论服务端是用什么写的,使用框架写的还是用jdk写的,它都会发布出来这样一个东西.主要你遵循咱们这七个步骤来走就可以调用了. 咱们现在转换一下角色,自己发布一个服务让别人去调.怎么来发布一个服务? 我 ...
- 【Java Web开发学习】Spring发布RMI服务
[Java 远程服务]Spring发布RMI服务 转载:https://www.cnblogs.com/yangchongxing/p/9084066.html RmiServiceExporter可 ...
- exe 发布为服务
参考连接: https://www.cnblogs.com/liuxiaoji/p/8016261.html 1.有两个文件 srvany.exe,instsrv.exe 然后放到指定的文件下下: 2 ...
- maven javaProject打包发布成服务
1,现在pom.xml中添加打包所需要的jar包. <plugins> <plugin> <groupId>org.apache.maven.plugins< ...
- CXF发布webService服务以及客户端调用
这篇随笔内容是CXF发布webService服务以及客户端调用的方法 CXF是什么? 开发工作之前需要下载CXF和安装 下载地址:http://cxf.apache.org 安装过程: <1&g ...
- So easy Webservice 6.使用EndPoint发布webservice服务
创建第一个Web服务: @WebService // 添加了此注解,代表是一个WebService public class HelloWorld { // 非 static final privat ...
- 使用CXF发布WebService服务简单实例
一.说明: 前面介绍了使用axis2来发布Webservice服务,现在介绍一种更popular,更高效的Webservice服务发布技术:CXF Apache CXF = Celtix + XFir ...
- 使用javaservice 将jboss 注册为服务
近来做项目,需要jboss定期重新启动.不想再看到jboss启动那个黑洞洞的窗口,就想着把它注册为服务,然后在net start.恰好objectweb上有个open source的javaservi ...
- JAVAEE——BOS物流项目07:WebService入门、apache CXF入门、基于CXF发布CRM服务
1 学习计划 1.WebService入门 n 什么是WebService n 调用网络上的WebService服务 n SOAP和WSDL概念 n 基于JDK1.7发布一个简单的WebService ...
随机推荐
- NOIP 2005 青蛙过河
做题记录:2016-08-10 21:58:09 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都 ...
- [深入浅出WP8.1(Runtime)]Toast通知
9.1 Toast通知 Toast通知是在屏幕最顶上弹出来的临时通知,是Windows Phone通用的弹出式短暂的通知,默认的系统消息都是采用Toast通知的形式,比如当你手机收到短信的时候,在手机 ...
- 【BZOJ】3105: [cqoi2013]新Nim游戏
http://www.lydsy.com/JudgeOnline/problem.php?id=3105 题意:k堆火柴,先手和后手在第一次拿的时候都能拿若干整堆火柴(但不能拿完),之后和nim游戏规 ...
- 【HDU】3516 Tree Construction
http://acm.hdu.edu.cn/showproblem.php?pid=3516 题意:平面n个点且满足xi<xj, yi>yj, i<j.xi,yi均为整数.求一棵树边 ...
- 通过data:image/png;base64把图片直接写在src里
从网上下了个源文件查看时候发现了引用图片的地址不是在本地上的,而是后面跟了一大串字符data:image/png;base64...查了一下资料分析如下: 关于用base64存储图片 网页上有些图片的 ...
- 【异常】java.lang.NoClassDefFoundError: com/lowagie/text/pdf/PdfContentByte
异常信息: java.lang.NoClassDefFoundError: com/lowagie/text/pdf/PdfContentByte at com.star.sms.busines ...
- bg,fg,ctrl+z组合
使用ctrl + Z 把一个进程挂起 [root@limt ~]# sh Testlsof.sh >111.log ^Z [1]+ Stopped sh Testlsof.sh > 111 ...
- PHP递归小例子
$news = M('productbase'); function digui($idd){ $child=M('navclass')->where('f_id='.$idd)->sel ...
- Linux文件/目录权限设置命令:chmod
文件/目录权限设置命令:chmod 这是Linux系统管理员最常用到的命令之一,它用于改变文件或目录的访问权限.该命令有两种用法: 用包含字母和操作符表达式的文字设定法 其语法格式为:chmod [w ...
- jquery控制文字内容溢出用点点点(…)省略号表示
jQuery限制字符字数的方法 $(function(){ //限制字符个数 $(“.text”).each(function(){ var maxwidth=23; if($(this).text( ...