+ YOSHIKI & Violet UK FAN SITE -Blind Tears- 管理人の日記 +

Blind Tears管理人こぅきの日記です☆彡
興味ある記事があればコメント・意見等お願いします☆

Javaでping & Tomcatインストール後にJDKバージョンアップ

2007年06月13日 16時21分29秒 | PC関連
仕事上のメモです。

今回の話の開発・実行環境:
tomcat 5.x
java, jvm : 1.4から6.0(1.6)へのバージョンアップ


Java(ここではWebの)でping(icmp)をするために、isReachableっていうメソッドを使うと取れる。
ただ、このメソッドは5.0以上からしか使えないらしく、客先サーバでは使えないので、バージョンアップを検討。

tomcatにバージョンアップ後のjvmを認識させるには、レジストリをいじる。
HKEY_LOCAL_MACHINESOFTWAREApache Software FoundationProcrun 2.0Tomcat5ParametersJavaのjvmの値をここでは、C:Program FilesJavajdk1.6.0jrebinserverjvm.dllに変更。
これで実行環境は整ったが、jspをコンパイルできない。そりゃそ-だ。jspコンパイラは1.4で、6.0のライブラリを使おうとしてるから。
じゃぁjspコンパイラも上げちゃえってことで、startup時にsetclasspath.batで設定されるクラスパス内の%TOMCAT_HOME%commonlibtools.jarを、新しく持ってきた6.0のtools.jarで上書き。これでなった!!
ところがどっこい、やりたかった起動チェックは、こんな理由で、Windows XPの場合ポート7番をあけてやらないと返事を返さない。まぁバージョンアップはわかったのでよしとしよう!!

サーブレットのソースは、一番下。
URLでhttp://localhost:8081/xxxxx/IsOnline?h=hostnameを叩くと、クライアント(ホスト名:hostname)が起動してれば、1が返ってくるし、起動してなければ何も返ってこない。
実際はxmlhttprequestで一斉にチェックをかける。

※ポート8081にしてる理由はORACLEが入っているため8080が使えないので。。


package xxxxx;

import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * Servlet implementation class for Servlet: IsOnline
 *
 */
 public class IsOnline extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
    /* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#HttpServlet()
	 */
	public IsOnline() {
		super();
	}   	
	/* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	} 
	
	public boolean isReachable(String hostname) {
		
		InetAddress	dest = null;

		//long time = 0;
		int timeout = 2000; // タイムアウト[ms]
		
		if(!hostname.equals("")){
			try{
				dest = InetAddress.getByName(hostname);
			}catch(UnknownHostException e){
				//System.out.println("Unknow Host Exception.");
				return false;
				// DNS解決が出来なかった場合何もしない
			}
		}
		
		try{
			if(dest.isReachable(timeout)){
				return true;
			} else {
				return false;
			}

		} catch (IOException e){
			return false;
		}
		
	}

	
	/* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		try{
			String hostname;
			boolean isOnline = false;
			
			hostname = request.getParameter("h");
			isOnline = isReachable(hostname);
			
			if(isOnline){
				String sTAG;
				sTAG = "1";
				response.getWriter().println(sTAG);
			}
		} catch (Exception e){
			
		}
		
	}

 }