欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
將Java程序注冊成系統服務(wù) java service wrapper詳解
http://wrapper.tanukisoftware.com/doc/english/integrate-simple-win.html

看完這個(gè)文章不用看下面了:

自已的模塊


######設置路徑,可不設置,主要是java_home,如你已經(jīng)在環(huán)境變量中設置了就不用了。

set.JAVA_HOME=C:\Program Files\Java\jdk1.6.0_06
###調用 java.exe來(lái)執行你的程序的,引入java.exewrapper.java.command=%JAVA_HOME%/bin/java
###這個(gè)是幫助類(lèi)方式實(shí)現的醳本,先加載幫助類(lèi),再在第一個(gè)參數這里加載自已類(lèi)的MAIL方法。這個(gè)參數在最后一行設置,請你跳到最后一行查看。# Java Main class.wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
##程序運行使用的其它包# Java Classpath (include wrapper.jar)wrapper.java.classpath.1=%JBOSS_HOME%/bin/run.jarwrapper.java.classpath.2=%JAVA_HOME%/lib/tools.jarwrapper.java.classpath.3=%JBOSS_HOME%/lib/wrapper.jar
##程序運行的庫,其實(shí)就是那個(gè)dll。這里有32和64版的注意一下就行# Java Library Path (location of Wrapper.DLL or libwrapper.so)#For 32-bit architectureswrapper.java.library.path.1=%JBOSS_HOME%/bin/native/lib#For 64-bit architectures#wrapper.java.library.path.1=%JBOSS_HOME%/bin/native/lib64# Java Bits.  On applicable platforms, tells the JVM to run in 32 or 64-bit mode.wrapper.java.additional.auto_bits=TRUE
##若你在運行之前要進(jìn)行的參數,若沒(méi)有請忽略。# Java Additional Parameters# JVM settingswrapper.java.additional.1=-serverwrapper.java.additional.2=-XX:MaxPermSize=256mwrapper.java.additional.3=-Dprogram.name=run.shwrapper.java.additional.4=-Djava.endorsed.dirs=../lib/endorsedwrapper.java.additional.5=-Dorg.jboss.resolver.warning=truewrapper.java.additional.6=-Dsun.rmi.dgc.client.gcInterval=3600000wrapper.java.additional.7=-Dsun.rmi.dgc.server.gcInterval=3600000wrapper.java.additional.8=-Djava.net.preferIPv4Stack=truewrapper.java.additional.9=-Dorg.tanukisoftware.wrapper.WrapperManager.mbean=false# Initial Java Heap Size (in MB)wrapper.java.initmemory=128# Maximum Java Heap Size (in MB)wrapper.java.maxmemory=512
#####最最重要的自已的main類(lèi)在這里設置# Application parameters.  Add parameters as needed starting from 1wrapper.app.parameter.1=org.jboss.Main





你是不是在找將Java程序注冊成系統服務(wù)的方法?試試Java Service Wrapper這個(gè)工具吧,你可以從這個(gè)網(wǎng)站上面下載你喜歡的版本:http://wrapper.tanukisoftware.org/ ,Java Service Wrapper提供了適合市面上流行的操作系統的版本。

使用Wrapper將Java程序注冊成系統服務(wù)有三種方式可供選擇:

第一種是使用WrapperSimpleApp 這個(gè)幫助類(lèi)來(lái)運行你的程序,這個(gè)是最簡(jiǎn)單的方法,也是官方推薦使用的方式,但是這樣可能會(huì )對你的程序有改動(dòng),如果你在項目初期就開(kāi)始考慮的話(huà),這個(gè)方法還是不錯的。像JBoss也是使用這種方式。

第二種方式是使用WraperStartStopApp這個(gè)類(lèi)來(lái)實(shí)現功能,這個(gè)方法適合那些通過(guò)ClassA類(lèi)來(lái)負責啟動(dòng)服務(wù),ClassB類(lèi)來(lái)負責停止服務(wù)的應用場(chǎng)景。

