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 */ 016package org.opengion.hayabusa.common; 017 018import java.io.PrintWriter; 019import java.io.IOException; 020import java.io.UnsupportedEncodingException; 021import java.lang.reflect.Field; 022import java.lang.reflect.Modifier; 023import java.net.MalformedURLException; 024import java.net.URL; 025import java.sql.Connection; 026import java.sql.PreparedStatement; 027import java.sql.ResultSet; 028import java.sql.SQLException; 029import java.util.ArrayList; 030import java.util.Date; 031import java.util.Enumeration; 032import java.util.HashMap; 033import java.util.LinkedHashMap; 034import java.util.TreeMap; 035import java.util.List; 036import java.util.Locale; 037import java.util.Map; 038import java.util.Set; 039import java.util.Collections; // 6.4.3.2 (2016/02/19) 040import java.util.Calendar; // 6.9.7.0 (2018/05/14) 041 042import jakarta.servlet.ServletContext; 043import jakarta.servlet.FilterRegistration; // 6.9.3.1 (2018/04/02) 044import jakarta.servlet.ServletRegistration; // 6.9.3.1 (2018/04/02) 045 046import org.opengion.fukurou.db.ConnectionFactory; 047import org.opengion.fukurou.system.BuildNumber; // 6.4.2.0 (2016/01/29) hayabusa.common.BuildNumber → fukurou.system.BuildNumber ã«ç§»å‹• 048import org.opengion.fukurou.system.Closer; 049import org.opengion.fukurou.system.LogWriter; 050import org.opengion.fukurou.system.ThrowUtil; // 6.4.2.0 (2016/01/29) 051import org.opengion.fukurou.system.DateSet; // 6.9.7.0 (2018/05/14) 052import org.opengion.fukurou.util.FindClassFiles; 053import org.opengion.fukurou.util.StringUtil; 054import org.opengion.fukurou.xml.XMLFileLoader; // 6.0.0.0 (2014/04/11) 055import org.opengion.fukurou.system.HybsConst; // 7.2.3.1 (2020/04/17) 056import static org.opengion.fukurou.system.HybsConst.CR; // 6.1.0.0 (2014/12/26) 057import static org.opengion.fukurou.system.HybsConst.BUFFER_MIDDLE; // 6.1.0.0 (2014/12/26) refactoring 058import static org.opengion.fukurou.system.HybsConst.DB_FETCH_SIZE; // 6.9.4.1 (2018/04/09) 059import org.opengion.fukurou.fileexec.MainProcess; // 7.2.5.3 (2020/06/16) 060 061/** 062 * ログイï¾ã—ãŸï½»ï½°ï¾Œï¾žï¾šï½¯ï¾„コï¾ï¾ƒï½·ï½½ï¾„ã«å¯¾å¿œã—ãŸï½¼ï½½ï¾ƒï¾‘パラメータデータをå–å¾—ã™ã‚‹ï½¸ï¾—ï½½ã§ã™ï½¡ 063 * 064 * システムパラメータデータ(GE12)ã¯ã€ï¾Šï¾Ÿï¾—ï¾’ï½°ï¾€(PARAM_ID)ã«å¯¾ã—ã¦ã€å„種è¨å®šå€¤(PARAM)ã‚’ 065 * æŒã£ã¦ã„ã¾ã™ï½¡ 066 * 従æ¥ã¯ã€resource.システムパラメータ ã®ä¸€èˆ¬è¨å®šç”¨ã® システムパラメータ ファイル㨠067 * ï½´ï¾ï½¼ï¾žï¾å†…部ã§æŒã£ã¦ã„ã‚‹ org/hsgw/hayabusa/resource/properties ã® 068 * システムパラメータ ファイルã«ã‚ˆã‚Šç¶æŒã•ã‚Œã¦ã„ã¾ã—ãŸãŒã€ï½¼ï½½ï¾ƒï¾‘パラメータ 069 * 定義テーブル(GE12)ã¨ã€commom/SystemData.java クラスã«ã‚ˆã‚‹ç®¡ç†ã«å¤‰æ›´ã•ã‚Œã¾ã—ãŸï½¡ 070 * 071 * システムパラメータã¯ã€DBã¸ã®ï½±ï½¸ï½¾ï½½ã‚’決定ã™ã‚‹ãŸã‚ã€åˆæœŸè¨å®šå€¤ã‚’定義ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ï½¡ 072 * ã“ã‚Œã¯ã€ï½±ï¾Œï¾Ÿï¾˜ï½¹ï½°ï½¼ï½®ï¾ãƒ»ï¾ƒï¾žï½¨ï½½ï½¸ï¾˜ï¾Œï¾Ÿï¾€(WEB-INF/web.xml)ã«ã€context-param ã¨ã—ã¦ã€ 073 * ï½·ï½°ã¨å€¤ã®ï½¾ï½¯ï¾„ã§ã€åˆæœŸï½±ï½¸ï½¾ï½½ç”¨ã®æƒ…å ±ã‚’æ¸¡ã—ã¾ã™ï½¡ 074 * システムパラメータ定義テーブル(GE12)ã«ã¯ã€SYSTEM_IDã¨ã—ã¦ã€é€šå¸¸ã®ï½¼ï½½ï¾ƒï¾‘IDã¨ã€ 075 * ï½´ï¾ï½¼ï¾žï¾ï¾Šï¾Ÿï¾—ï¾’ï½°ï¾€ãŒã‚ã‚Šã¾ã™ï½¡ï½´ï¾ï½¼ï¾žï¾ï¾Šï¾Ÿï¾—ï¾’ï½°ï¾€ã¯ã€SYSTEM_ID='**'ã¨ã—ã¦ã€ç™»éŒ² 076 * ã•ã‚Œã¦ã„ã¾ã™ï½¡ 077 * 078 * <table class="plain"> 079 * <caption>システムパラメータã®èª¬æ˜Ž</caption> 080 * <tr><th>種類 </th><th>SYSTEM_ID</th><th>作æˆåŒºåˆ†</th><th>説明</th></tr> 081 * <tr><td>ï½´ï¾ï½¼ï¾žï¾å…±é€š </td><td>** </td><td>0:ï½´ï¾ï½¼ï¾žï¾</td><td>ï½´ï¾ï½¼ï¾žï¾å…±é€šã§å®šç¾©ã—ã¦ã„るパラメータ </td></tr> 082 * <tr><td>ï½´ï¾ï½¼ï¾žï¾å€‹åˆ¥ </td><td>個別 </td><td>0:ï½´ï¾ï½¼ï¾žï¾</td><td>システム毎ã«ï½´ï¾ï½¼ï¾žï¾ãŒç™»éŒ²ã—ã¦ã„るパラメータ </td></tr> 083 * <tr><td>システム共通 </td><td>** </td><td>1:システム </td><td>システム毎ã«ï½´ï¾ï½¼ï¾žï¾ãŒç™»éŒ²ã—ã¦ã„るパラメータ </td></tr> 084 * <tr><td>システム個別 </td><td>個別 </td><td>1:システム </td><td>システム毎ã«å„自ãŒç‹¬è‡ªã«ç™»éŒ²ã—ã¦ã„るパラメータ </td></tr> 085 * </table> 086 * 087 * <table class="plain"> 088 * <caption>アプリケーショï¾ãƒ»ï¾ƒï¾žï½¨ï½½ï½¸ï¾˜ï¾Œï¾Ÿï¾€(WEB-INF/web.xml)è¨å®šæƒ…å ±</caption> 089 * <tr><th>パラメータ </th><th>è¨å®šå€¤ä¾‹ </th><th>解説 </th></tr> 090 * <tr><td>SYSTEM_ID </td><td>GE </td><td>ã“ã®ï½±ï¾Œï¾Ÿï¾˜ï½¹ï½°ï½¼ï½®ï¾ã®ï½¼ï½½ï¾ƒï¾‘ID </td></tr> 091 * <tr><td>TOMCAT_PORT</td><td>8823 </td><td>Tomcatèµ·å‹•æ™‚ï¾Žï¾Ÿï½°ï¾„ç•ªå· </td></tr> 092 * <tr><td>LOG_FILE </td><td>log/log_$(yyyyMMdd).txt</td><td>JSPアクセスログ出力先 </td></tr> 093 * </table> 094 * 095 * ※ 5.6.7.0 (2013/07/27) 096 * InitFileLoader ã«ã‚ˆã‚Šã€ç‰¹å®šã®ï½¸ï¾—スパス内㮠拡張XDK å½¢å¼ã® xml ファイル を処ç†ã—ã¾ã™ï½¡ 097 * クラスパスãŒã€"/resource" 以下ã®ã™ã¹ã¦ã® xml ファイルã¯ã€DBID㌠RESOURCE ã®æŽ¥ç¶šå…ˆã«å¯¾ã—ã¦å‡¦ç†ã•ã‚Œã¾ã™ï½¡ 098 * クラスパスãŒã€"/xml" 以下ã®ã™ã¹ã¦ã® xml ファイルã¯ã€DBID㌠DEFAULT ã®æŽ¥ç¶šå…ˆã«å¯¾ã—ã¦å‡¦ç†ã•ã‚Œã¾ã™ï½¡ 099 * å„クラスパス以下ã®ï¾Œï½§ï½²ï¾™ã¯ã€å®Ÿï¾Œï½«ï¾™ï¾€ï¾žã§ã‚‚ã€jarå½¢å¼ã«åœ§ç¸®ã•ã‚ŒãŸå½¢å¼ã§ã‚‚処ç†ã•ã‚Œã¾ã™ï½¡ 100 * 101 * ※ 6.0.0.0 (2014/04/11) 102 * InitFileLoader ãŒå»ƒæ¢ã«ãªã‚Šã€ä»£ã‚ã‚Šã«ã€XMLFileLoader を使用ã—ã¾ã™ï½¡å‡¦ç†è‡ªä½“ã¯ã€ã»ã¼åŒæ§˜ã§ã™ï½¡ 103 * 104 * @og.rev 4.0.0.0 (2005/01/31) æ–°è¦ä½œæˆ 105 * @og.rev 4.0.0.0 (2007/10/26) loadDBResourceã®ï½ºï¾ˆï½¸ï½¼ï½®ï¾ã‚’Factoryã‹ã‚‰å–るよã†ã«å¤‰æ›´ 106 * @og.group åˆæœŸåŒ– 107 * 108 * @version 4.0 109 * @author Kazuhiko Hasegawa 110 * @since JDK5.0, 111 */ 112public final class SystemParameter { 113 114 /** plugin クラスã®å–得用クラスパス指定 {@value} */ 115 public static final String PLUGIN = "org/opengion/plugin"; 116 117 // 4.0.0.0 (2007/10/05) CONTXT_PATH ã«ã€DEFAULT '**' NOT NULL 制約を付ã‘る。 118 /** システム共通/個別パラメータ(SYSTEM_ID in ('**',?) and KBSAKU > '0')ã®ä¸€æ‹¬èªè¾¼ã®ï½¸ï½´ï¾˜ï½° {@value} */ 119 public static final String QUERY = "SELECT PARAM_ID,PARAM,FGCRYPT" 120 + " FROM GE12 WHERE SYSTEM_ID IN (?,'**')" 121 + " AND CONTXT_PATH IN (?,'**')" 122 + " AND FGJ='1' AND KBSAKU > '0'" 123 + " ORDER BY SYSTEM_ID,CONTXT_PATH,FGJ,KBSAKU,SEQNO" ; 124 125 /** システム共通/個別パラメータ(SYSTEM_ID in ('**',?) and KBSAKU > '0')ã®ä¸€æ‹¬ç™»éŒ²ã®ï½¸ï½´ï¾˜ï½° {@value} */ 126 public static final String INS_SYS = "INSERT INTO GE12" 127// + " ( SYSTEM_ID,CONTXT_PATH,PARAM_ID,SEQNO,PARAM,TITLE,CONTENTS,PARAM_LVL,FGJ,KBSAKU )" 128 + " ( SYSTEM_ID,CONTXT_PATH,PARAM_ID,SEQNO,PARAM,TITLE,CONTENTS,PARAM_LVL,FGJ,KBSAKU,DYSET )" // 6.9.7.0 (2018/05/14) 129 + " SELECT" 130// + " ?,?,?,?,?,TITLE,CONTENTS,PARAM_LVL,'1','0'" 131 + " ?,?,?,?,?,TITLE,CONTENTS,PARAM_LVL,'1','0',?" // 6.9.7.0 (2018/05/14) 132 + " FROM GE12 WHERE SYSTEM_ID='**' AND FGJ='1' AND KBSAKU='0' AND PARAM_ID=?" ; 133 134// /** ï½´ï¾ï½¼ï¾žï¾å€‹åˆ¥(SYSTEM_ID='個別' KBSAKU='0' CONTXT_PATH='自身')パラメータã®ä¸€æ‹¬å‰Šé™¤ã®ï½¸ï½´ï¾˜ï½° {@value} */ 135// public static final String DEL_SYS = "DELETE FROM GE12 WHERE SYSTEM_ID=? AND KBSAKU='0' AND CONTXT_PATH=?"; 136 137 /** ï½´ï¾ï½¼ï¾žï¾å€‹åˆ¥(SYSTEM_ID='個別' KBSAKU='0' CONTXT_PATH='自身')パラメータã®ä¸€æ‹¬å‰Šé™¤ã¨ã€éŽåŽ»æƒ…å ±ã®å‰Šé™¤ï½¸ï½´ï¾˜ï½° {@value} */ 138 public static final String DEL_SYS = "DELETE FROM GE12 WHERE ( SYSTEM_ID=? AND KBSAKU='0' AND CONTXT_PATH=? )" // 6.9.7.0 (2018/05/14) 139 + " OR ( SYSTEM_ID != '**' AND PARAM_LVL='9' AND ( DYSET < ? OR DYSET IS NULL ) )" ; // éŽåŽ»ã®ï¾ƒï¾žï½°ï¾€ã‚’考慮(DYSET is null) 140 141 /** 6.9.7.0 (2018/05/14) DYSET フォーï¾ï½¯ï¾„ {@value} */ 142 public static final String DYSET_FORMAT = "yyyyMMddHHmmss" ; // 6.9.7.0 (2018/05/14) 143 144// /** 6.9.3.0 (2018/03/26) データ検索時ã®ï¾Œï½ªï½¯ï¾ï½»ï½²ï½½ï¾ž {@value} */ 145// private static final int DB_FETCH_SIZE = 1001 ; // HybsSystem ã«è¨å®šã™ã‚‹å‰ãªã®ã§ã€HybsSystem.sysInt ã§ã¯å–å¾—ã§ããªã„。 146 147 /** システムパラメータ構築ä¸ã®ï½´ï¾—ーをセットã—ã¦ã„ãã¾ã™ï½¡ */ 148 private static final List<String> ERR_MSG_LIST = new ArrayList<>(); // 6.4.1.1 (2016/01/16) errMsgList → ERR_MSG_LIST refactoring 149 150 /** 151 * デフォルトコï¾ï½½ï¾„ラクターをprivateã«ã—ã¦ã€ 152 * オブジェクトã®ç”Ÿæˆã‚’ã•ã›ãªã„よã†ã«ã™ã‚‹ã€‚ 153 * 154 */ 155 private SystemParameter() {} 156 157 /** 158 * コï¾ï¾ƒï½·ï½½ï¾„毎㫠システムパラメータオブジェクトを作æˆã—ã¾ã™ï½¡ 159 * ã“ã®ï½¸ï¾—ï½½ã®ï½½ï¾€ï½°ï¾„ポイï¾ï¾„メソッドã«ãªã‚Šã¾ã™ï½¡ 160 * 161 * @og.rev 4.1.0.1 (2008/01/23) ログ出力先ã®å¤‰æ›´(å…¨ã¦LogWriter経由ã§å‡ºåŠ›) 162 * @og.rev 5.5.4.4 (2012/07/20) LogWriter.log è¿½åŠ 163 * @og.rev 5.5.4.4 (2012/07/20) SQLException ã¯ã€catch ã—ã¦ã„ã‚‹ã®ã§ã€loadDBResource ã‹ã‚‰ã¯ã€throws ã•ã‚Œãªã„。 164 * @og.rev 5.7.2.0 (2014/01/10) Throwable ã®æƒ…å ±ã‚’ã‚‚ã†å°‘ã—詳細ã«å‡ºã—ã¾ã™ï½¡ 165 * @og.rev 6.4.3.2 (2016/02/19) engParamã¨sysParamã‚’åˆæœŸè¨å®šã—ã¦ã€åŒæœŸåŒ–ã—ã¦ãŠã。 166 * @og.rev 6.4.7.1 (2016/06/17) セキï½ï¾˜ï¾ƒï½¨ã®é–¢é€£ã§ã€ï¾›ï½¸ï¾žã®è©³ç´°ã‚’出ã—ã¦ã„ã¾ã›ã‚“ã§ã—ãŸãŒã€å‡ºã™ã‚ˆã†ã«å¤‰æ›´ã—ã¾ã™ï½¡ 167 * @og.rev 6.8.6.0 (2018/01/19) ImageIO.write ã§ã€Java9ã§ã€NumberFormatException ãŒå‡ºã¦ã—ã¾ã†(暫定)対ç–。 168 * @og.rev 7.2.5.3 (2020/06/16) MainProcessã¯ã€SystemParameterã¸ç§»å‹• 169 * @og.rev 7.3.2.3 (2021/04/09) システム定数ã®ICON_DIRã‚„IMAGE_DIRを使用ã—ã¾ã™ï½¡ 170 * 171 * @param context Servletコï¾ï¾ƒï½·ï½½ï¾„ 172 * 173 * @return システムパラメータã®ï¾ï½¯ï¾Œï¾Ÿ 174 */ 175 public static Map<String,String> makeSystemParameter( final ServletContext context ) { 176 ERR_MSG_LIST.clear() ; // 呼ã³å‡ºã—都度ã€ï½´ï¾—ーリストをクリアã—ã¾ã™ï½¡ 177 178 // 6.4.3.2 (2016/02/19) 179 final Map<String,String> engParam = new LinkedHashMap<>(); // 最終的ã«ï¾ï½°ï½¼ï¾žã—ã¦è¿”ã™ã€‚ 180 final Map<String,String> sysParam = new LinkedHashMap<>(); // DB書ã戻ã—ç‰ã‚ã‚‹ã®ã§ã€è¨å®šä¸ã¯åˆ†ã‘ã¦ãŠã。 181 182 try { 183 // 6.8.6.0 (2018/01/19) ImageIO.write (暫定)å¯¾ç– 184 // ※ ImageIO.getReaderMIMETypes(); ã§ã® Java 9 has java.specification.version == 9 ã§ã€ 185 // Caused by: java.lang.NumberFormatException: For input string: "" ãŒç™ºç”Ÿã™ã‚‹å¯¾å¿œ 186 // https://github.com/jai-imageio/jai-imageio-core/issues/24 187 final String javaSpecVer = System.getProperty( "java.specification.version" ); 188 if( !javaSpecVer.startsWith( "1." ) ) { 189 System.setProperty( "java.specification.version" , "1." + javaSpecVer ); // "java.specification.version" , "9" ã®å ´åˆã€"1.9" ã«ç„¡ç†ã‚„り変更ã—ã¾ã™ã€‚ 190 } 191 192 final String contextName = getContextName( context ); 193 194 System.out.println( "Context Initialized [" + contextName + "] " + new Date() ); 195 System.out.print( " Version [" + BuildNumber.VERSION_NO + " " ); 196 System.out.print( BuildNumber.BUILD_TYPE ); 197 System.out.println( "]" ); 198 199 // システムデータクラスよりã€ï½´ï¾ï½¼ï¾žï¾ï¾Šï¾Ÿï¾—ï¾’ï½°ï¾€æƒ…å ±ã‚’åˆæœŸè¨å®šã—ã¾ã™ï½¡ 200 // ï½´ï¾ï½¼ï¾žï¾ï¾Šï¾Ÿï¾—ï¾’ï½°ï¾€ã¯ã€SystemData クラス㮠public static ï¾’ï¾ï¾Šï¾žï½°ã§ã™ï½¡ 201 loadParameter( engParam , SystemData.class ); // 6.4.3.2 (2016/02/19) 202 203 // コï¾ï¾ƒï½·ï½½ï¾„よりå–å¾—ã§ãã‚‹ï½¼ï½½ï¾ƒï¾‘ï¾Šï¾Ÿï¾—ï¾’ï½°ï¾€æƒ…å ±ã‚’å–å¾—ã—ã¾ã™ï½¡ 204 // web.xml ã§è¨å®šã—ãŸï¾Šï¾Ÿï¾—メータをå–å¾—ã—ã¾ã™ï½¡ 205 // SYSTEM_ID,DB_DRIVER,DB_URL ãªã©ã¯ã€loadDBResource ã§ä½¿ç”¨ã—ã¾ã™ï½¡ 206 loadInitialParameter( sysParam , context , contextName ); // 6.4.3.2 (2016/02/19) 207 208 // システム個別ã«è¨å®šã•ã‚Œã‚‹ã€ï½´ï¾ï½¼ï¾žï¾èµ·å‹•æ™‚æƒ…å ±ã‚’åˆæœŸè¨å®šã—ã¾ã™ï½¡ 209 // ï½´ï¾ï½¼ï¾žï¾èµ·å‹•æ™‚æƒ…å ±ã¯ã€BuildNumber クラス㮠public static ï¾’ï¾ï¾Šï¾žï½°ã§ã™ï½¡ 210 loadParameter( sysParam , BuildNumber.class ); // 6.4.3.2 (2016/02/19) 211 loadParameter( sysParam , PLUGIN ); 212 213 // GE12 データï¾ï¾žï½°ï½½ã‚ˆã‚Šèªã¿å–ã‚Šã¾ã™ï½¡ 214 // 引数ã®Mapã«èªã¿è¾¼ã‚“ã å€¤ã‚’è¿½åŠ ã—㟠Map ã‚’è¿”ã—ã¾ã™ï½¡ 215 // ã¤ã¾ã‚Šã€ï½¼ï½½ï¾ƒï¾‘ï¾Šï¾Ÿï¾—ï¾’ï½°ï¾€æƒ…å ±ã®ä¸Šæ›¸ãã‚’è¡Œã„ã¾ã™ï½¡ 216 // 5.5.4.4 (2012/07/20) SQLException ã¯ã€catch ã—ã¦ã„ã‚‹ã®ã§ã€loadDBResource ã‹ã‚‰ã¯ã€throws ã•ã‚Œãªã„。 217 // try { 218 loadDBResource( sysParam ); // 6.4.3.2 (2016/02/19) 219 // } 220 // catch( final SQLException ex ) { 221 // final String errMsg = "DB終了(close)処ç†ã‚’実行ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" + CR 222 // + ex.getMessage() + ":" + ex.getSQLState() ; 223 // LogWriter.log( ex ); // 5.5.4.4 (2012/07/20) LogWriter.log è¿½åŠ 224 // ERR_MSG_LIST.add( errMsg ); 225 // } 226 227 // 7.2.5.3 (2020/06/16) MainProcessã¯ã€SystemParameterã¸ç§»å‹• 228 // 7.2.5.0 (2020/06/01) org.opengion.fukurou.fileexec.MainProcesså‡¦ç† 229 // InitialCallURL() ã®èµ·å‹•ãŒä¸€ç•ªæœ€å¾Œãªã®ã§ã€ãã®å‰ã«å…¥ã‚Œã¾ã™ã€‚ 230 if( "GE".equalsIgnoreCase( contextName ) ) { 231 if( "true".equalsIgnoreCase( sysParam.get( "USE_FILEEXEC" ) ) ) { 232 MainProcess.start(); 233 } 234 else { 235 MainProcess.shutdown( false ); 236 } 237 } 238 239 // 7.3.2.3 (2021/04/09) システム定数ã®ICON_DIRã‚„IMAGE_DIRを使用ã—ã¾ã™ã€‚ 240 // GE12ã®åˆæœŸå€¤ã®SQLã¯ã€KBSAKU > '0' ã—ã‹å–å¾—ã—ãªã„ã®ã§ã€åˆæœŸå€¤ã‚’ã€engParam ã‹ã‚‰å–ã£ã¦ãる。 241 final String JSP = sysParam.get( "JSP" ); 242 final String ICON_DIR = StringUtil.nval( sysParam.get( "ICON_DIR" ),engParam.get( "ICON_DIR" ) ); 243 final String IMAGE_DIR = StringUtil.nval( sysParam.get( "IMAGE_DIR" ),engParam.get( "IMAGE_DIR" ) ); 244 sysParam.put( "JSP_ICON",JSP+"/"+ICON_DIR ); 245 sysParam.put( "JSP_IMG" ,JSP+"/"+IMAGE_DIR ); 246 } 247 catch( final Throwable th ) { // 3.6.1.0 (2005/01/05) 248 LogWriter.log( th ); // 5.5.4.4 (2012/07/20) LogWriter.log è¿½åŠ 249 // 5.7.2.0 (2014/01/10) Throwable ã®æƒ…å ±ã‚’ã‚‚ã†å°‘ã—詳細ã«å‡ºã—ã¾ã™ã€‚ 250 final String errMsg = "処ç†ã‚’実行ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" + CR ; 251 // + th.getMessage() + CR 252 // + StringUtil.ogStackTrace( th ) ; 253 // ERR_MSG_LIST.add( errMsg ); 254 // final String errMsg = "処ç†ã‚’実行ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" + CR ; // 6.4.7.1 (2016/06/17) 255 ERR_MSG_LIST.add( ThrowUtil.ogStackTrace( errMsg,th ) ); // 6.4.2.0 (2016/01/29) 256 } 257 finally { 258 // åˆæœŸå€¤ã®ï½´ï¾ï½¼ï¾žï¾ï¾Šï¾Ÿï¾—ï¾’ï½°ï¾€ã«å€‹åˆ¥ã®ï½¼ï½½ï¾ƒï¾‘ï¾Šï¾Ÿï¾—ï¾’ï½°ï¾€ã‚’è¿½åŠ è¨å®šã—ã¾ã™ï½¡ 259 // ã¤ã¾ã‚Šã€ï½´ï¾ï½¼ï¾žï¾ï¾Šï¾Ÿï¾—ï¾’ï½°ï¾€æƒ…å ±ã«ä¸Šæ›¸ãã‚’è¡Œã„ã¾ã™ï½¡ 260 // 6.3.9.1 (2015/11/27) engParam ㌠null ã«ãªã‚‹ã“ã¨ã¯ç„¡ã„(findbugs)。 261 engParam.putAll( sysParam ); 262 263 final int errCnt = ERR_MSG_LIST.size(); 264 if( errCnt > 0 ) { 265 final StringBuilder buf = new StringBuilder( BUFFER_MIDDLE ) 266 .append( "ã€ã‚·ã‚¹ãƒ†ãƒ パラメータã®åˆæœŸåŒ–ã«å¤±æ•—ã—ã¾ã—ãŸã€‚】" ) 267 .append( CR ) 268 .append( "Tomcat ã®è¨å®šçŠ¶æ³ã‚’ã”確èªãã ã•ã„。" ) 269 .append( CR ) 270 .append( "========================================" ) 271 .append( CR ); 272 273 for( int i=0; i<errCnt; i++ ) { 274 buf.append( ERR_MSG_LIST.get(i) ) 275 .append( CR ) 276 .append( "----------------------------------------" ) 277 .append( CR ); 278 } 279 System.out.println( buf ); 280 engParam.put( HybsSystem.LOCAL_CONTX_ERR_KEY,buf.toString() ); 281 } 282 } 283 return Collections.synchronizedMap( engParam ) ; // 6.4.3.2 (2016/02/19) åŒæœŸåŒ–ã—ã¦ãŠã。 284 } 285 286 /** 287 * コï¾ï¾ƒï½·ï½½ï¾„よりã€ï½±ï¾Œï¾Ÿï¾˜ï½¹ï½°ï½¼ï½®ï¾è¨å®šæƒ…å ±ã‚’å–å¾—ã—ã¾ã™ï½¡ 288 * åˆæœŸå€¤ã¯ã€ï½±ï¾Œï¾Ÿï¾˜ï½¹ï½°ï½¼ï½®ï¾ãƒ»ï¾ƒï¾žï½¨ï½½ï½¸ï¾˜ï¾Œï¾Ÿï¾€(WEB-INF/web.xml)ã« 289 * context-param ã¨ã—ã¦ã€ï½·ï½°ã¨å€¤ã®ï½¾ï½¯ï¾„ã§ã€åˆæœŸï½±ï½¸ï½¾ï½½ç”¨ã®æƒ…å ±ã‚’æ¸¡ã—ã¾ã™ï½¡ 290 * データï¾ï¾žï½°ï½½ã¸ã®æŽ¥ç¶šã¯ã€WEB-INF ã® DBConfig.xml ã§è¨å®šã•ã‚ŒãŸæƒ…å ±ã‚’ä½¿ç”¨ã—ã¾ã™ï½¡ 291 * 292 * ã“ã“ã§ã¯ã€å„コï¾ï¾ƒï½·ï½½ï¾„毎ã®å†…éƒ¨æƒ…å ±ã‚’å–å¾—ã—ã¾ã™ï½¡ãã®ä¸ã«ã¯ã€ 293 * BuildNumber クラスã§å®šç¾©ã•ã‚Œã¦ã„ã‚‹å„種フィールド属性もå«ã¾ã‚Œã¾ã™ï½¡ 294 * 295 * REAL_PATH : アドレス(/)ã«å¯¾ã™ã‚‹ã€å®Ÿï¾ƒï¾žï½¨ï¾šï½¸ï¾„リパス 296 * CONTEXT_NAME : アクセス先ã®ä»®æƒ³ï¾Œï½«ï¾™ï¾€ï¾žå(URLã®ï½ºï¾ï¾ƒï½·ï½½ï¾„å) 297 * JSP : アクセス先ã®JSPフォルダå(/URLã®ï½ºï¾ï¾ƒï½·ï½½ï¾„å/jsp) 298 * SYS_LOG_URL : jsp以下ã®ï¾›ï½¸ï¾žï¾Œï½§ï½²ï¾™å // 7.1.0.0 (2020/01/20) jsp以下ã®ï¾›ï½¸ï¾žï¾Œï½§ï½²ï¾™å 299 * SYSTEM_ID : web.xml ã§æŒ‡å®šã™ã‚‹ã€SYSTEM_ID ã®è¨å®šå€¤ 300 * TOMCAT_PORT : web.xml ã§æŒ‡å®šã™ã‚‹ã€Tomcat起動時ポート番å·(8823) 301 * LOG_FILE : web.xml ã§æŒ‡å®šã™ã‚‹ã€JSPアクセスログ出力先(log/log_$(yyyyMMdd).txt) 302 * SERVLET_INFO : ï½»ï½°ï¾Œï¾žï¾šï½¯ï¾„æƒ…å ± [例: Apache Tomcat/5.5.9 ] 303 * TOMCAT_WORK : Tomcatワークã®ä½ç½® [例: H:\java\tomcat5.5.17\work\Catalina\localhost\ver4 ] 304 * TOMCAT_HOME : Tomcat環境ã®ä½ç½® [例: H:\java\tomcat5.5.17 ] 305 * LOGS_DIR : Tomcatã®ï¾›ï½¸ï¾žï¾Œï½«ï¾™ï¾€ï¾ž // 7.1.0.0 (2020/01/20) Tomcatã®ï¾›ï½¸ï¾žï¾Œï½«ï¾™ï¾€ï¾ž 306 * JAVA_HOME : Java実行環境ã®ä½ç½® [例: H:\java\jdk150\jre ] 307 * HOST_NAME : ホストã®åå‰ 308 * HOST_ADRS : ホストã®ï½±ï¾„゙レス 309 * SERVER_INFO : ï½»ï½°ï¾Šï¾žï½°æƒ…å ± [例: HN50G5 ( 200.1.50.165 ) ] 310 * ENGINE_INFO : バージョï¾ç•ªå· [例: 4.3.6.6 ] 311 * RESOURCE_DBID : "RESOURCE" 固定値をè¨å®šï½¡WEB-INF/web.xml ã§æŒ‡å®šã—ã¦ã‚‚無効ã§ã™ï½¡ 312 * OFFICE_HOME : オフィースã®HOME // 7.1.0.0 (2020/01/20) オフィースã®HOME 313 * EXT_DIR : æ‹¡å¼µjarフォルダ // 7.1.0.0 (2020/01/20) æ‹¡å¼µjarフォルダ 314 * IS_SERVICE : サービス起動ã‹ã©ã†ã‹ [サービス起動時ã¯true] // 7.1.0.0 (2020/01/20) サービス起動 315 * 316 * @og.rev 4.1.0.0 (2007/12/27) web.xmlã‹ã‚‰TOMCAT_PORTã‚’èªã‚€å‡¦ç†ã‚’è¿½åŠ 317 * @og.rev 4.2.0.0 (2008/02/18) TOMCAT_PORTを環境変数ã‹ã‚‰å–å¾—ã™ã‚‹ã‚ˆã†å¤‰æ›´ 318 * @og.rev 4.2.0.0 (2008/02/20) web.xmlã§SYSTEM_IDãŒç©ºç™½ã®å ´åˆã«å¤§æ–‡å—コï¾ï¾ƒï½·ï½½ï¾„åãŒè¨å®šã•ã‚Œã‚‹ã‚ˆã†å¤‰æ›´ 319 * @og.rev 4.3.6.6 (2009/05/15) コï¾ï¾ƒï½·ï½½ï¾„å˜ä½ã«ï½´ï¾ï½¼ï¾žï¾ï¾Šï¾žï½°ï½¼ï¾žï½®ï¾æƒ…å ±ã‚’æŒã¤(バージョï¾ï½±ï½¯ï¾Œï¾Ÿåˆ¤å®šç”¨) 320 * @og.rev 5.6.7.1 (2013/08/09) RESOURCE_DBID ã®å€¤ã«ã€"RESOURCE" ã‚’è¨å®šã—ã¦ãŠãã¾ã™ï½¡ 321 * @og.rev 5.6.7.3 (2013/08/23) TOMCAT_HOME ã‚’è¿½åŠ 322 * @og.rev 5.7.3.2 (2014/02/28) Tomcat8 対応。getRealPath( "/" ) ã®äº’æ›æ€§ã®ãŸã‚ã®ä¿®æ£ï½¡ 323 * @og.rev 6.2.4.1 (2015/05/22) REAL_PATH 対応。realPath ã¯ã€HybsSystem経由ã§ã€å–å¾—ã™ã‚‹ï½¡ 324 * @og.rev 6.4.3.2 (2016/02/19) returnã‚’ã‚„ã‚ã¦ã€å¼•æ•°ã®Mapã«ç›´æŽ¥å€¤ã‚’è¨å®šã—ã¾ã™ï½¡ 325 * @og.rev 6.9.0.1 (2018/02/05) RequestParam ã§è¨å®šã•ã‚Œã‚‹å€¤ã‚’ã€ã§ãã‚‹ã ã‘構築ã—ã¦ãŠãã¾ã™ï½¡ 326 * @og.rev 6.9.3.1 (2018/04/02) web.xml ã§å®šç¾©ã•ã‚Œã¦ã„ã‚‹ filterã€servlet ã®ï½·ï½°å称をå–å¾—ã—ã€ã‚ã‚Œã°ã€true ã‚’è¨å®šã—ã¾ã™ï½¡ 327 * @og.rev 7.1.0.0 (2020/01/20) OFFICE_HOME,EXT_DIR,IS_SERVICE 環境変数ã®è¿½åŠ 328 * @og.rev 7.2.3.1 (2020/04/17) System.getenv → HybsConst.getenv 変更(サービス化対応) 329 * @og.rev 8.4.0.0 (2022/12/23) HybsConst.getenv ã® åˆæœŸå€¤ä½¿ç”¨ 330 * 331 * @param map èªã¿æ›¸ãã™ã‚‹Mapオブジェクト 332 * @param context Servletコï¾ï¾ƒï½·ï½½ï¾„ 333 * @param contextName コï¾ï¾ƒï½·ï½½ï¾„å 334 */ 335 private static void loadInitialParameter( final Map<String,String> map,final ServletContext context,final String contextName ) { 336 // コï¾ï¾ƒï½·ï½½ï¾„ã®åˆæœŸåŒ–パラメータ他ã®æƒ…å ±ã‚’ç™»éŒ²ã—ã¦ãŠãã¾ã™ï½¡ 337 final Enumeration<?> enume = context.getInitParameterNames() ; // 4.3.3.6 (2008/11/15) Genericsè¦å‘Šå¯¾å¿œ 338 while( enume.hasMoreElements() ) { 339 final String key = (String)enume.nextElement(); 340 String val = context.getInitParameter( key ); 341 if( val != null && val.isEmpty() ) { val = null; } 342 map.put( key,val ); 343 } 344 345 // SYSTEM_IDãŒnullã®å ´åˆã¯å¤§æ–‡å—ã®ï½ºï¾ï¾ƒï½·ï½½ï¾„åã‚’è¨å®š 346 if( map.get( "SYSTEM_ID" ) == null ){ // 4.2.0.0 (2008/02/20) 347 map.put( "SYSTEM_ID", contextName.toUpperCase( Locale.JAPAN ) ); 348 } 349 350 // 6.2.4.1 (2015/05/22) REAL_PATH 対応。realPath ã¯ã€HybsSystem経由ã§ã€å–å¾—ã™ã‚‹ã€‚ 351 final String REAL_PATH = context.getRealPath( "" ) ; // 7.1.0.0 (2020/01/20) 352// HybsSystem.setRealPath( context.getRealPath( "" ) ); 353 HybsSystem.setRealPath( REAL_PATH ); // 7.1.0.0 (2020/01/20) 354 355 // å„ç¨®ï½¼ï½½ï¾ƒï¾‘æƒ…å ±ã‚’ç™»éŒ²ã—ã¦ãŠãã¾ã™ï½¡ 356// map.put( "REAL_PATH" ,HybsSystem.getRealPath() ); // 6.2.4.1 (2015/05/22) 357 map.put( "REAL_PATH" ,REAL_PATH ); // 6.2.4.1 (2015/05/22) 7.1.0.0 (2020/01/20) 358 map.put( "CONTEXT_NAME" ,contextName ); 359 map.put( "JSP" ,"/" + contextName + "/jsp" ); 360// map.put( "SYS_LOG_URL" ,REAL_PATH + System.getenv( "SYS_LOG_URL" ) ); // 7.1.0.0 (2020/01/20) jsp以下ã®ï¾›ï½¸ï¾žï¾Œï½§ï½²ï¾™å 361 362 map.put( "SERVLET_INFO" ,context.getServerInfo() ); 363 map.put( "TOMCAT_WORK" ,String.valueOf( context.getAttribute( "jakarta.servlet.context.tempdir" ) ) ); 364 365 // 7.1.0.0 (2020/01/20) TOMCAT_HOME ã‚’å…ˆã«å–å¾—ã—ã¦ãŠã。 366 final String TOMCAT_HOME = System.getProperty( "catalina.home" ); 367// map.put( "TOMCAT_HOME" ,System.getProperty( "catalina.home" ) ); // 5.6.7.3 (2013/08/23) 368 map.put( "TOMCAT_HOME" ,TOMCAT_HOME ); // 7.1.0.0 (2020/01/20) Tomcatã®HOMEフォルダ 369 map.put( "TOMCAT_LOGS" ,TOMCAT_HOME + "/logs" ); // 7.1.0.0 (2020/01/20) Tomcatã®ï¾›ï½¸ï¾žï¾Œï½«ï¾™ï¾€ï¾ž 370// map.put( "LOGS_DIR" ,System.getProperty( "logsDir" ) ); // 7.1.0.0 (2020/01/20) Tomcatã®ï¾›ï½¸ï¾žï¾Œï½«ï¾™ï¾€ï¾ž(コï¾ï¾ƒï½·ï½½ï¾„å˜ä½) 371// map.put( "SERVICE_NAME" ,StringUtil.nval( System.getenv( "SERVICE_NAME" ),"" ) ); // 7.1.0.0 (2020/01/20) サービス起動時ã®ï½»ï½°ï¾‹ï¾žï½½å 372// map.put( "SERVICE_NAME" ,StringUtil.nval( HybsConst.getenv( "SERVICE_NAME" ),"" ) ); // 7.2.3.1 (2020/04/17) サービス起動時ã®ï½»ï½°ï¾‹ï¾žï½½å 373 map.put( "SERVICE_NAME" ,HybsConst.getenv( "SERVICE_NAME","" ) ) ; // 8.4.0.0 (2022/12/23) サービス起動時ã®ï½»ï½°ï¾‹ï¾žï½½å getenvã®åˆæœŸå€¤ã‚’使用 374 375 map.put( "JAVA_HOME" ,System.getProperty( "java.home" ) ); 376 377 map.put( "HOST_NAME" ,HybsSystem.HOST_NAME ); 378 map.put( "HOST_ADRS" ,HybsSystem.HOST_ADRS ); 379 map.put( "SERVER_INFO" ,HybsSystem.HOST_NAME + " ( " + HybsSystem.HOST_ADRS + " )" ); 380 map.put( "ENGINE_INFO" ,BuildNumber.ENGINE_INFO ); 381 // 5.6.7.1 (2013/08/09) RESOURCE_DBID ã®å€¤ã«ã€"RESOURCE" ã‚’è¨å®šã—ã¦ãŠãã¾ã™ã€‚ 382 map.put( "RESOURCE_DBID", "RESOURCE" ); 383 384 // 7.1.0.0 (2020/01/20) OFFICE_HOME,EXT_DIR 環境変数ã®è¿½åŠ 385// map.put( "OFFICE_HOME" ,System.getenv( "OFFICE_HOME" ) ); // 7.1.0.0 (2020/01/20) オフィースã®HOME 386 map.put( "OFFICE_HOME" ,HybsConst.getenv( "OFFICE_HOME" ) ); // 7.2.3.1 (2020/04/17) オフィースã®HOME 387// map.put( "EXT_DIR" ,System.getenv( "EXT_DIR" ) ); // 7.1.0.0 (2020/01/20) æ‹¡å¼µjarフォルダ 388 map.put( "EXT_DIR" ,HybsConst.getenv( "EXT_DIR" ) ); // 7.2.3.1 (2020/04/17) æ‹¡å¼µjarフォルダ 389 390 // 7.1.0.0 (2020/01/20) バッï¾èµ·å‹•ã®å ´åˆã¯ã€sun.java.command = "org.apache.catalina.startup.Bootstrap start" , サービス起動時ã¯ã€æœªè¨å®š 391 final boolean IS_SERVICE = null == System.getProperty( "sun.java.command" ); 392 map.put( "IS_SERVICE" , String.valueOf( IS_SERVICE ) ); // 7.1.0.0 (2020/01/20) サービスãªã‚‰ã€true 393 394 // 6.3.9.1 (2015/11/27) final化ã«ã¨ã‚‚ãªã„ã€ï¾›ï½¼ï¾žï½¯ï½¸æ•´ç† 395// final String TOMCAT_PORT = StringUtil.nval( System.getenv( "CONNECTOR_PORT" ) , map.get( "TOMCAT_PORT" ) ); 396// final String TOMCAT_PORT = StringUtil.nval( HybsConst.getenv( "CONNECTOR_PORT" ) , map.get( "TOMCAT_PORT" ) ); // 7.2.3.1 (2020/04/17) 397 final String TOMCAT_PORT = HybsConst.getenv( "CONNECTOR_PORT" , map.get( "TOMCAT_PORT" ) ); // 8.4.0.0 (2022/12/23) getenvã®åˆæœŸå€¤ã‚’使用 398 399 // 6.3.9.1 (2015/11/27) final化ã«ã¨ã‚‚ãªã„ã€ï¾›ï½¼ï¾žï½¯ï½¸æ•´ç† 400 final String HOST_URL = TOMCAT_PORT == null || TOMCAT_PORT.isEmpty() 401 ? "**" : HybsSystem.HOST_NAME + ":" + TOMCAT_PORT + "/" + contextName + "/"; 402 map.put( "HOST_URL", HOST_URL ); 403 404 // 6.9.0.1 (2018/02/05) RequestParam ã§è¨å®šã•ã‚Œã‚‹å€¤ã‚’ã€ã§ãã‚‹ã ã‘構築ã—ã¦ãŠãã¾ã™ã€‚ 405 map.put( "SERVER_NAME" , "localhost" ); // HybsSystem.HOST_NAME ã§ã‚‚良ã„ã‹ã‚‚。 406 map.put( "SERVER_URL" , "http://localhost:" + TOMCAT_PORT + "/" ); 407 map.put( "CONTEXT_URL" , "http://localhost:" + TOMCAT_PORT + "/" + contextName + "/" ); 408 409 // 6.9.3.1 (2018/04/02) web.xml ã§å®šç¾©ã•ã‚Œã¦ã„ã‚‹ filterã€servlet ã®ï½·ï½°å称をå–å¾—ã—ã€ã‚ã‚Œã°ã€true ã‚’è¨å®šã—ã¾ã™ï½¡ 410 // ã‚ーワードã¯ã€USE_(大文å—ã®ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼å) ã§ã™ã€‚ 411 final Map<String,? extends FilterRegistration> filterMap = context.getFilterRegistrations(); 412 for( final String fkey : filterMap.keySet() ) { 413 map.put( "USE_" + fkey.toUpperCase( Locale.JAPAN ) , "true" ); 414 } 415 416 // 6.9.3.1 (2018/04/02) web.xml ã§å®šç¾©ã•ã‚Œã¦ã„ã‚‹ filterã€servlet ã®ï½·ï½°å称をå–å¾—ã—ã€ã‚ã‚Œã°ã€true ã‚’è¨å®šã—ã¾ã™ï½¡ 417 // キーワードã¯ã€USE_(大文å—ã®ï¾Œï½¨ï¾™ï¾€ï½°å) ã§ã™ï½¡ 418 final Map<String,? extends ServletRegistration> servletMap = context.getServletRegistrations(); 419 for( final String skey : servletMap.keySet() ) { 420 map.put( "USE_" + skey.toUpperCase( Locale.JAPAN ) , "true" ); 421 } 422 423 System.out.println( " Load Initial Parameter [" + map.size() + "] finished." ); 424 } 425 426 /** 427 * アプリケーショï¾å€‹åˆ¥ã«è¨å®šã—ã¦ã„るリソースDB(GE12)ã‚’å–å¾—ã—ã¾ã™ï½¡ 428 * 429 * データï¾ï¾žï½°ï½½ã¸ã®æŽ¥ç¶šã¯ã€WEB-INF ã® DBConfig.xml ã§è¨å®šã•ã‚ŒãŸæƒ…å ±ã‚’å…ƒã«ã€ 430 * org.opengion.fukurou.db.ConnectionFactory ã§æŽ¥ç¶šå…ˆã‚’å–å¾—ã—ã¾ã™ï½¡ 431 * ã“ã“ã§ã¯ã€web.xml ã§å®šç¾©ã•ã‚ŒãŸå„アプリケーショï¾å€‹åˆ¥ã®ï¾Šï¾Ÿï¾—メ―タをå–å¾—ã—ã¾ã™ï½¡ 432 * SYSTEM_ID(å¿…é ˆ) ã§ã™ï½¡ 433 * 434 * @og.rev 4.0.0.0 (2007/10/10) æŽ¥ç¶šå…ˆæƒ…å ±ã®ç®¡ç†è¦‹ç›´ã—(コï¾ï¾ƒï½·ï½½ï¾„åˆæœŸè¨å®š) 435 * @og.rev 4.0.0.0 (2007/10/26) コネクショï¾ã‚’ファクトリーã‹ã‚‰å–ã£ã¦ãるよã†ã«å¤‰æ›´ 436 * @og.rev 4.3.6.5 (2009/05/08) dataパス内ã®XMLファイルもèªã¿å–るよã†ã«ã™ã‚‹ 437 * @og.rev 4.3.6.6 (2009/05/15) ↑を廃æ¢ï½¡è‡ªå‹•ï½²ï¾ï½½ï¾„ール対応。 438 * @og.rev 5.1.2.0 (2010/01/01) connection.setAutoCommit ã¯ã€ConnectionFactory ã§è¨å®šæ¸ˆã¿ãªã®ã§ã€ï½ºï¾’ï¾ï¾„アウト 439 * @og.rev 5.1.9.0 (2010/08/01) 自動イï¾ï½½ï¾„ï½°ï¾™ã®è¨å®šè¦‹ç›´ã—(ç”»é¢ã‹ã‚‰ã®ï½²ï¾ï½½ï¾„ール対応) 440 * @og.rev 5.5.4.4 (2012/07/20) SQLException ã¯ã€catch ã—ã¦ã„ã‚‹ã®ã§ã€ã“ã®ï¾’ソッドã‹ã‚‰ã¯ã€throws ã•ã‚Œãªã„。 441 * @og.rev 5.5.4.5 (2012/07/27) åˆæœŸèµ·å‹•æ™‚ã®DB接続先ã¯ã€RESOURCE_DBID ã¨ã™ã‚‹ï½¡ 442 * @og.rev 5.6.6.1 (2013/07/12) xml パス内ã®XMLファイルãŒã‚ã‚Œã°ã€DB登録ã—ã¾ã™ï½¡ 443 * @og.rev 5.6.7.0 (2013/07/27) InitFileLoader ã§ã€resource以下ã¯ã€DBID=RESOURCE xml以下ã¯ã€DBID=DEFAULT ã«ç™»éŒ²ã—ã¾ã™ï½¡ 444 * @og.rev 5.6.7.3 (2013/08/23) DBID=RESOURCE æ¼ã‚Œ 445 * @og.rev 5.7.2.0 (2014/01/10) RuntimeException ã¯ã€catch ã—ãªã„よã†ã«ã—ã¾ã™ï½¡ 446 * @og.rev 6.4.2.1 (2016/02/05) try-with-resources æ–‡ã§è¨˜è¿°ï½¡ 447 * @og.rev 6.4.3.2 (2016/02/19) returnã‚’ã‚„ã‚ã¦ã€å¼•æ•°ã®Mapã«ç›´æŽ¥å€¤ã‚’è¨å®šã—ã¾ã™ï½¡ 448 * @og.rev 6.4.7.1 (2016/06/17) セキï½ï¾˜ï¾ƒï½¨ã®é–¢é€£ã§ã€ï¾›ï½¸ï¾žã®è©³ç´°ã‚’出ã—ã¦ã„ã¾ã›ã‚“ã§ã—ãŸãŒã€å‡ºã™ã‚ˆã†ã«å¤‰æ›´ã—ã¾ã™ï½¡ 449 * @og.rev 6.9.3.0 (2018/03/26) データ検索時ã®ï¾Œï½ªï½¯ï¾ï½»ï½²ï½½ï¾žã‚’è¨å®šï½¡ 450 * @og.rev 8.5.0.0 (2023/04/21) 対象外㮠resource ã‚’èªè¾¼ã‚“ã§ã„ãŸç‚ºã€åˆ¤å®šæ¡ä»¶ã‚’変更 451 * 452 * @param sysParam 入力システムパラメータï¾ï½¯ï¾Œï¾Ÿ 453 */ 454 private static void loadDBResource( final Map<String,String> sysParam ) { 455 final String SYSTEM_ID = sysParam.get( "SYSTEM_ID" ); 456 457 // å¿…é ˆé …ç›®ï¾ï½ªï½¯ï½¸ã‚’è¡Œã„ã¾ã™ï½¡SYSTEM_IDã¯å¿…é ˆã§ã™ï½¡ 458 // ã“ã‚Œã¯ã€web.xml ã§å®šç¾©ãŒå¿…è¦ã§ã™ã€‚ 459 // 4.0.0.0 (2007/10/23)æŽ¥ç¶šæƒ…å ±XML化ã«ã¤ãDB_URLï¾ï½ªï½¯ï½¸ã‚’削除 460 if( SYSTEM_ID == null || SYSTEM_ID.isEmpty() ) { 461 final String errMsg = "システムパラメータã®å¿…é ˆé …ç›®(SYSTEM_ID,DB_URL)㌠null ã§ã™ã€‚" + CR 462 + "SYSTEM_ID=[" + SYSTEM_ID + "] " + CR 463 + "Versino=[" + BuildNumber.VERSION_NO + "] " + CR ; 464 ERR_MSG_LIST.add( errMsg ); 465 return ; // 6.4.3.2 (2016/02/19) 466 } 467 468 Connection defConn = null; // 5.6.7.0 (2013/07/27) DBID=DEFAULT ã®ï½ºï¾ˆï½¸ï½¼ï½®ï¾ 469 Connection rscConn = null; // 5.6.7.0 (2013/07/27) DBID=RESOURCE ã®ï½ºï¾ˆï½¸ï½¼ï½®ï¾ 470 boolean errFlag = true; 471 // 6.4.1.1 (2016/01/16) PMD refactoring. Avoid declaring a variable if it is unreferenced before a possible exit point. 472 final String CONTEXT_NAME = sysParam.get( "CONTEXT_NAME" ); // コï¾ï¾ƒï½·ï½½ï¾„別システムリソース 473 final String HOST_URL = sysParam.get( "HOST_URL" ); // 4.1.0.0 (2007/12/21) TOMCATã¸ã®ï½±ï½¸ï½¾ï½½ç”¨ 474 final String RESOURCE_DBID = sysParam.get( "RESOURCE_DBID" ); // 5.5.4.5 (2012/07/27) åˆæœŸèµ·å‹•æ™‚ã®DB接続先 475 try { 476 // 4.0.0.0(2007/10/25)Connectionã‚’ConnectionFactory経由ã§å–å¾—ã™ã‚‹ã‚ˆã†ã«å¤‰æ›´ã™ã‚‹ã€‚ 477 // コï¾ï¾ƒï½·ï½½ï¾„åã§æŽ¥ç¶šã—ã«ã„ã。ApplicationInfoã¯ä½¿ã‚ãªã„ã®ã§null 478 ConnectionFactory.init( CONTEXT_NAME, null ); // ConnectionFactoryã®åˆæœŸåŒ– 479 480 defConn = ConnectionFactory.connection( null, null ); // 5.6.7.0 (2013/07/27) DBID=DEFAULT ã®ï½ºï¾ˆï½¸ï½¼ï½®ï¾ 481 rscConn = ConnectionFactory.connection( RESOURCE_DBID, null ); // 5.6.7.0 (2013/07/27) DBID=RESOURCE ã®ï½ºï¾ˆï½¸ï½¼ï½®ï¾ 482 483 // 4.3.6.6 (2009/05/15) 484 // 5.1.9.0 (2010/08/01) 自動イï¾ï½½ï¾„ï½°ï¾™ã®è¨å®šè¦‹ç›´ã—(ç”»é¢ã‹ã‚‰ã®ï½²ï¾ï½½ï¾„ール対応) 485 final SystemInstaller installer = new SystemInstaller( defConn , rscConn , new PrintWriter( System.out, true ) ); 486 installer.autoInsUpd( SYSTEM_ID, CONTEXT_NAME, HOST_URL ); 487 488 // resource パス内ã®XMLファイルãŒã‚ã‚Œã°ã€å…ˆã«DB登録ã—ã¾ã™ï½¡(DBID=RESOURCE) 489 // 6.0.0.0 (2014/04/11) XMLFileLoader ã«å¤‰æ›´ï½¡ 490 // 7.0.1.4 (2018/11/26) XMLFileLoader ã‚’final宣言(ã©ã†ã›ã€new ã—ã¦ã‚‹ã®ã§ä½¿ã„回ã—ã‚’æ¢ã‚る。) 491// XMLFileLoader loader = new XMLFileLoader( rscConn,true ); // リソースコネクショï¾ã¨useTimeStamp=true 指定 492// loader.loadClassPathFiles( "resource" ) ; 493 final XMLFileLoader rscLoad = new XMLFileLoader( rscConn,true ); // リソースコネクショï¾ã¨useTimeStamp=true 指定 494// rscLoad.loadClassPathFiles( "resource" ) ; 495 // 8.5.0.0 (2023/04/21) C:/opengionVX/apps/LibreOfficeX.X.X/program/resource を対象外ã«ã™ã‚‹ 496 rscLoad.loadClassPathFiles( "resource", "webapps" ) ; 497 498 // 5.6.6.1 (2013/07/12) xml パス内ã®XMLファイルãŒã‚ã‚Œã°ã€DB登録ã—ã¾ã™ï½¡ 499 // 6.0.0.0 (2014/04/11) XMLFileLoader ã«å¤‰æ›´ï½¡ 500 // 7.0.1.4 (2018/11/26) XMLFileLoader ã‚’final宣言(ã©ã†ã›ã€new ã—ã¦ã‚‹ã®ã§ä½¿ã„回ã—ã‚’æ¢ã‚る。) 501// loader = new XMLFileLoader( defConn,true ); // デフォルトコネクショï¾ã¨useTimeStamp=true 指定 502// loader.loadClassPathFiles( "xml" ) ; 503 final XMLFileLoader xmlLoad = new XMLFileLoader( defConn,true ); // デフォルトコネクショï¾ã¨useTimeStamp=true 指定 504 xmlLoad.loadClassPathFiles( "xml" ) ; 505 506 // コï¾ï¾ƒï½·ï½½ï¾„å˜ä½ã®ï½¼ï½½ï¾ƒï¾‘パラメータを GE12 ã«è¨å®šã—ã¾ã™ï½¡ 507 // dbXMLResourceInsert ã®å¾Œã«ç™»éŒ²ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ï½¡ 508 dbResourceUpdate( rscConn,sysParam ); // 5.6.7.0 (2013/07/27) DBID=RESOURCE ã®ï½ºï¾ˆï½¸ï½¼ï½®ï¾ 509 rscConn.commit(); 510 // Closer.commit( rscConn ); 511 512 final Map<String,String> userMap = new HashMap<>(100); 513 // 6.4.2.1 (2016/02/05) try-with-resources æ–‡ 514 try( PreparedStatement pstmt = rscConn.prepareStatement( QUERY ) ) { 515 pstmt.setFetchSize( DB_FETCH_SIZE ); // 6.9.3.0 (2018/03/26) データ検索時ã®ï¾Œï½ªï½¯ï¾ï½»ï½²ï½½ï¾ž 516 pstmt.setString( 1,SYSTEM_ID ); 517 pstmt.setString( 2,HOST_URL ); // 4.1.0.0 (2007/12/21) 518 try( ResultSet resultSet = pstmt.executeQuery() ) { 519 520 while( resultSet.next() ) { 521 final String key = resultSet.getString(1); 522 final String val = resultSet.getString(2); 523 // 6.4.3.2 (2016/02/19) null値ã®ç™»éŒ²ã¯ã‚„ã‚ã¾ã™ã€‚ 524 userMap.put( key,val == null ? "" : val ); // 6.4.3.2 (2016/02/19) 525 } 526 } 527 } 528 529 // DBを検索ã—ã¦ã€ï¾•ï½°ï½»ï¾žï½°è¨å®šï¾˜ï½¿ï½°ï½½æƒ…å ±ã‚’å–å¾—ã—ã¾ã™ï½¡ 530 System.out.println( " Load DB Resource [" + userMap.size() + "] finished." ); 531 // リソースをï¾ï½°ï½¼ï¾žã—ã¾ã™ï½¡ 532 sysParam.putAll( userMap ); 533 errFlag = false; // ï½´ï¾—ï½°ã§ãªã„ 534 } 535 catch( final SQLException ex ) { 536 Closer.rollback( defConn ); // 5.6.7.0 (2013/07/27) DBID=DEFAULT ã®ï½ºï¾ˆï½¸ï½¼ï½®ï¾ 537 Closer.rollback( rscConn ); // 5.6.7.0 (2013/07/27) DBID=RESOURCE ã®ï½ºï¾ˆï½¸ï½¼ï½®ï¾ 538 LogWriter.log( ex ); 539 final String errMsg = ex.getMessage() + ":" + ex.getSQLState() ; 540 ERR_MSG_LIST.add( errMsg ); 541 } 542 catch( final UnsupportedEncodingException ex ) { 543 Closer.rollback( defConn ); // 5.6.7.0 (2013/07/27) DBID=DEFAULT ã®ï½ºï¾ˆï½¸ï½¼ï½®ï¾ 544 Closer.rollback( rscConn ); // 5.6.7.0 (2013/07/27) DBID=RESOURCE ã®ï½ºï¾ˆï½¸ï½¼ï½®ï¾ 545 LogWriter.log( ex ); 546 final String errMsg = "UTF-8 ãŒã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ Java VM ã¯ã€æ£è¦VMã§ã¯ã‚ã‚Šã¾ã›ã‚“。" 547 + ex.getMessage(); 548 ERR_MSG_LIST.add( errMsg ); 549 } 550 catch( final RuntimeException ex ) { 551 Closer.rollback( defConn ); // 5.6.7.0 (2013/07/27) DBID=DEFAULT ã®ï½ºï¾ˆï½¸ï½¼ï½®ï¾ 552 Closer.rollback( rscConn ); // 5.6.7.0 (2013/07/27) DBID=RESOURCE ã®ï½ºï¾ˆï½¸ï½¼ï½®ï¾ 553 // 5.7.2.0 (2014/01/10) RuntimeException ã¯ã€catch ã—ãªã„よã†ã«ã—ã¾ã™ã€‚ 554 // 6.4.7.1 (2016/06/17) 555 final String errMsg = "システムパラメータã®è¨å®šã§ã€ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" 556 + ex.getMessage(); 557 ERR_MSG_LIST.add( errMsg ); 558 559 throw new HybsSystemException( ex ); // 6.4.3.2 (2016/02/19) 生ã®RuntimeExceptionをラップã—ã¦throwã™ã‚‹ã€‚ 560 } 561 finally { 562 if( errFlag ) { 563 ConnectionFactory.remove( defConn, null ); // 5.6.7.0 (2013/07/27) DBID=DEFAULT ã®ï½ºï¾ˆï½¸ï½¼ï½®ï¾ 564 ConnectionFactory.remove( rscConn, RESOURCE_DBID ); // 5.6.7.3 (2013/08/23) DBID=RESOURCE æ¼ã‚Œ 565 } 566 else { 567 ConnectionFactory.close( defConn, null ); // 5.6.7.0 (2013/07/27) DBID=DEFAULT ã®ï½ºï¾ˆï½¸ï½¼ï½®ï¾ 568 ConnectionFactory.close( rscConn, RESOURCE_DBID ); // 5.6.7.3 (2013/08/23) DBID=RESOURCE æ¼ã‚Œ 569 } 570 } 571 } 572 573 /** 574 * ï½´ï¾ï½¼ï¾žï¾å†…部定義ã®åˆæœŸï¾˜ï½¿ï½°ï½½æƒ…å ±ã‚’DB(GE12)ã«ç™»éŒ²ã—ã¾ã™ï½¡ 575 * 576 * åˆæœŸï¾˜ï½¿ï½°ï½½æƒ…å ±ã¯ã€KBSAKU='0' ã§ç™»éŒ²ã•ã‚Œã¦ã„ã‚‹æƒ…å ±ã§ã€ä¸€æ—¦ã™ã¹ã¦å‰Šé™¤ 577 * ã—ã¦ã‹ã‚‰ã€å…¨ã¦ã®ï¾˜ï½¿ï½°ï½½æƒ…å ±ã‚’è¿½åŠ ã™ã‚‹ã¨ã„ã†å½¢ã‚’ã¨ã‚Šã¾ã™ï½¡ 578 * ãŸã ã—ã€å±žæ€§æƒ…å ±(å称や概è¦ãªã©)を別途登録ã™ã‚‹å ´åˆã¯ã€å…¨ã¦ã‚’ 579 * 削除ã›ãšã«ã€UPDATE ã™ã‚‹æ–¹å‘ã§æ¤œè¨Žã—ãŸã„ã¨æ€ã„ã¾ã™ï½¡ 580 * ãªãŠã€ã“ã®æƒ…å ±ã‚’DB登録ã™ã‚‹ç†ç”±ã¯ã€ï¾˜ï½¿ï½°ï½½ã®è¨å®šå€¤ã‚’変ãˆãŸã„å ´åˆã«ã€ 581 * ï½·ï½°ãŒåˆ¤ã‚‰ãªã„(JavaDOCã‹ã‚‰ã—ã‹èªã¿å–ã‚Œãªã„)ã®ã§ã¯ä¸ä¾¿ãªç‚ºã« 582 * 用æ„ã—ã¦ãŠãã ã‘ã§ã€å†…部ã§ã¯ SystemData オブジェクトã¨ã—ã¦å®šç¾© 583 * ã•ã‚Œã¦ã„る値を使用ã™ã‚‹ãŸã‚ã€ã“ã®ï¾ƒï¾žï½°ï¾€ï¾ï¾žï½°ï½½å€¤ã¯ã€ä½¿ç”¨ã—ã¦ã„ã¾ã›ã‚“。 584 * 585 * ※ 6.9.7.0 (2018/05/14) 586 * 自身ã®ï½»ï½°ï¾Šï¾žï½°ã§è¿½è¨˜ã—ãŸæƒ…å ±ä»¥å¤–ã‚’æ¶ˆã™ãŸã‚ã€ç™»éŒ²æ—¥ä»˜ãŒå¤ã„データã¯å‰Šé™¤ã—ã¾ã™ï½¡ 587 * ç¾çŠ¶ã¯ã€1ヶ月ã«ã—ã¦ã„ã¾ã™ï½¡ 588 * 589 * @og.rev 6.9.7.0 (2018/05/14) DYSETã®ç™»éŒ²ã¨ã€æ—§ï¾ƒï¾žï½°ï¾€ï¼ˆ1ヶ月å‰ï¼‰ã®å‰Šé™¤ã‚’è¡Œã„ã¾ã™ï½¡ 590 * @og.rev 8.5.4.2 (2024/01/12) PMD 7.0.0 CloseResource 対応 591 * 592 * @param conn 登録用コネクショï¾(リソース用) 593 * @param map 入力システムパラメータï¾ï½¯ï¾Œï¾Ÿ 594 * @throws SQLException データï¾ï¾žï½°ï½½ï½±ï½¸ï½¾ï½½ï½´ï¾—ï½° 595 */ 596 private static void dbResourceUpdate( final Connection conn,final Map<String,String> map ) throws SQLException { 597 598 final String SYSTEM_ID = map.get( "SYSTEM_ID" ); 599 final String HOST_URL = map.get( "HOST_URL" ); // 4.1.0.0 (2007/12/21) 600 601 // 6.9.7.0 (2018/05/14) ç¾åœ¨æ™‚刻ã‹ã‚‰ã€1ヶ月を引ã„ãŸæ—¥ä»˜ã¨æ¯”較ã—ã¦ã€å‰Šé™¤ï¾ƒï¾žï½°ï¾€ã‚’決ã‚ã¾ã™ï½¡ 602 final Calendar now = Calendar.getInstance(); 603 now.add( Calendar.MONTH , -1 ); 604 final String OLD_DATE = DateSet.getDate( now.getTimeInMillis() , DYSET_FORMAT ); 605 606 // æ—¢å˜ã®è¨å®šå€¤ã‚’全件DELETEã—ã¾ã™ã€‚ 607 int delCnt; 608 // 8.5.4.2 (2024/01/12) PMD 7.0.0 CloseResource 対応 609// PreparedStatement pstmt = null; 610// try { 611// pstmt = conn.prepareStatement( DEL_SYS ); 612 try ( PreparedStatement pstmt = conn.prepareStatement( DEL_SYS ) ) { 613 pstmt.setString( 1, SYSTEM_ID ); 614 pstmt.setString( 2, HOST_URL ); // 4.1.0.0 (2007/12/21) 615 pstmt.setString( 3, OLD_DATE ); // 6.9.7.0 (2018/05/14) å¤ã„データを消ã—ã¾ã™ã€‚ 616 delCnt = pstmt.executeUpdate(); 617 } 618// finally { 619// Closer.stmtClose( pstmt ); 620// } 621 622 // æ–°è¨å®šå€¤ã‚’全件INSERTã—ã¾ã™ã€‚ 623 final Set<String> keyset = map.keySet(); 624// final String[] keys = keyset.toArray( new String[keyset.size()] ); 625 final String[] keys = keyset.toArray( new String[0] ); // 8.5.4.2 (2024/01/12) PMD 7.0.0 OptimizableToArrayCall 対応 626 627 final String DYSET = DateSet.getDate( DYSET_FORMAT ); // 6.9.7.0 (2018/05/14) 628 int insCnt = 0; 629 // 8.5.4.2 (2024/01/12) PMD 7.0.0 CloseResource 対応 630// try { 631 try ( PreparedStatement pstmt = conn.prepareStatement( INS_SYS ) ) { 632// pstmt = conn.prepareStatement( INS_SYS ); 633 for( int i=0; i<keys.length; i++ ) { 634 pstmt.setString( 1,SYSTEM_ID ); // SYSTEM_ID 635 pstmt.setString( 2,HOST_URL); // CONTXT_PATH 636 pstmt.setString( 3,keys[i] ); // PARAM_ID 637 pstmt.setInt( 4,( i + 1 ) * 10 ); // SEQNO 638 pstmt.setString( 5,map.get( keys[i] ) ); // PARAM 639 pstmt.setString( 6,DYSET ); // DYSET 6.9.7.0 (2018/05/14) 640 pstmt.setString( 7,keys[i] ); // PARAM_ID 641 insCnt += pstmt.executeUpdate(); 642 } 643 } 644// finally { 645// Closer.stmtClose( pstmt ); 646// } 647 648 System.out.print( " DB Context Resource Reconfiguration " ); 649 System.out.println( "DELETE=[" + delCnt + "],INSERT=[" + insCnt + "] finished." ); 650 } 651 652 /** 653 * ServletContext ã®å称をå–å¾—ã—ã¾ã™ï½¡ 654 * 655 * コï¾ï¾ƒï½·ï½½ï¾„ã®ï½±ï½¸ï½¾ï½½ã•ã‚ŒãŸï¾Šï¾Ÿï½½( /training ãªã© )ã®å称を〠656 * å–å¾—ã—ã¾ã™ï½¡(アクセス先ã®ä»®æƒ³ï¾Œï½«ï¾™ï¾€ï¾žå) 657 * 以å‰ã¯ã€é…備記述å(WEB-INF/web.xml)ã® display-name è¦ç´ を見ã¦ã€ 658 * ç„¡ã‘ã‚Œã°ã€å®Ÿï¾Œï½«ï¾™ï¾€ï¾žåã‚’è¿”ã—ã¦ã„ã¾ã—ãŸï½¡ 659 * ※ warファイルã®ï¾Šï¾žï½°ï½¼ï¾žï½®ï¾ç®¡ç†ï¼ˆï½¾ï½¯ï½¼ï½®ï¾ç®¡ç†ï¼‰å¯¾å¿œã¨ã—ã¦ã€## 以下ã®æ–‡å—列を削除ã—ã¾ã™ï½¡ 660 * ## ã¯ã€war化ã®éš›ã«ã€"%23%23" ã«å¤‰æ›ã•ã‚Œã‚‹ãŸã‚ã€ãれもå–り除ã処ç†ã®å¯¾è±¡ã¨ã—ã¾ã™ï½¡ 661 * 662 * @og.rev 6.6.0.0 (2016/12/01) コï¾ï¾ƒï½·ï½½ï¾„パスã‹ã‚‰ã€##バージョï¾ç•ªå·ã‚’å–り去ã£ãŸå€¤ã‚’è¿”ã™ã‚ˆã†ã«ã—ã¾ã™ï½¡ 663 * 664 * @param context Servletコï¾ï¾ƒï½·ï½½ï¾„ 665 * 666 * @return コï¾ï¾ƒï½·ï½½ï¾„ã®ï½ºï¾ï¾ƒï½·ï½½ï¾„å 667 */ 668 private static String getContextName( final ServletContext context ) { 669 String name = null; 670 try { 671 final String path = context.getResource( "/" ).getFile(); 672 final int st = path.lastIndexOf( '/',path.length()-2 ); // 後ã‚ã‹ã‚‰ '/' を検索ã—ãŸä½ç½®(一番後ã‚ã¯ã€'/' ãŒä»˜ã„ã¦ã„ã‚‹ã®ã§æ³¨æ„) 673 int ed = path.indexOf( "##",st+1 ); // '/' 以é™ã§ã€"##" を検索ã—ãŸä½ç½® 674 if( ed < 0 ) { 675 ed = path.indexOf( "%23%23",st+1 ); // '/' 以é™ã§ã€"%23%23" を検索ã—ãŸä½ç½® 676 } 677 final int ed2 = ed > 0 ? ed : path.length()-1 ; // ## ãŒç„¡ã‘ã‚Œã°ã€ä¸€ç•ªæœ€å¾Œã®æ–‡å—ã‚’å«ã¾ãªã„ã€ä¸€ã¤å‰ã¾ã§ã€‚ã‚ã‚Œã°ã€ãã“ã¾ã§ 678 name = path.substring( st+1,ed2 ); 679 } 680 catch( final MalformedURLException ex ) { 681 LogWriter.log( ex ); 682 final String errMsg = "ã“ã®ãƒ‘スåã¯ã€æ£ã—ã„フォームã§ã¯ã‚ã‚Šã¾ã›ã‚“。 " 683 + ex.getMessage(); 684 ERR_MSG_LIST.add( errMsg ); 685 } 686 return name ; 687 } 688 689 /** 690 * 指定ã®ï½¸ï¾—ス㮠public static ãªï¾Œï½¨ï½°ï¾™ï¾„゙キーã¨å€¤ã®ï¾ï½¯ï¾Œï¾Ÿã‚’作æˆã—ã¾ã™ï½¡ 691 * 主ã«ã€ï½´ï¾ï½¼ï¾žï¾é–¢é€£ã®ï½¸ï¾—ï½½ã«ï¾Šï¾Ÿï¾—メータファイルをクラスã¨ã—ã¦å®šç¾©ã—〠692 * ï½´ï¾ï½¼ï¾žï¾ã¨ã¨ã‚‚ã«é…布ã—ã¾ã™ï½¡é…布ã•ã‚ŒãŸï½¸ï¾—スを元ã«ã€ï¾Šï¾Ÿï¾—メータを 693 * èªã¿å–ã‚Šã¾ã™ï½¡ 694 * ã“ã®å‡¦ç†ã¯ リフレクショï¾ã‚’使用ã—ã¦ï½¸ï¾—ス㮠public static フィールドを 695 * å–å¾—ã—ã€LinkedHashMap ã«ã‚ˆã‚Šã€å–å¾—é †ã‚’ï½·ï½°ï¾Œï¾Ÿã—ãŸã¾ã¾ã€Mapã‚’è¿”ã—ã¾ã™ï½¡ 696 * 697 * @og.rev 5.7.2.0 (2014/01/10) ERR_MSG_LIST ã¯ã€ä¸€æ—¦æ–‡å—列ã«å¤‰æ›ã—ã¦ã‹ã‚‰è¿½åŠ ã—ã¾ã™ï½¡ 698 * @og.rev 6.4.3.2 (2016/02/19) returnã‚’ã‚„ã‚ã¦ã€å¼•æ•°ã®Mapã«ç›´æŽ¥å€¤ã‚’è¨å®šã—ã¾ã™ï½¡ 699 * 700 * @param map èªã¿æ›¸ãã™ã‚‹Mapオブジェクト 701 * @param cls クラスオブジェクト 702 */ 703 private static void loadParameter( final Map<String,String> map , final Class<?> cls ) { 704 705 int cnt = 0; 706 try { 707 // final Field[] field = cls.getFields(); ã®å–得。public フィールドã®ã¿ 708 for( final Field fld : cls.getFields() ) { 709 if( Modifier.isStatic( fld.getModifiers() ) ) { 710 map.put( fld.getName() , (String)fld.get( null ) ); 711 cnt++ ; 712 } 713 } 714 } 715 catch( final IllegalAccessException ex ) { 716 LogWriter.log( ex ); 717 // 5.7.2.0 (2014/01/10) ERR_MSG_LIST ã¯ã€ä¸€æ—¦æ–‡å—列ã«å¤‰æ›ã—ã¦ã‹ã‚‰è¿½åŠ ã—ã¾ã™ã€‚ 718 final String errMsg = "クラスã‹ã‚‰ã€ãƒ‘ラメータをå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" + CR 719 + " クラスå=[" + cls.getName() + "]" + CR 720 + ex.getMessage(); 721 ERR_MSG_LIST.add( errMsg ); 722 } 723 724 System.out.println( " ClassLoad " + cls.getName() + " Parameter [" + cnt + "] finished." ); 725 } 726 727 /** 728 * 指定ã®ï½·ï½°ï¾œï½°ï¾„゙ã®ï¾Œï½§ï½²ï¾™ã‚’クラスパスよりå–å¾—ã—ã€ï½·ï½°ã¨å€¤ã®ï¾ï½¯ï¾Œï¾Ÿã‚’作æˆã—ã¾ã™ï½¡ 729 * 主ã«ã€ï½´ï¾ï½¼ï¾žï¾é–¢é€£ã®ï½¸ï¾—ï½½ã«ï¾Šï¾Ÿï¾—メータファイルをPlugInクラスã¨ã—ã¦å®šç¾©ã—ã€é…布ã—ã¾ã™ï½¡ 730 * ã“ã®å‡¦ç†ã®å–å¾—ã«ã€ï½¸ï¾—スパスã®é †åºãŒé–¢ä¿‚ã—ã¾ã™ï½¡æœ€åˆã«å–å¾—ã•ã‚ŒãŸï½·ï½°ã¯ã€ã‚ã¨ã‹ã‚‰ 731 * èªã¿å–られãŸï½¸ï¾—スパスã¯ã€å†ï½¾ï½¯ï¾„ã—ã¾ã›ã‚“。 732 * 733 * @og.rev 5.3.6.0 (2011/06/01) 並ã³é †ã‚’ã€ï½·ï½°ã®åç§°é †ã¨ã™ã‚‹ï½¡ 734 * @og.rev 5.7.2.0 (2014/01/10) ERR_MSG_LIST ã¯ã€ä¸€æ—¦æ–‡å—列ã«å¤‰æ›ã—ã¦ã‹ã‚‰è¿½åŠ ã—ã¾ã™ï½¡ 735 * @og.rev 5.7.2.0 (2014/01/10) RuntimeException ã¯ã€catch ã—ãªã„よã†ã«ã—ã¾ã™ï½¡ 736 * @og.rev 6.4.3.2 (2016/02/19) returnã‚’ã‚„ã‚ã¦ã€å¼•æ•°ã®Mapã«ç›´æŽ¥å€¤ã‚’è¨å®šã—ã¾ã™ï½¡ 737 * @og.rev 6.6.0.0 (2016/12/01) コï¾ï¾ƒï½·ï½½ï¾„パスã‹ã‚‰ã€##バージョï¾ç•ªå·ã‚’å–り去ã£ãŸå€¤ã‚’è¿”ã™ã‚ˆã†ã«ã—ã¾ã™ï½¡ 738 * 739 * @param ioMap èªã¿æ›¸ãã™ã‚‹Mapオブジェクト 740 * @param keyword クラスオブジェクトを検索ã™ã‚‹å…ƒ 741 */ 742 private static void loadParameter( final Map<String,String> ioMap , final String keyword ) { 743 final Map<String,String> map = new TreeMap<>(); // 5.3.6.0 (2011/06/01) 並ã³é †ã‚’ã€ï½·ï½°ã®åç§°é †ã¨ã™ã‚‹ã€‚ 744 try { 745 final ClassLoader loader = Thread.currentThread().getContextClassLoader(); 746 final Enumeration<URL> enume = loader.getResources( keyword ); // 4.3.3.6 (2008/11/15) Genericsè¦å‘Šå¯¾å¿œ 747 while( enume != null && enume.hasMoreElements() ) { 748 final URL url = enume.nextElement(); // 4.3.3.6 (2008/11/15) Genericsè¦å‘Šå¯¾å¿œ 749 // jar:file:/実ディレクトリ ã¾ãŸã¯ã€file:/実ディレクトリ 750 final String dir = url.getFile().replaceAll( "%23%23","##" ); // 6.6.0.0 (2016/12/01) 751 752 final FindClassFiles filenames = new FindClassFiles( dir,keyword ); 753 final String[] names = filenames.getFilenames(); 754 // 8.5.4.2 (2024/01/12) PMD 7.0.0 ForLoopCanBeForeach 755// for( int i=0; i<names.length; i++ ) { 756// final String val = names[i]; 757 for( final String val : names ) { 758 final String key = val.substring( val.lastIndexOf( '.' )+1 ); 759 if( key.indexOf( '_' ) >= 0 && !map.containsKey( key ) && key.indexOf( '$' ) < 0 ) { 760 map.put( key , val ); 761 } 762 } 763 System.out.println( " FileCheck " + dir + " [" + names.length + "] find." ); 764 } 765 } 766 catch( final IOException ex ) { 767 LogWriter.log( ex ); 768 // 5.7.2.0 (2014/01/10) ERR_MSG_LIST ã¯ã€ä¸€æ—¦æ–‡å—列ã«å¤‰æ›ã—ã¦ã‹ã‚‰è¿½åŠ ã—ã¾ã™ã€‚ 769 final String errMsg = "ã‚ーワードã‹ã‚‰ã€ãƒ‘ラメータをå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" + CR 770 + " ã‚ーワードå=[" + keyword + "]" + CR 771 + ex.getMessage(); 772 ERR_MSG_LIST.add( errMsg ); 773 } 774 // 5.7.2.0 (2014/01/10) RuntimeException ã¯ã€catch ã—ãªã„よã†ã«ã—ã¾ã™ã€‚ 775 System.out.println( " FileLoad " + keyword + " Parameter [" + map.size() + "] finished." ); 776 ioMap.putAll( map ); // TreeMap ã§ã€ï½·ï½°ã®åç§°é †ã«ä¸¦ã‚“ã Mapã‚’ã€LinkedHashMapã«ç™»éŒ²é †ã«è¨å®šã™ã‚‹ã€‚ 777 } 778}