仕事上のメモです。
今回の話の開発・実行環境:
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が使えないので。。
今回の話の開発・実行環境:
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){ } } }