我使用的是第三種方式,這種方式好處是對程序改動(dòng)比較小,只要讓你的啟動(dòng)類(lèi)實(shí)現WrapperListener接口,并實(shí)現接口中的start(String[] args) 和 stop(String [] args)方法,然后通過(guò)WrapperManager來(lái)啟動(dòng)。其他的一些配置比如要運行的主類(lèi)全名、Java類(lèi)路徑、依賴(lài)Java庫的路徑、還有服務(wù)顯示的名稱(chēng),都可以通過(guò)配置文件conf/wrapper.conf來(lái)配置,相對來(lái)說(shuō)比較靈活,像我目前在做的RCP項目有自動(dòng)更新功能,更新下來(lái)的插件要比那些原來(lái)的插件的版本號要更新,雖然說(shuō)會(huì )定期刪除那些過(guò)期的插件,但有時(shí)還是會(huì )產(chǎn)生延遲,那么配置文件里面配置的Java類(lèi)路徑必須也要鏈接到最新的插件的地址,我是通過(guò)一個(gè)Java類(lèi)來(lái)管理這個(gè)wrapper.confg文件,如果有更新的插件,通過(guò)Java類(lèi)來(lái)得到最新插件的路徑,將這些信息寫(xiě)入到wrapper.confg文件中,這樣就能保證配置文件中的類(lèi)路徑是最新的了。

下面是程序的結構:

這里主頁(yè)介紹一下wrapper.conf的配置,這個(gè)配置文件是Java常用的屬性文件格式,

wrapper.java.command=java: 指定要運行的Java,如果你不想設置環(huán)境變量的話(huà),你也可以指定JDK的bin文件路徑

wrapper.java.mainclass=test.Main: 指定要運行的類(lèi),這個(gè)類(lèi)必須實(shí)現WrapperListener接口和接口中的start和stop方法,通過(guò)WrapperManager類(lèi)來(lái)初始化服務(wù)。如果啟動(dòng)服務(wù)過(guò)程中出現與不能取得JVM信息的情況,可能是接口實(shí)現的問(wèn)題。

wrapper.java.classpath.1=../lib/wrapper.jar:配置Java的類(lèi)路徑,這里的將wrapper.jar也包含在內,這里可以設置參數的位置,而且這個(gè)位置必須得從1 開(kāi)始,不能跳過(guò),必須順序指定,指定類(lèi)路徑的時(shí)候還有根據依賴(lài)關(guān)系來(lái)排列,被依賴(lài)的排在前面,否則會(huì )出現ClassNotFoundException的錯誤,這里支持覺(jué)得路徑和相對路徑,也支持通配符"*",比如wrapper.java.classpath.1=../lib/wrapper*,不過(guò)這個(gè)通配符只能用于匹配文件名,不能用于匹配文件夾名稱(chēng)。

wrapper.java.library.path.1=../lib:指定Wrapper自帶的類(lèi)庫文件存放文件夾,比如Wrapper.DLL文件等,只要指定到對應的上級目錄名稱(chēng)就行,支持通配符。

wrapper.java.library.path.1=../lib:指定Wrapper自帶的類(lèi)庫文件存放文件夾,比如Wrapper.DLL文件等,只要指定到對應的上級目錄名稱(chēng)就行,支持通配符。

wrapper.app.parameter.1= :指定運行類(lèi)的main方法參數。

wrapper.daemonize=TRUE:將服務(wù)注冊成守護線(xiàn)程,就算程序關(guān)閉的話(huà)不影響服務(wù)的運行

wrapper.ntservice.hide-console=false:不顯示控制臺

wrapper.filter.trigger.1= , wrapper.filter.action.1 :指定過(guò)濾器和觸發(fā)器,可以對控制臺的輸出信息進(jìn)行監聽(tīng),然后觸發(fā)相應的操作

wrapper.disable_shutdown_hook=TRUE:是否禁用 "關(guān)閉Hook" ,關(guān)閉的話(huà)在出現一般異常的情況下面可以忽略掉異常繼續執行

wrapper.console.loglevel=INFO:配置控制臺的顯示信息的級別,NONE不顯示任何輸出信息,FATAL只顯示致命的錯誤消息,ERROR顯示所有的錯誤消息,STATUS顯示服務(wù)狀態(tài)的改變,包括服務(wù)啟動(dòng)和停止等信息,INFO顯示所有程序輸出的信息和JVM顯示的信息,如果程序無(wú)法正常啟動(dòng),可以使用DEBUG顯示詳細的調試信息。

