001 /* 002 * Copyright (c) 2009 The openGion Project. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 013 * either express or implied. See the License for the specific language 014 * governing permissions and limitations under the License. 015 */ 016 package org.opengion.plugin.daemon; 017 018 import org.opengion.hayabusa.common.HybsSystem; 019 import org.opengion.fukurou.util.LogWriter; 020 import org.opengion.fukurou.util.StringUtil; 021 import org.opengion.fukurou.util.HybsTimerTask; 022 import org.opengion.fukurou.util.URLConnect; 023 import org.opengion.fukurou.util.XHTMLTag; 024 025 import java.io.IOException; 026 import java.util.Date; 027 028 /** 029 * 【URLアクセス? 030 * ?したパラメータでURLに接続します? 031 * こ?クラスは、HybsTimerTask を継承した タイマ?タスククラスです? 032 * startDaemon() がタイマ?タスクによって、呼び出されます? 033 * 034 * 接続?ためのパラメータは以下で? 035 * url : 接続?URL(??) 036 * proxyHost : プロキシのホスト名 037 * proxyPort : プロキシのポ?ト番号 038 * useSystemUser : ?ォルト?ユーザ/パスワードを利用する?初期値:true) 039 * trueの場合?SYSTEM:*********を利用します? 040 * authUserPass : ユーザとパスワードをUSER:PASSWORDの形で記述 041 * keys : リクエストパラメータのキー(カンマ区?) 042 * vals : リクエストパラメータの値(カンマ区?) 043 * method : POSTかGETを指?初期値:GET) 044 * debug : 接続した?ージを受信して、ログに書き?しま?初期値:false) 045 * 046 * 接続エラー時?ログはファイル(SYS_LOG_URL)に出力されます? 047 * 048 * @og.rev 4.3.4.4 (2009/01/01) 新規作? 049 * @og.group ??モン 050 * 051 * @version 4.0 052 * @author Takahashi Masakazu 053 * @since JDK5.0, 054 */ 055 public class Daemon_URLConnect extends HybsTimerTask { 056 //* こ?プログラ??VERSION??を設定します? {@value} */ 057 private static final String VERSION = "4.3.4.4 (2009/01/01)" ; 058 059 private static final String DEFAULT_USER = "SYSTEM:MANAGER" ; 060 private static final int LOOP_COUNTER = 24; // カウンタ?4回に設? 061 062 private int loopCnt = 0; 063 064 private boolean debug = false; 065 private boolean useSystemUser = true; 066 private String method = "GET"; 067 private String urlStr = null; 068 private int proxyPort = -1; 069 070 private URLConnect conn = null; 071 072 /** 073 * こ?タイマ?タスクによって初期化されるアクションです? 074 * パラメータを使用した初期化を行います? 075 * 076 */ 077 @Override 078 public void initDaemon() { 079 debug = StringUtil.nval( getValue( "DEBUG" ),debug ) ; 080 useSystemUser = StringUtil.nval( getValue( "useSystemUser" ), useSystemUser ); 081 method = StringUtil.nval( getValue( "method" ), method ); 082 urlStr = getValue( "url" ); 083 proxyPort = StringUtil.nval( getValue( "proxyPort" ), proxyPort ); 084 String proxyHost = getValue( "proxyHost" ); 085 String keys = getValue( "keys" ); 086 String vals = getValue( "vals" ); 087 String authUserPass = getValue( "authUserPass" ); 088 089 if( useSystemUser ) { authUserPass = DEFAULT_USER; } 090 091 String urlEnc = XHTMLTag.urlEncode( keys,vals ); 092 093 if( ! "POST".equals( method ) ) { 094 urlStr = XHTMLTag.addUrlEncode( urlStr,urlEnc ); 095 } 096 conn = new URLConnect( urlStr,authUserPass ); 097 098 if( proxyHost != null ) { 099 conn.setProxy( proxyHost,proxyPort ); 100 } 101 102 if( "POST".equals(method) && keys != null && vals != null ) { 103 conn.setPostData( urlEnc ); 104 } 105 } 106 107 /** 108 * タイマ?タスクの??モン処??開始?イントです? 109 * 110 */ 111 @Override 112 protected void startDaemon() { 113 if( loopCnt % LOOP_COUNTER == 0 ) { 114 loopCnt = 1; 115 System.out.println( toString() + " " + new Date() + " " ); 116 } 117 else { 118 loopCnt++ ; 119 } 120 // URLへのconnect及???タ取得実? 121 try{ 122 conn.connect(); 123 124 if(debug){ 125 // System.out.println( conn.readData() ); 126 String debugMsg = "Daemon_URLConnect:url=[" + urlStr + "]" + HybsSystem.CR 127 + conn.readData(); 128 LogWriter.log( debugMsg ); 129 } 130 } 131 catch( IOException ex ) { 132 System.out.println(ex); 133 String errMsg = "Daemon_URLConnect:??タ取得中にエラーが発生しました? + HybsSystem.CR 134 + " url=[" + urlStr + "]" + HybsSystem.CR 135 + ex; 136 LogWriter.log( errMsg ); 137 } 138 finally { 139 if( conn != null ) { conn.disconnect(); } 140 } 141 } 142 143 /** 144 * こ?タイマ?タスクのcancel() メソ?をオーバ?ライドします? 145 * HybsTimerTaskManager#cancelTask( int ) を実行します? 146 * 147 * @og.rev 4.3.1.1 (2008/08/23) super.cancel() のみ実行なら?オーバ?ライド???な? 148 * 149 * @see java.util.TimerTask#cancel() 150 */ 151 // public boolean cancel() { 152 // return super.cancel(); 153 // } 154 }