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.taglib; 017 018import java.io.BufferedInputStream; 019import java.io.ByteArrayInputStream; 020import java.io.ByteArrayOutputStream; 021import java.io.File; 022import java.io.IOException; 023import java.io.InputStream; 024import java.io.StringReader; // 6.9.0.0 (2018/01/31) 025import java.io.Writer; 026import java.util.Map; 027 028import org.opengion.fukurou.system.LogWriter; 029import org.opengion.fukurou.system.Closer; 030import org.opengion.fukurou.system.HybsConst; // 6.4.5.2 (2016/05/06) 031import org.opengion.fukurou.util.FileUtil; 032// import org.opengion.fukurou.util.SOAPConnect; // 6.9.0.0 (2018/01/31) SOAPConnect 廃止に伴う修正 033import org.opengion.fukurou.util.StringUtil; 034// import org.opengion.fukurou.util.URLConnect; // 6.9.0.0 (2018/01/31) URLConnect 廃止 035import org.opengion.fukurou.util.HttpConnect; // 6.9.0.0 (2018/01/31) 新規追加 036// import org.opengion.fukurou.util.XHTMLTag; 037import org.opengion.fukurou.xml.XML2TableParser; 038import org.opengion.fukurou.util.ToString; // 6.1.1.0 (2015/01/17) 039import org.opengion.fukurou.xml.XSLT; 040import org.opengion.hayabusa.common.HybsSystem; 041import org.opengion.hayabusa.common.HybsSystemException; 042import org.opengion.hayabusa.db.DBTableModel; 043import org.opengion.hayabusa.db.DBTableModelUtil; 044 045import static org.opengion.fukurou.util.StringUtil.nval; 046 047/** 048 * 指定のURLに接続します。 049 * 050 * エンジンでは、URL にアクセスすることで、デーモンを起動したり、 051 * コマンドを実行(adminメニュー)することが出来ます。 052 * もちろん、検索条件を指定して、結果を取得することも可能です。 053 * このタグでは、URLにアクセスして、コマンドを実行したり結果を取得できます。 054 * さらに、ファイルを POST で転送したり、処理結果を XSLT変換したり出来ます。 055 * 056 * @og.formSample 057 * ●形式: 058 * <og:urlConnect 059 * url = "http://・・・ " 必須 060 * proxyHost = "proxy.opengion.org" 061 * proxyPort = "8080" 062 * timeout = "1" 063 * keys = "command,SYSTEM_ID" 064 * vals = "NEW,GE" 065 * useSystemUser = "true/false" 初期値:true 066 * authUserPass = "admin:******" 初期値:admin:****** 067 * display = "false/true" 初期値:false 068 * xslFile = "filter.xsl" 069 * saveFile = "outdata.xml" 070 * × soapNameSpace = "MyWebService" 6.9.0.0 (2018/01/31) 廃止 071 * × soapMethodName= "test" 6.9.0.0 (2018/01/31) 廃止 072 * tableId = "DEFAULT" 073 * rowKey = "item" 074 * colKeys = "person_id,person_name" 075 * rtnKeys = "version,summary" 076 * encode = "UTF-8" 077 * /> 078 * 079 * url : 接続するURLを指定します。必須属性です。 080 * proxyHost : proxy が存在する場合は、そのホスト名(例:proxy.opengion.org) 081 * proxyPort : proxy が存在する場合は、そのポート番号(例:8080) 082 * timeout : 通信リンクのオープン時に、指定された秒単位のタイム・アウト値を使用(例:1) 083 * keys,vals : URLの指定時に、パラメータ(引数)を追加します。URLに含めても構いません。 084 * : SOAPによる呼び出しの場合の詳細については、keysの属性定義を参照して下さい。 085 * postKey : POST を使って、postFile属性のファイル内容を送信する時のキーです。 086 * postFile : POST を使って、postFile属性のファイル内容を送信します。 087 * postFile を指定せず、postKey のみ指定して、BODY部に何か書き込めば、 088 * そのBODY部の文字列を POSTの内容として送信します。 089 * authUserPass : Basic認証を使用する場合の接続ユーザー:パスワードを指定します。 090 * 接続時のユーザーとパスワードを、USER:PASSWD 形式 で指定します。 091 * useSystemUser="false" で何も指定しない場合は、Basic認証を使用しません。 092 * useSystemUser : Basic認証の接続ユーザー:パスワードに、システムユーザーを使用 093 * するかどうかを指定します(初期値:true)。 094 * true の場合は、SYSTEM:***** を使用します。 095 * xslFile : 接続先データを取得し、そのデータを XSLT変換する場合のXSLファイルを指定します。 096 * display : 接続した結果のレスポンスを画面に表示するかどうかを指定します(初期値:false)。 097 * エンジンの場合、コマンドを投げるだけであれば、結果を取得する必要は 098 * ありません。イメージ的には、取得データが、このタグの位置に置き換わります。 099 * xslFile が指定されている場合、XSLT変換してセーブします。 100 * saveFile : 接続先データを取得した結果を、ファイル出力します。 101 * display="true" と、saveFile を併用することはできません。 102 * xslFile が指定されている場合、XSLT変換してセーブします。 103 * soapNameSpace : SOAPによるWebサービスの呼び出しで、メソッド名及びパラメーターの名前空間を指定します。 104 * この名前空間は、通常WSDLファイルのdescriptionsタグのtargetNamespace属性の値により 105 * 定義されます。 6.9.0.0 (2018/01/31) 廃止 106 * soapMethodName: SOAPによるWebサービスの呼び出しで、メソッド名を指定します。 107 * WSDLファイルで定義されるoperationタグのname属性の値に相当します。 6.9.0.0 (2018/01/31) 廃止 108 * tableId : 結果のXMLファイルをDBTableModelに変換した際に、登録するTableIdを指定します。 109 * rowKey : XMLをDBTableModelに変換する際の、行を表すタグキーを指定します。 110 * colKeys : XMLをDBTableModelに変換する際の、項目を表すタグキーの一覧を指定します。 111 * キーにPARENT_TAG、PARENT_FULL_TAGを指定することで、rowKeyで指定されたタグの 112 * 直近の親タグ、及びフルの親タグ名(親タグの階層を">[タグA]>[タグB]>[タグC]>"で表現)を 113 * 取得することができます。 114 * rtnKeys : XMLのタグキーを指定して値を取り出します。取り出した値は、{@XX}形式で処理することが可能です。 115 * encode : データの入出力を行うエンコードを指定します。 116 * 117 * ●body:あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します) 118 * POSTデータを記述します。 119 * 120 * ●Tag定義: 121 * <og:urlConnect 122 * url ○【TAG】アクセスする URL を指定します(必須)(必須)。 123 * proxyHost 【TAG】プロキシ経由で接続する場合の、プロキシホスト名を指定します 124 * proxyPort 【TAG】プロキシ経由で接続する場合の、プロキシポート番号を指定します 125 * timeout 【TAG】通信リンクのオープン時に、指定された秒単位のタイム・アウト値を使用 126 * (初期値:URL_CONNECT_TIMEOUT[={@og.value SystemData#URL_CONNECT_TIMEOUT}])。) 127 * keys 【TAG】アクセスパラメータキーをCSV形式で複数指定します 128 * vals 【TAG】keys属性に対応する値をCSV形式で複数指定します 129 * useSystemUser 【TAG】Basic認証で接続するユーザーにSYSTEMユーザーを使用するかどうか[true/false]を指定します(初期値:true) 130 * authUserPass 【TAG】Basic認証を使用して接続する場合のユーザー:パスワードを指定します(初期値:null) 131 * display 【TAG】接続の結果を表示するかどうかを指定します(初期値:false) 132 * xslFile 【TAG】接続の結果を表示する場合にXSLT変換する場合のファイルを指定します 133 * saveFile 【TAG】接続の結果をファイルに保存します 134 * postKey 【TAG】POST を使って、postFile属性のファイル内容を送信する時のキーを指定します 135 * postFile 【TAG】POST を使って、postFile属性のファイル内容を送信します 136 * method 【TAG】送信メソッド[GET/POST/SOAP]を指定します(初期値:GET) 137 * errNeglect 【TAG】(通常は使いません) 接続エラーを無視する場合にtrueとします(初期値false) 138 * × soapNameSpace 【廃止】SOAPによるWebサービスの呼び出しで、メソッド名及びパラメーターの名前空間を指定します ( 6.9.0.0 (2018/01/31) SOAPConnect 廃止に伴う修正) 139 * × soapMethodName 【廃止】SOAPによるWebサービスの呼び出しで、メソッド名を指定します ( 6.9.0.0 (2018/01/31) SOAPConnect 廃止に伴う修正) 140 * tableId 【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します 141 * scope 【TAG】キャッシュする場合のスコープ[request/page/session/application]を指定します(初期値:session) 142 * rowKey 【TAG】結果のXMLをDBTableModelに変換する際に、行のキーとなるタグ名を指定します 143 * colKeys 【TAG】結果のXMLをDBTableModelに変換する際に、項目のキーとなるタグ名の一覧を指定します 144 * rtnKeys 【TAG】結果のXMLを変換する際に、パラメータ(Attributes)として取り込むキーの一覧を指定します 145 * encode 【TAG】データの入出力のエンコードを指定します(初期値:UTF-8) 146 * mainTrans 【TAG】(通常は使いません)タグで処理される処理がメインとなるトランザクション処理かどうかを指定します(初期値:false) 147 * caseKey 【TAG】このタグ自体を利用するかどうかの条件キーを指定します(初期値:null) 5.7.7.2 (2014/06/20) 148 * caseVal 【TAG】このタグ自体を利用するかどうかの条件値を指定します(初期値:null) 5.7.7.2 (2014/06/20) 149 * caseNN 【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます(初期値:判定しない) 5.7.7.2 (2014/06/20) 150 * caseNull 【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます(初期値:判定しない) 5.7.7.2 (2014/06/20) 151 * caseIf 【TAG】指定の値が、true/TRUE文字列の場合は、このタグは使用されます(初期値:判定しない) 152 * debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false) 153 * > ... Body ... 154 * </og:urlConnect> 155 * 156 * ●例: 157 * アドミン関連 158 * http://localhost:8823/gf/jsp/admin?COMMAND=infomation [状況表示] 159 * http://localhost:8823/gf/jsp/admin?COMMAND=close [プール削除] 160 * http://localhost:8823/gf/jsp/admin?COMMAND=loginUser [ログインユーザー] 161 * http://localhost:8823/gf/jsp/admin?COMMAND=システムパラメータ [システムパラメータ] 162 * 163 * 帳票デーモン 164 * http://localhost:8823/gf/jsp/REP08/result.jsp?cmd=SET&period=5000&command=NEW&timerTask=org.opengion.hayabusa.report.ReportDaemon&name=ReportDaemon デーモン起動 165 * http://localhost:8823/gf/jsp/REP08/result.jsp?cmd=CANCEL&period=5000&command=NEW&timerTask=org.opengion.hayabusa.report.ReportDaemon&name=ReportDaemon デーモン停止 166 * 167 *Tomcat Manager 画面 168 * http://localhost:8823/manager/reload?path=/ver4 アプリケーションを再ロード 169 * 170 * @og.rev 3.6.0.0 (2004/09/17) 新規作成 171 * @og.rev 4.1.0.0 (2007/12/22) POSTメソッドで複数キーを登録できるように属性追加 172 * @og.rev 5.1.5.0 (2010/04/01) SOAP対応 173 * @og.rev 6.9.0.0 (2018/01/31) SOAPConnect 廃止に伴う修正 174 * @og.group その他部品 175 * 176 * @version 4.0 177 * @author Kazuhiko Hasegawa 178 * @since JDK5.0, 179 */ 180public class URLConnectTag extends CommonTagSupport { 181 /** このプログラムのVERSION文字列を設定します。 {@value} */ 182 private static final String VERSION = "6.9.0.1 (2018/02/05)" ; 183 private static final long serialVersionUID = 690120180205L ; 184 185// private static final String DEFAULT_USER = "SYSTEM:MANAGER" ; 186 private static final String DEFAULT_USER = "admin:admin" ; // 6.9.0.1 (2018/02/05) この際、変更しておきます。 187 188 private transient DBTableModel table; // 5.1.5.0 (2010/04/01) DBTableModel出力対応 189 190 private String urlStr ; 191 private String[] keys ; 192 private String[] vals ; 193 private String xslFile ; 194 private String saveFile ; 195 private String postKey ; 196 private String postData ; // postFile ファイルか、BODY部 197 private int timeout = HybsSystem.sysInt( "URL_CONNECT_TIMEOUT" ); // 6.2.5.0 (2015/06/05) 新規追加 198 private boolean useSystemUser = true; 199 private String authUserPass ; 200 private boolean display ; 201 private String proxyHost ; // 4.0.0 (2007/07/25) 202 private int proxyPort = -1; // 4.0.0 (2007/07/25) 203 private String method = "GET"; // 4.1.0.0 (2007/12/22) POSTorGETorSOAP 204 private boolean errNglctFlag ; // 4.1.1.0 (2008/01/22) エラー無視フラグ 205// private String soapNameSpace ; // 5.1.5.0 (2010/04/01) SOAP対応 // 6.9.0.0 (2018/01/31) SOAPConnect 廃止に伴う修正 206// private String soapMethodName ; // 5.1.5.0 (2010/04/01) SOAP対応 // 6.9.0.0 (2018/01/31) SOAPConnect 廃止に伴う修正 207 private String tableId = HybsSystem.TBL_MDL_KEY; // 5.1.5.0 (2010/04/01) DBTableModel出力対応 208 private String rowKey ; // 5.1.5.0 (2010/04/01) DBTableModel出力対応 209 private String[] colKeys ; // 5.1.5.0 (2010/04/01) DBTableModel出力対応 210 private String[] rtnKeys ; // 5.1.5.0 (2010/04/01) DBTableModel出力対応 211 private String encode = "UTF-8"; // 5.1.6.0 (2010/05/01) エンコード指定対応 212 213 private boolean isTableOut ; // 5.1.5.0 (2010/04/01) DBTableModel出力対応 214 private boolean isOutParse ; // 5.1.5.0 (2010/04/01) DBTableModel出力対応 215 private boolean isMainTrans = true; // 5.1.6.0 (2010/05/01) DBLastSqlの処理の見直し 216 217 /** 218 * デフォルトコンストラクター 219 * 220 * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor. 221 */ 222 public URLConnectTag() { super(); } // これも、自動的に呼ばれるが、空のメソッドを作成すると警告されるので、明示的にしておきます。 223 224 /** 225 * Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。 226 * 227 * @og.rev 5.1.5.0 (2010/04/01) SOAP・DBTableModel出力対応 228 * @og.rev 5.1.6.0 (2010/05/01) DBLastSqlの処理は、DBTableModelが新規作成された処理でのみ行う。 229 * @og.rev 5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属性を追加 230 * 231 * @return 後続処理の指示 232 */ 233 @Override 234 public int doStartTag() { 235 // 5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属性を追加 236 if( !useTag() ) { return SKIP_BODY ; } 237 238 // 5.1.5.0 (2010/04/01) DBTableModel出力対応 239 if( rowKey != null || colKeys != null || rtnKeys != null ) { 240 isOutParse = true; 241 if( rowKey != null || colKeys != null ) { 242 isTableOut = true; 243 useMainTrans( isMainTrans ); // 5.1.6.0 (2010/05/01) DBLastSqlの処理の見直し 244 startQueryTransaction( tableId ); 245 } 246 } 247 248 // 5.1.5.0 (2010/04/01) SOAPの場合は、postKeyが指定されない。 249 // 6.4.1.1 (2016/01/16) PMD refactoring. Avoid if (x != y) ..; else ..; 250 return postData == null ? EVAL_BODY_BUFFERED : SKIP_BODY ; 251 } 252 253 /** 254 * Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。 255 * 256 * @return 後続処理の指示(SKIP_BODY) 257 */ 258 @Override 259 public int doAfterBody() { 260 postData = getBodyString(); 261 262 return SKIP_BODY ; 263 } 264 265 /** 266 * Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。 267 * 268 * @og.rev 4.0.1.0 (2007/12/12) PostKeys,PostVals処理を追加 269 * @og.rev 5.1.5.0 (2010/04/01) SOAP・DBTableModel出力対応 270 * @og.rev 5.2.0.0 (2010/09/01) エラー処理でNullPointerExceptionが発生するバグを修正 271 * @og.rev 5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属性を追加 272 * @og.rev 6.3.8.0 (2015/09/11) FileUtil#getPrintWriter( OutputStream,String ) を使用。 273 * @og.rev 6.9.0.0 (2018/01/31) URLConnect 廃止、HttpConnect に置き換えます。 274 * @og.rev 6.9.0.1 (2018/02/05) IOException を、Throwable に変更して、すべてのエラーをキャッチするようにします。 275 * 276 * @return 後続処理の指示 277 */ 278 @Override 279 public int doEndTag() { 280 debugPrint(); // 4.0.0 (2005/02/28) 281 282 // 5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属性を追加 283 if( !useTag() ) { return EVAL_PAGE ; } 284 285// URLConnect conn = null; 286 HttpConnect conn = null; // 6.9.0.0 (2018/01/31) URLConnect 廃止、HttpConnect に置き換えます。 287 ByteArrayOutputStream pipeOut = null; 288 Writer outWriter = null; // 6.3.8.0 (2015/09/11) rty の外に移動 289 try { 290 conn = connect(); 291 292 // 出力先が、画面かファイルかを判断します。 293 // 5.1.5.0 (2010/04/01) DBTableModel出力対応 294 if( isOutParse ) { 295 pipeOut = new ByteArrayOutputStream(); 296 // 6.3.8.0 (2015/09/11) FileUtil#getPrintWriter( OutputStream,String ) を使用。 297 outWriter = FileUtil.getPrintWriter( pipeOut, "UTF-8" ); // 6.3.8.0 (2015/09/11) 298 } 299 else if( display ) { 300 outWriter = FileUtil.getNonFlushPrintWriter( pageContext.getOut() ) ; // JspWriter の取得 301 } 302 else if( saveFile != null ) { 303 outWriter = FileUtil.getPrintWriter( new File( saveFile ),"UTF-8" ); 304 } 305 306 final String rtnData = conn.readData(); // 6.9.0.1 (2018/02/05) 307 308 // 出力先が存在する場合。 309 if( outWriter != null ) { 310 // 6.4.1.1 (2016/01/16) PMD refactoring. Avoid if (x != y) ..; else ..; 311 if( xslFile == null ) { 312 outWriter.write( rtnData ); 313 } 314 else { 315 final XSLT xslt = new XSLT(); 316 xslt.setXslFile( xslFile ); 317 xslt.setOutFile( outWriter ); 318// xslt.transform( conn.getReader() ); 319 xslt.transform( new StringReader( rtnData ) ); // 6.9.0.0 (2018/01/31) リーダーが取り出せないので、文字列から作成します。 320 xslt.close(); 321 } 322 } 323 } 324// catch( final IOException ex ) { 325 catch( final Throwable th ) { // 6.9.0.1 (2018/02/05) 326 final String errMsg = "データ取得中にエラーが発生しました。" + CR 327 + " url=[" + urlStr + "]" + CR 328 // 5.2.0.0 (2010/09/01) エラー処理でNullPointerExceptionが発生するバグを修正 329 + " message=[" + ( conn == null ? "NO_CONNECTION" : conn.getMessage() ) + "]" + CR 330 + " Exception=[" + th.getMessage() + "]" ; 331 if( errNglctFlag ) { // 4.1.1.0 (2008/01/22) エラーを無視(標準エラー出力のみ) 332 LogWriter.log( errMsg ); 333 } 334 else { // 通常は無視しない 335 throw new HybsSystemException( errMsg,th ); 336 } 337 } 338 finally { 339 Closer.ioClose( outWriter ); // 6.3.8.0 (2015/09/11) finally に移動 340// if( conn != null ) { conn.disconnect(); } 341 } 342 343 // 5.1.5.0 (2010/04/01) DBTableModel出力対応 344 if( isOutParse ) { 345 // 6.3.8.0 (2015/09/11) AutoCloseableを使用したtry-with-resources構築に対応 346 try( final InputStream strm = new BufferedInputStream( new ByteArrayInputStream( pipeOut.toByteArray() ) ) ) { 347 parse( strm ); 348 } 349 // 6.3.8.0 (2015/09/11) 今まで不要だった、IOException が発生。AutoCloseable のせい?。 350 catch( final IOException ex ) { // catch は、close() されてから呼ばれます。 351 final String errMsg = "parse 処理中でエラーが発生しました。" + CR 352 + "\t close() エラーです。" + CR 353 + "\t " + ex.getMessage() + CR ; 354 System.err.println( errMsg ); 355 } 356 357 if( isTableOut && table != null && !commitTableObject( tableId, table ) ) { 358 jspPrint( "URLConnectTag Query処理が割り込まれました。DBTableModel は登録しません。" ); 359 return SKIP_PAGE ; 360 } 361 } 362 363 return EVAL_PAGE ; 364 } 365 366 /** 367 * URLに対して接続を行います。 368 * 369 * @og.rev 5.1.6.0 (2010/05/01) エンコード指定対応 370 * @og.rev 6.2.5.0 (2015/06/05) timeout属性追加 371 * @og.rev 6.9.0.0 (2018/01/31) SOAPConnect 廃止に伴う修正 372 * @og.rev 6.9.0.0 (2018/01/31) URLConnect 廃止、HttpConnect に置き換えます。 373 * 374 * @return 接続オブジェクト 375 * @throws IOException 入出力エラーが発生したとき 376 */ 377// private URLConnect connect() throws IOException { 378 private HttpConnect connect() throws IOException { 379 if( useSystemUser ) { authUserPass = DEFAULT_USER; } 380 381 // 5.1.5.0 (2010/04/01) SOAP対応 382 // SOAPの場合、PostDataは、SOAPConnectタグの中で生成します。 383// URLConnect conn = null; 384 HttpConnect conn = null; // 6.9.0.0 (2018/01/31) 385 // 6.9.0.0 (2018/01/31) SOAPConnect 廃止に伴う修正 386// if( "SOAP".equalsIgnoreCase( method ) ) { 387// if( soapNameSpace == null || soapNameSpace.isEmpty() 388// || soapMethodName == null || soapMethodName.isEmpty() ) { 389// final String errMsg = "SOAP接続の場合、soapNameSpace及びsoapMethodNameは必ず指定して下さい。"; 390// throw new HybsSystemException( errMsg ); 391// } 392// 393// if( postData != null && postData.length() > 0 ) { 394// conn = new SOAPConnect( urlStr,authUserPass, soapNameSpace, soapMethodName, postData ); 395// } 396// else { 397// conn = new SOAPConnect( urlStr,authUserPass, soapNameSpace, soapMethodName, keys, vals ); 398// } 399// } 400// else { 401 conn = new HttpConnect( urlStr,authUserPass ); // HttpConnect は、GET でも後付で引数を渡せます。 402 403 conn.setDebug( isDebug() ); 404 405 if( keys != null ) { 406 for( int i=0; i<keys.length; i++ ) { 407 conn.addRequestProperty( keys[i] , vals[i] ); 408 } 409 } 410 411 if( "POST".equalsIgnoreCase( method ) ) { conn.usePost( true ); } // 6.9.0.1 (2018/02/05) 412 413// String urlEnc = XHTMLTag.urlEncode( keys,vals ); 414 if( postKey != null ) { // 4.1.0.0 (2007/12/22) 415// method = "POST"; 416// urlEnc = urlEnc + "&" + postKey + "=" + postData; // &連結 417 conn.usePost( true ); // 6.9.0.1 (2018/02/05) 418 conn.addRequestProperty( postKey , postData ); 419 } 420 421// if( ! "POST".equals( method ) ) { // 4.1.0.0 (2007/12/22) 422// // String urlEnc = XHTMLTag.urlEncode( keys,vals ); 423// urlStr = XHTMLTag.addUrlEncode( urlStr,urlEnc ); 424// } 425// conn = new URLConnect( urlStr,authUserPass ); 426 427 // if( postKey != null ) { 428 // conn.setPostData( postKey,postData ); 429 // } 430// if( "POST".equals( method ) && keys != null && vals != null ) { // 4.1.0.0 (2007/12/22) 431// conn.setPostData( urlEnc ); 432// } 433// } 434 435 // 4.0.0 (2007/07/25) プロキシの設定追加 436 if( proxyHost != null ) { 437 conn.setProxy( proxyHost,proxyPort ); 438 } 439 440 // 5.1.6.0 (2010/05/01) エンコード指定対応 441 if( encode != null && encode.length() > 0 ) { 442 conn.setCharset( encode ); 443 } 444 445 // 6.2.5.0 (2015/06/05) timeout属性追加 446 if( timeout >= 0 ) { 447 conn.setTimeout( timeout ); 448 } 449// conn.connect(); 450 451 return conn; 452 } 453 454 /** 455 * 出力データをパースし、DBTableModel及び属性パラメーターに分解します。 456 * 現時点では、XMLデータのみパースすることが可能です。 457 * 458 * @og.rev 6.4.3.4 (2016/03/11) forループを、forEach メソッドに置き換えます。 459 * 460 * @param input インプットストリーム 461 */ 462 private void parse( final InputStream input ) { 463 final XML2TableParser parser = new XML2TableParser( input ); 464 parser.setTableCols( rowKey, colKeys ); 465 parser.setReturnCols( rtnKeys ); 466 parser.parse(); 467 468 // DBTableModelを生成します。 469 if( isTableOut ) { 470 table = DBTableModelUtil.makeDBTable( parser.getCols(), parser.getData(), getResource() ); 471 } 472 473 // 戻り値を取得し、Attributeに登録します。 474 if( rtnKeys != null ) { 475 final Map<String,String> rtn = parser.getRtn(); 476 // 6.4.3.4 (2016/03/11) forループを、forEach メソッドに置き換えます。 477 rtn.forEach( (k,v) -> setRequestAttribute( k,v ) ); 478 } 479 } 480 481 /** 482 * タグリブオブジェクトをリリースします。 483 * キャッシュされて再利用されるので、フィールドの初期設定を行います。 484 * 485 * @og.rev 5.1.6.0 (2010/05/01) DBLastSqlの処理は、DBTableModelが新規作成された処理でのみ行う。 486 * @og.rev 6.2.5.0 (2015/06/05) timeout属性追加 487 * @og.rev 6.9.0.0 (2018/01/31) SOAPConnect 廃止に伴う修正 488 */ 489 @Override 490 protected void release2() { 491 super.release2(); 492 urlStr = null; 493 proxyHost = null; // 4.0.0 (2007/07/25) 494 proxyPort = -1; // 4.0.0 (2007/07/25) 495 keys = null; 496 vals = null; 497 xslFile = null; 498 saveFile = null; 499 postKey = null; 500 postData = null; 501 timeout = HybsSystem.sysInt( "URL_CONNECT_TIMEOUT" ); // 6.2.5.0 (2015/06/05) 新規追加 502 useSystemUser = true; 503 authUserPass = null; 504 display = false; 505 method = "GET"; // 4.1.0.0 (2007/12/22) 506 errNglctFlag = false; // 4.1.1.0 (2008/01/22) 507// soapNameSpace = null; // 5.1.5.0 (2010/04/01) SOAP対応 // 6.9.0.0 (2018/01/31) SOAPConnect 廃止に伴う修正 508// soapMethodName = null; // 5.1.5.0 (2010/04/01) SOAP対応 // 6.9.0.0 (2018/01/31) SOAPConnect 廃止に伴う修正 509 table = null; // 5.1.5.0 (2010/04/01) DBTableModel出力対応 510 tableId = HybsSystem.TBL_MDL_KEY; // 5.1.5.0 (2010/04/01) DBTableModel出力対応 511 rowKey = null; // 5.1.5.0 (2010/04/01) DBTableModel出力対応 512 colKeys = null; // 5.1.5.0 (2010/04/01) DBTableModel出力対応 513 rtnKeys = null; // 5.1.5.0 (2010/04/01) DBTableModel出力対応 514 isTableOut = false; // 5.1.5.0 (2010/04/01) DBTableModel出力対応 515 isOutParse = false; // 5.1.5.0 (2010/04/01) DBTableModel出力対応 516 encode = "UTF-8"; // 5.1.6.0 (2010/05/01) エンコード指定対応 517 isMainTrans = true; // 5.1.6.0 (2010/05/01) DBLastSqlの処理の見直し 518 } 519 520 /** 521 * 【TAG】アクセスする接続先URLを指定します。 522 * 523 * @og.tag 524 * 接続するURLを指定します。(例:http:// ・・・・・・) 525 * ?以降のパラメータが含まれていても構いません。 526 * このURL に、keys,vals で指定されたパラメータも追加されます。 527 * 528 * @param url 接続先 529 */ 530 public void setUrl( final String url ) { 531 urlStr = nval( getRequestParameter( url ),urlStr ); 532 } 533 534 /** 535 * 【TAG】プロキシ経由で接続する場合の、プロキシホスト名を指定します。 536 * 537 * @og.tag 538 * 接続先が、プロキシ経由の場合、プロキシのホスト名を指定します。 539 * 例:proxy.opengion.org 540 * 541 * @param host プロキシホスト名 542 */ 543 public void setProxyHost( final String host ) { 544 proxyHost = nval( getRequestParameter( host ),proxyHost ); 545 useSystemUser = false; // プロキシ接続時は、システムユーザーは使えません。 546 } 547 548 /** 549 * 【TAG】プロキシ経由で接続する場合の、プロキシポート番号を指定します。 550 * 551 * @og.tag 552 * 接続先が、プロキシ経由の場合、プロキシのポート番号を指定します。 553 * 例:8080 554 * 555 * @param port プロキシポート番号 556 */ 557 public void setProxyPort( final String port ) { 558 proxyPort = nval( getRequestParameter( port ),proxyPort ); 559 } 560 561 /** 562 * 【TAG】アクセスパラメータキーをCSV形式で複数指定します。 563 * 564 * @og.tag 565 * アクセスする URLに追加するパラメータのキーを指定します。 566 * CSV形式で複数指定できます。 567 * vals 属性には、キーに対応する値を、設定してください。 568 * 例:<b>keys="command,SYSTEM_ID"</b> vals="NEW,GE" 569 * 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 570 * こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。 571 * 572 * @og.rev 6.9.0.0 (2018/01/31) SOAPConnect 廃止に伴う修正 573// * [SOAP対応] 574// * SOAPによるWebサービスの呼び出しの場合、keys,valsに指定された値より、env:Envelopタグを 575// * rootタグとするXMLデータを生成します。 576// * (BODY部分に直接XMLデータを出力することも可能です。) 577// * この際、項目名に'>'を含めることで、階層的なXMLデータを表現することができます。 578// * 例) 579// * [属性定義] 580// * keys="param0>AAA,param0>BBB,param1>CCC,DDD" 581// * vals="v1,v2,v3,v4" 582// * [XMLデータ(※データ部のみ)] 583// * <param0> 584// * <AAA>v1</AAA> 585// * <BBB>v2</BBB> 586// * </param0> 587// * <param1> 588// * <CCC>v3</CCC> 589// * </param1> 590// * <DDD>v4</DDD> 591// * 項目の値を"null"とすることで、XMLで言うところの「xsi:nil=\"true\"」のデータを表現すること 592// * もできます。 593// * また、キー名の先頭を'@'にすることで、項目名に名前空間のPREFIXを付加することができます。 594// * 一般的には、JavaやRubyで実装されたWebサービスを呼び出しする場合は、必要ありませんが、 595// * .NETで実装されたWebサービスを呼び出しする場合は、各項目にPREFIXを付与しないと、正しく 596/ * パラメーターを渡すことができません。 597// * ※現時点では、keysの階層定義は、2階層まで対応しています。 598// * 3階層以上のXML構造を定義する場合は、postFile属性によるファイル指定又は、Body部分で直接 599// * XMLデータを記述して下さい。 600 * 601 * @param key リンク先に渡すキー (CSV形式) 602 * @see #setVals( String ) 603 */ 604 public void setKeys( final String key ) { 605 keys = getCSVParameter( key ); 606 } 607 608 /** 609 * 【TAG】keys属性に対応する値をCSV形式で複数指定します。 610 * 611 * @og.tag 612 * キーに設定した値を、CSV形式で複数して出来ます。 613 * 指定順序は、キーと同じにしておいて下さい。 614 * 例:<b>keys="command,SYSTEM_ID"</b> vals="NEW,GE" 615 * 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 616 * こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。 617 * 618 * @param val 設定値 keys属性に対応する値(CSV形式) 619 * @see #setKeys( String ) 620 */ 621 public void setVals( final String val ) { 622 vals = getCSVParameter( val ); 623 } 624 625 /** 626 * 【TAG】送信メソッド[GET/POST]を指定します(初期値:GET)。 627// * 【TAG】送信メソッド[GET/POST/SOAP]を指定します(初期値:GET)。 628 * 629 * @og.tag 630 * URLConnectTagのメソッドの初期設定はGETです。 631 * ここで"POST"(大文字)を指定するとkyes,valsの値セットをPOSTで送信します。 632 * (postKeyが設定されている場合はこの値に関係なくPOSTです) 633 * 634 * @og.rev 4.1.0.0 (2007/12/22) 新規作成 635 * @og.rev 6.9.0.0 (2018/01/31) SOAPConnect 廃止に伴う修正 636 * 637 * @param post_get 送信メソッド [GET/POST] 638// * @param post_get 送信メソッド [GET/POST/SOAP] 639 */ 640 public void setMethod ( final String post_get ) { 641 method = nval( getRequestParameter( post_get ), method ); 642 } 643 644 /** 645 * 【TAG】Basic認証で接続するユーザーにSYSTEMユーザーを使用するかどうか[true/false]を指定します(初期値:true)。 646 * 647 * @og.tag 648 * useSystemUser="true"(初期値) の場合、URL接続時のコネクションに、Basic認証を 649 * 使用しますが、その時のユーザーにシステムユーザー(SYSTEM)を使用します。 650 * useSystemUser="false"の場合は、authUserPass で指定したユーザー:パスワードを 651 * 使用します。authUserPass で、何も指定されなかった場合は、Basic認証を使用しません。 652 * 初期値は、true(SYSTEMユーザー認証する) です。 653 * 654 * @param flag SYSTEMユーザー認証 [true:SYSTEMユーザー認証する/false:この接続のユーザーで認証する] 655 * @see #setAuthUserPass( String ) 656 */ 657 public void setUseSystemUser( final String flag ) { 658 useSystemUser = nval( getRequestParameter( flag ),useSystemUser ); 659 } 660 661 /** 662 * 【TAG】Basic認証を使用して接続する場合のユーザー:パスワードを指定します(初期値:null)。 663 * 664 * @og.tag 665 * 接続時のユーザーとパスワードを、USER:PASSWD 形式で指定します。 666 * useSystemUser="false"の場合は、ここで指定したユーザーとパスワードを使用します。 667 * その場合に、何も指定しない場合は、Basic認証を使用しません。 668 * 669 * @param userPass ユーザーとパスワード (USER:PASSWD形式) 670 * @see #setUseSystemUser( String ) 671 */ 672 public void setAuthUserPass( final String userPass ) { 673 authUserPass = nval( getRequestParameter( userPass ),authUserPass ); 674 } 675 676 /** 677 * 【TAG】接続の結果を表示する場合にXSLT変換する場合のファイルを指定します。 678 * 679 * @og.tag 680 * 681 * 接続先のデータが、XML形式の場合、そのままでは、画面出力できない場合が 682 * あります。通常は、HTML形式に変換しますが、その変換に、 XSL ファイルを 683 * 指定することが可能です。 684 * display="true" の場合や、saveFile を指定した場合に、適用されます。 685 * 686 * @param file XSLTファイル 687 * @see #setSaveFile( String ) 688 * @see #setDisplay( String ) 689 */ 690 public void setXslFile( final String file ) { 691 xslFile = HybsSystem.url2dir( nval( getRequestParameter( file ),xslFile ) ); 692 } 693 694 /** 695 * 【TAG】接続の結果を表示するかどうかを指定します(初期値:false)。 696 * 697 * @og.tag 698 * true で、接続結果を表示します。 false では、何も表示しません(初期値:false) 699 * 接続結果を表示する使い方より、admin 画面に接続して、キャッシュクリアするような 700 * 使い方が多いと考え、初期値は、false になっています。 701 * xslFile が指定されている場合、XSLT変換して画面表示します。 702 * display="true" と、saveFile を併用することはできません。 703 * 704 * @param flag 結果表示 [true:する/false:しない] 705 * @see #setSaveFile( String ) 706 * @see #setXslFile( String ) 707 */ 708 public void setDisplay( final String flag ) { 709 display = nval( getRequestParameter( flag ),display ); 710 711 if( display && saveFile != null ) { 712 final String errMsg = "display=\"true\" と、saveFile を併用することはできません。"; 713 throw new HybsSystemException( errMsg ); 714 } 715 } 716 717 /** 718 * 【TAG】接続の結果をファイルに保存します。 719 * 720 * @og.tag 721 * 接続先のデータを受け取って、ファイルに保存します。その場合、 722 * xslFile が指定されている場合、XSLT変換してセーブします。 723 * display="true" と、saveFile を併用することはできません。 724 * 725 * @param file 保存先ファイル 726 * @see #setXslFile( String ) 727 * @see #setDisplay( String ) 728 */ 729 public void setSaveFile( final String file ) { 730 saveFile = HybsSystem.url2dir( nval( getRequestParameter( file ),saveFile ) ); 731 732 if( display ) { 733 final String errMsg = "display=\"true\" と、saveFile を併用することはできません。"; 734 throw new HybsSystemException( errMsg ); 735 } 736 } 737 738 /** 739 * 【TAG】POST を使って、postFile属性のファイル内容を送信する時のキーを指定します。 740 * 741 * @og.tag 742 * 接続先にパラメータ(引数)を投げる場合に、POST を使用できます。 743 * そのときの キーをここで指定します。 744 * POSTするデータは、postFileで指定されたファイルか、BODY部に記述された文字列です。 745 * 746 * @param key ファイル内容送信キー 747 * @see #setPostFile( String ) 748 */ 749 public void setPostKey( final String key ) { 750 postKey = nval( getRequestParameter( key ),postKey ); 751 } 752 753 /** 754 * 【TAG】接続タイムアウト時間を(秒)で指定します 755 * (初期値:URL_CONNECT_TIMEOUT[={@og.value SystemData#URL_CONNECT_TIMEOUT}])。 756 * 757 * @og.tag 758 * 実際には、java.net.URLConnection#setConnectTimeout(int) に 1000倍して設定されます。 759 * 0 は、無限のタイムアウト、マイナスは、設定しません。(つまりJavaの初期値のまま) 760 * (初期値:システム定数のURL_CONNECT_TIMEOUT[={@og.value SystemData#URL_CONNECT_TIMEOUT}])。 761 * 762 * @og.rev 6.2.5.0 (2015/06/05) timeout属性追加 763 * 764 * @param tout タイムアウト時間(秒) (ゼロは、無制限) 765 * @see org.opengion.fukurou.util.HttpConnect#setTimeout(int) 766 * @see java.net.URLConnection#setConnectTimeout(int) 767 */ 768 public void setTimeout( final String tout ) { 769 timeout = nval( getRequestParameter( tout ),timeout ); 770 } 771 772 /** 773 * 【TAG】POST を使って、postFile属性のファイル内容を送信します。 774 * 775 * @og.tag 776 * 接続先にパラメータ(引数)を投げる場合に、POST を使用できます。 777 * そのときの 送信データのファイルをここで指定します。 778 * postKey のみ指定されて、postFile が指定されない場合は、BODY部を送信します。 779// * SOAPによる呼び出しの場合は、ここ(BODY部での定義を含む)で、送信するXMLデータを 780// * 定義することができます。 781 * 782 * @og.rev 6.4.5.1 (2016/04/28) FileStringのコンストラクター変更 783 * @og.rev 6.4.5.2 (2016/05/06) fukurou.util.FileString から、fukurou.util.FileUtil に移動。 784 * @og.rev 6.9.0.0 (2018/01/31) SOAPConnect 廃止に伴う修正 785 * 786 * @param file 送信ファイル 787 * @see #setPostKey( String ) 788 */ 789 public void setPostFile( final String file ) { 790 final String postFile = nval( getRequestParameter( file ),null ); 791 792 if( postFile != null ) { 793 // 6.4.5.1 (2016/04/28) FileStringのコンストラクター変更 794 postData = FileUtil.getValue( HybsSystem.url2dir( postFile ) , HybsConst.UTF_8 ); 795 } 796 } 797 798 /** 799 * 【TAG】(通常は使いません) 接続エラーを無視する場合にtrueとします(初期値false)。 800 * 801 * @og.tag 802 * trueにするとConnectで発生したエラーを投げずに処理を続行します。 803 * (標準エラー出力にエラー内容は出力されます) 804 * 接続エラーが発生しても処理を中断したくない場合に設定します。 805 * 806 * @og.rev 4.1.1.0 (2008/01/22) 新規追加 807 * 808 * @param flag エラーを無視するか [true:する/false:しない] 809 */ 810 public void setErrNeglect( final String flag ) { 811 errNglctFlag = nval( getRequestParameter( flag ), errNglctFlag ); 812 } 813 814// /** 815// * 【TAG】SOAPによるWebサービスの呼び出しで、メソッド名及びパラメーターの名前空間を指定します。 816// * 817// * @og.tag 818// * SOAPによるWebサービスの呼び出しで、メソッド名及びパラメーターの名前空間を指定します。 819// * この名前空間は、通常WSDLファイルのdescriptionsタグのtargetNamespace属性の値により 820// * 定義されます。 821// * 822// * @og.rev 5.1.5.0 (2010/04/01) 新規追加 823// * @og.rev 6.9.0.0 (2018/01/31) SOAPConnect 廃止に伴う修正 824// * 825// * @param ns 名前空間 826// */ 827// public void setSoapNameSpace( final String ns ) { 828// soapNameSpace = nval( getRequestParameter( ns ), soapNameSpace ); 829// } 830// 831// /** 832// * 【TAG】SOAPによるWebサービスの呼び出しで、メソッド名を指定します。 833// * 834// * @og.tag 835// * SOAPによるWebサービスの呼び出しで、メソッド名を指定します。 836// * WSDLファイルで定義されるoperationタグのname属性の値に相当します。 837// * 838// * @og.rev 5.1.5.0 (2010/04/01) 新規追加 839// * @og.rev 6.9.0.0 (2018/01/31) SOAPConnect 廃止に伴う修正 840// * 841// * @param method メソッド名 842// */ 843// public void setSoapMethodName( final String method ) { 844// soapMethodName = nval( getRequestParameter( method ), soapMethodName ); 845// } 846 847 /** 848 * 【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します 849 * (初期値:HybsSystem#TBL_MDL_KEY[={@og.value HybsSystem#TBL_MDL_KEY}])。 850 * 851 * @og.tag 852 * 検索結果より、DBTableModelオブジェクトを作成します。これを、下流のviewタグ等に 853 * 渡す場合に、通常は、session を利用します。その場合の登録キーです。 854 * query タグを同時に実行して、結果を求める場合、同一メモリに配置される為、 855 * この tableId 属性を利用して、メモリ空間を分けます。 856 * (初期値:HybsSystem#TBL_MDL_KEY[={@og.value HybsSystem#TBL_MDL_KEY}])。 857 * 858 * @param id テーブルID (sessionに登録する時のID) 859 */ 860 public void setTableId( final String id ) { 861 tableId = nval( getRequestParameter( id ),tableId ); 862 } 863 864 /** 865 * 【TAG】結果のXMLをDBTableModelに変換する際に、行のキーとなるタグ名を指定します。 866 * 867 * @og.tag 868 * 結果のXMLを表形式に変換する際に、行のキーとなるタグ名を指定します。 869 * このキーのタグを基点として、colKeysで指定されたタグの値を各項目の値として取り込みます。 870 * (詳細は、colKeysのタグリブ属性マニュアルを参照して下さい。) 871 * 872 * @param key 行のキーとなるタグ名 873 * @see #setColKeys( String ) 874 */ 875 public void setRowKey( final String key ) { 876 rowKey = nval( getRequestParameter( key ),rowKey ); 877 } 878 879 /** 880 * 【TAG】結果のXMLをDBTableModelに変換する際に、項目のキーとなるタグ名の一覧を指定します。 881 * 882 * @og.tag 883 * 結果のXMLをDBTableModelに変換する際に、項目のキーとなるタグ名の一覧を指定します。 884 * rowKeyで行を、colKeysで項目を表現し、rowKeyのタグで囲われた固まりを1つの行とみなします。 885 * このため、colKeysに指定されたキーのタグでも、rowKeyの外にある場合は、取り込み対象となりません。 886 * 887 * また、キーにPARENT_TAG、PARENT_FULL_TAGを指定することで、rowKeyで指定されたタグの 888 * 直近の親タグ、及びフルの親タグ名(親タグの階層を">[タグA]>[タグB]>[タグC]>"で表現)を 889 * 取得することができます。 890 * 891 * @param keys 項目キー タグ名の一覧(CSV形式) 892 */ 893 public void setColKeys( final String keys ) { 894 colKeys = StringUtil.csv2Array( getRequestParameter( keys ) ); 895 } 896 897 /** 898 * 【TAG】結果のXMLを変換する際に、パラメータ(Attributes)として取り込むキーの一覧を指定します。 899 * 900 * @og.tag 901 * 結果のXMLを変換する際に、パラメータ(Attributes)として取り込むキーの一覧を指定します。 902 * ここで指定されたキーのタグの値を取り出し、{@XX}形式(Attributes)として処理できるようにします。 903 * 904 * @param keys 戻り値キー パラメーター(Attributes)のキーとなるタグ名の一覧(CSV形式) 905 */ 906 public void setRtnKeys( final String keys ) { 907 rtnKeys = StringUtil.csv2Array( getRequestParameter( keys ) ); 908 } 909 910 /** 911 * 【TAG】データの入出力のエンコードを指定します(初期値:UTF-8)。 912 * 913 * @og.tag 914 * データの入出力のエンコードを指定します。 915 * 初期値は、"UTF-8"です。 916 * 917 * @og.rev 5.1.6.0 (2010/05/01) 新規作成 918 * @param enc エンコード 919 */ 920 public void setEncode( final String enc ) { 921 encode = nval( getRequestParameter( enc ), encode ); 922 } 923 924 /** 925 * タグの名称を、返します。 926 * 自分自身のクラス名より、自動的に取り出せないため、このメソッドをオーバーライドします。 927 * 928 * @og.rev 4.0.0.0 (2005/01/31) 新規追加 929 * 930 * @return タグの名称 931 * @og.rtnNotNull 932 */ 933 @Override 934 protected String getTagName() { 935 return "urlConnect" ; 936 } 937 938 /** 939 * 【TAG】(通常は使いません)タグで処理される処理がメインとなるトランザクション処理かどうかを指定します(初期値:true)。 940 * 941 * @og.tag 942 * この値は、ファイルダウンロード処理に影響します。この値がtrueに指定された時にcommitされたDBTableModelが 943 * ファイルダウンロードの対象の表になります。 944 * 945 * このパラメーターは、通常、各タグにより実装され、ユーザーが指定する必要はありません。 946 * 但し、1つのJSP内でDBTableModelが複数生成される場合に、前に処理したDBTableModelについてファイルダウンロードをさせたい 947 * 場合は、後ろでDBTableModelを生成するタグで、明示的にこの値をfalseに指定することで、ファイルダウンロード処理の対象から 948 * 除外することができます。 949 * 950 * @og.rev 5.1.6.0 (2010/05/01) 新規作成 951 * 952 * @param flag メイントランザクションかどうか [true:メイン/false:その他] 953 */ 954 public void setMainTrans( final String flag ) { 955 isMainTrans = nval( getRequestParameter( flag ),isMainTrans ); 956 } 957 958 /** 959 * このオブジェクトの文字列表現を返します。 960 * 基本的にデバッグ目的に使用します。 961 * 962 * @return このクラスの文字列表現 963 * @og.rtnNotNull 964 */ 965 @Override 966 public String toString() { 967 return ToString.title( this.getClass().getName() ) 968 .println( "VERSION" ,VERSION ) 969 .println( "method" ,method ) 970 .println( "urlStr" ,urlStr ) 971 .println( "keys" ,StringUtil.array2csv( keys ) ) 972 .println( "vals" ,StringUtil.array2csv( vals ) ) 973 .println( "proxyHost" ,proxyHost ) 974 .println( "proxyPort" ,proxyPort ) 975 .println( "timeout" ,timeout ) // 6.2.5.0 (2015/06/05) 新規追加 976 .println( "useSystemUser" ,useSystemUser ) 977 .println( "authUserPass" ,authUserPass ) 978 .println( "display" ,display ) 979 .println( "postKey" ,postKey ) 980 .println( "postData" ,postData ) 981 .println( "xslFile" ,xslFile ) 982 .println( "saveFile" ,saveFile ) 983 .println( "errNglctFlag" ,errNglctFlag ) 984// .println( "soapNameSpace" ,soapNameSpace ) // 6.9.0.0 (2018/01/31) SOAPConnect 廃止に伴う修正 985// .println( "soapMethodName" ,soapMethodName ) // 6.9.0.0 (2018/01/31) SOAPConnect 廃止に伴う修正 986 .println( "tableId" ,tableId ) 987 .println( "rowKey" ,rowKey ) 988 .println( "colKeys" ,StringUtil.array2csv( colKeys ) ) 989 .println( "rtnKeys" ,StringUtil.array2csv( rtnKeys ) ) 990 .println( "Other..." ,getAttributes().getAttribute() ) 991 .fixForm().toString() ; 992 } 993}