Java ESの開始制御

要件:

            ES検出ポートは、プログラムの初期化での使用には、ケースは再びプロセスがポートが占有されていない場合は、ESを起動しているESのポートを使用しているかどうかを裁判官に占領されたされていません。

ロジック:

            ケース1:初期化 - >占有検出ポート - >すでに使用されている - > ES検出オープンかどうか - >投入 - >リターン

            ケース2:初期化 - >占有検出ポート - >空い - > ESオン

            ケース3:初期化 - >占有検出ポート - >それはすでに使用されている - >未開封 - - > ES上> ESオープンかどうかを検出

占有検出ポート// 
ポートアドレスを使用して//ソケット接続、ポートを証明するために接続することができますが占有されている
パブリックブールPortState(){ 
	空いための偽//占有、
	; falseにブール=国家
	試し{ 
		接続を作成する//試みを
		ソケットソケット新しい新しい=ソケット(「127.0.0.1」、9200); 
		//が占有されていない場所をスローし、結果が返された
		状態がtrueに=; 
		状態を返す; 
	}キャッチ(IOExceptionをE){ 
		System.out.printlnは(「ポートはありません!職業は、)ES」を開始しようとしている
	} 
	reurn州; 
} 

//開始ESかどうかを検出する
アドレス// ESは、9200の開始にアクセスすることができます
。//をので、アクセスしたURLアドレスを使用して
判断する返された文字列受信// 
パブリックブール{)(isRunning 
	、開始されていないため、偽開始// 
	falseにブール=状態; 
	試み{ 
		//アクセスアドレスES 
		URLのURL =新しい( "http://127.0.0.1:9200" )URLを。
		//アクセス 
	}キャッチ(IOExceptionをE){
		URLC = url.openConnectiom URLConnectionの(); 
		//結果を読み取り、符号化フォーマットの結果を設定するために入力ストリームを作成
		InputStreamReaderの新しい新しいISR =(urlc.getInputStream()、 "GBK")InputStremReader; 
		BufferedReaderのBR =新しい新しいBufferedReaderの(ISR ); 
		//結果を受け、決定
		文字列に結果を= NULL; しばらく((br.readLine結果=())= NULL){ 
			//この条件があるので、私の名前のESこの
			場合(result.indexOf(「elasticsearch ")> 0){ 
				//状態の変化は、サイクルの終わり
				をtrueに状態=; 
				System.out.printlnはは("!ESはすでに「開始)
				BREAK; 
			} 
		} 
		//解放資源
		br.closeを(); 
		isr.closeを() ; 
	}キャッチ(例外:MalformedURLException E){ 
		e.printStackTrace(); 
		e.printStackTrace(); 
	}
	;州立リターンは
} 




申し訳ありませんが、私は可能性が低い、このようなものをVBSバットを呼び出してCMDウィンドウを非表示に使用されるESのVBSスクリプトを起動する// 
次のようにVBSを読み込む
設定WS =のCreateObject(「Wscript.Shell」)
// D :\ ES \ビン\のelasticsearch.batは:これは私がESの起動パスバットで
ws.run "CMD / CのDを:\ ES \ビン\のelasticsearch.bat"、0 

// ESメソッドを起動し
ます。public void startES(){ 
	//ファイルパス、デバッグを容易にするために
	文字ファイルパス= "D:/ ES /"を、
	試み{ 
		// VBS実行
		プロセスのプロセスRuntime.getRuntime =()をExecの( "cmd.exeの/c"+filePath+"startES.vbsを")。 ; 
	}キャス(IOExceptionをE){ 
		e.printStackTrace(); 
	} 
} 


//集積ロジックが決定
公共execSubBootボイド(){ 
	System.out.printlnは( "開始する準備ができてESを...") 
	//ポートの状態が決定される 
		場合(isRunning()){ 
	場合(portState()){
		//は、ESの状態を判断
			//戻り開始
			リターンを; 
		} 
		System.err.println( "ポートが占有されている!"); 
		戻り; 
	} 
	startES(); 
	System.out.printlnはは( "ESが正常に開始されました!"); 
}

  

 

おすすめ

転載: www.cnblogs.com/ttzsqwq/p/11058228.html