差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

java:supportipv6:java_service_wrapper_cant_start [2020/01/24 15:02]
tony [使用PIPE]
java:supportipv6:java_service_wrapper_cant_start [2023/06/25 09:48]
行 1: 行 1:
-====== Java Service Wrapper service can't start of pure IPv6 env ====== 
-===== Problem ===== 
-我們使用的Java Service Wrapper(後面簡稱JSW)版本是3.5.26,作業系統是Linux;我們發現在把loobpack的inet4刪除後,service就無法啟動了。從JSW log中可以發現,這是由於JSW內部溝通要使用的port無法被綁定:​\\ 
-{{:​java:​supportipv6:​pureipv6_java_service_wrapper_cant_start.png|}}\\ 
-\\ 
-本篇文章主要分享我們的解決方式。 
-===== How to resolve? ===== 
-首先可以在正常使用的情況下,執行netstat確認port的綁定狀況:​ 
-<code bash> 
-root@tony:/​opt#​ netstat -na | grep 32000 
-tcp        0      0 127.0.0.1:​32000 ​        ​0.0.0.0:​* ​              ​LISTEN 
-</​code>​ 
-從以上結果可以得知,JWS預設是綁定IPv4的127.0.0.1。於是我開始找尋JWS是否有方法可以設定這些東西,有兩個方法提供給大家。 
-===== 設定Socket Type ===== 
-第一個方法是明確設定要使用IPv6還是IPv4的socket type,然後再給予對應的連線位置:​ 
-<code bash> 
-# For IPv6 
-wrapper.port.address=[::​1] 
-wrapper.backend.type=SOCKET_IPv6 
-# For IPv4 
-wrapper.port.address=127.0.0.1 
-wrapper.backend.type=SOCKET_IPv4 
-</​code>​ 
-我有嘗試過AUTO,但無法解決問題。如果有使用安裝程式的人,這個設定可能會轉嫁在安裝程式上。 
-===== 使用PIPE ===== 
-因為前一個方法必須要去偵測並設定,因此我們使用了PIPE的做法,目前看起來也可以解決問題:​ 
-<code bash> 
-wrapper.backend.type=PIPE 
-</​code>​ 
-至於這個做法有沒有side effect,等我們發現了我會再特別記錄。另外需要注意的是,這方法至少要3.5.26以後的版本才可以使用,我覺得我們很幸運。 
- 
-===== Reference ===== 
-  * [[https://​wrapper.tanukisoftware.com/​doc/​english/​prop-backend-type.html|JWS configuration - wrapper.backend.type]] 
-  * [[https://​wrapper.tanukisoftware.com/​doc/​english/​prop-port.html#​address|JWS configuration - wrapper.port.address]] 
-  * [[https://​wrapper.tanukisoftware.com/​doc/​english/​release-notes.html#​3.5.26|JWS relesae note for 3.5.26]] 
- 
-=====    ===== 
----- 
-\\ 
-~~DISQUS~~ 
-