最近有個需求,需要將Java的程序在樹莓派上部署成服務,就準備使用Java service Wrapper。上網參考了一下別的文章,但是其中也碰到了不少的坑,特記錄下來,希望能幫助到別的童鞋。。。
主要的過程可以參考這篇文檔,我主要是記錄一下這篇文章沒有提到的問題
Java Service Wrapper 將Java程序部署成系統服務
-
Java Service Wrapper 版本的問題
Java Service Wrapper 版本分三種,Professional,Standard,Community三個版本,前兩個版本是收費的,第三個版本纔是免費的。
樹莓派是32位系統,CPU的架構是armhf。 -
第三方動態庫的配置
在Java開發的過程中,有時候會用到C提供的一些NATIVE接口,這個時候需要C的so動態庫。這些動態庫需要在wrapper.conf文件中進行配置
#Java Library Path (location of Wrapper.DLL or libwrapper.so)
這個段落中添加第三方so所在的文件夾
wrapper.java.library.path.1=…/lib
wrapper.java.library.path.2=…/src/olami_lib
其中path.1是wrapper自己的lib庫的地址。自己的可以在下面繼續添加。
- 程序的入口
程序的入口需要配置成自己Java程序的主類
Java Main class,也就是程序入口
#該類需要實現WrapperListener 接口並保證WrapperManager 得到初始化
wrapper.java.mainclass=com.xxx.main
- 程序不斷重啓
Java服務配置好以後,會發現Java程序會不斷的重啓。這是因爲wrapper會和JVM不斷的通信,檢查JVM是否或者。如果你的Java程序休眠了或者通信失敗了,wrapper就會通知進程掛起,然後再試圖重啓Java程序。解決辦法是在wrapper.conf文件中設置
wrapper.ping.timeout=0
wrapper.startup.timeout=0
這兩個值默認是30
參考:https://stackoverflow.com/questions/20718058/java-service-is-restarted-4-or-5-times