wrapper.logfile.loglevel=INFO:配置日志記錄文件要記錄的輸出信息的級別,參數值和wrapper.console.loglevel功能一致

wrapper.logfile.maxsize=0:配置日志文件的最大大小,如果為0表示不限制日志文件的大小,支持標記符,“k”代表KB,“m”代表MB,如果要設置最大大小為100KB的話(huà)可以這樣:wrapper.logfile.maxsize=100k

wrapper.console.title=Wrapper Demo?。嚎刂婆_窗口顯示標題,

wrapper.ntservice.name=testwrapper: 系統服務(wù)的名稱(chēng),

wrapper.ntservice.displayname=Wrapper Demo:在服務(wù)管理中顯示的名稱(chēng)

wrapper.ntservice.description=Wrapper Demo的介紹信息: 在服務(wù)管理器顯示服務(wù)的描述信息

wrapper.ntservice.starttype=AUTO_START: 配置服務(wù)啟動(dòng)方式,可以選擇AUTO_START(自動(dòng))和DEMAND_START(手動(dòng))兩種方式。默認為自動(dòng)。

前幾天在看Jetty源代碼的時(shí)候發(fā)現它也是使用Wrapper注冊成系統服務(wù),使用的是第三種方式,可以參考一下,

import java.io.PrintStream;
import org.mortbay.jetty.Server;
import org.mortbay.start.Main;
import org.tanukisoftware.wrapper.WrapperListener;
import org.tanukisoftware.wrapper.WrapperManager;
public class JettyServiceWrapperListener implements WrapperListener {
   private static Server __server = null;
   public void controlEvent(int event) {
     if ((WrapperManager.isControlledByNativeWrapper()) || ((event != 200) && (event != 201) && (event != 203)))
       return;
     WrapperManager.stop(0);
   }
   public Integer start(String[] args) {
     for (int i = 0; i < args.length; ++i) {
       System.out.println("ARG[" + i + "] = " + args[i]);
     }
     Main.main(args);
     return null;
   }
   public int stop(int code) {
     try {
       System.out.println("JettyServiceWrapperListener: Stopping Jetty 6 Service!!!");
       __server.stop();
       System.out.println("JettyServiceWrapperListener: Jetty 6 Service Stopped!!!");
       return code;
     }
     catch (Exception e) {
       System.out.println("Stop Server Error");
       e.printStackTrace();
     }
     return -1;
   }
   public static void setServer(Server server) {
     __server = server;
   }
   public static Server getServer() {
     return __server;
   }
   public static void main(String[] args) {
     String[] newStrArgs = new String[args.length + 1];
     newStrArgs[0] = System.getProperty("jetty.home") + "etc/jetty-win32-service.xml";
     for (int i = 0; i < args.length; ++i) {
       newStrArgs[(i + 1)] = args[i];
     }
     WrapperManager.start(new JettyServiceWrapperListener(), newStrArgs);
   }
}

這個(gè)類(lèi)實(shí)現了Wrapper的WrapperListener 并實(shí)現了它的start和stop方法,start方法在服務(wù)器啟動(dòng)的時(shí)候調用,不過(guò)這里要注意,如果在30秒內你不能執行完start方法,系統會(huì )自動(dòng)放棄這個(gè)服務(wù)的啟動(dòng),解決辦法可以在start方法使用線(xiàn)程,將比較耗時(shí)的操作放在這個(gè)線(xiàn)程執行,比如加載Spring文件等。而且如果在start方法執行出現異常,會(huì )終止服務(wù)的運行。這點(diǎn)要注意。

Stop方法在服務(wù)停止啟動(dòng),start和stop方法的參數可以在wrapper.conf文件里面配置。一般按照這樣配置的話(huà)你的程序應該可以通過(guò)執行StartApp-NT.bat正常啟動(dòng)了.

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Jetty的使用
jetty.exe
Windows下安裝與配置Nginx web服務(wù)器
Jetty嵌入項目式開(kāi)發(fā)(把jetty發(fā)布到你的應用中)
Win2000 Server + IIS 5.0配置
MyCAT簡(jiǎn)易入門(mén)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久