投稿

ログファイルの出力/ローテート設定(log4j2)

イメージ
log4jの脆弱性が世間を賑わしまして、GeneXusでも対応方法がいくつか出ておりました GeneXus日本語SAC log4j ライブラリに関連する脆弱性(CVE-2021-44228)について https://sac.genexus.jp/viewtr_saclist.aspx?50554, それはそれとしてシステムの運用においてログを正しく出力することは必要です。 GeneXusでもlog4jの機能が組み込まれており、デフォルトでログファイルへの出力が可能となっています。 Log 外部オブジェクト http://wiki.genexus.jp/hwiki.aspx?Log+%E5%A4%96%E9%83%A8%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88 ログファイルの出力場所/ローテートの設定などはlog4j2.xmlに記載されています。 Tomcatの場合だと C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps\XXXXX\WEB-INF\classes\log4j2.xml GeneXusのナレッジベースプロパティから調整できる値はこちら それ以外の設定内容は直接log4j2.xmlに設定する形となります。 細かい設定はlog4j2のドキュメントなどを参照して設定頂ければ良いと思いますので、 基本的な部分と注意点だけ記載します。 ①デフォルトだとTomcatの場合は以下に出力されます C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps\XXXXX\logs\client.log ローテートされたバックアップファイルの方は C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps\XXXXX\logs\old\ の配下に.gzの形で保存されます。 ②ログの出力場所とファイル名については GeneXusのナレッジベースプロパティから設定できますが、それだと以下のような形になります。   <Property name="logPath">${main:0...

JDBCドライバの変更方法

イメージ
 GeneXusにはデフォルトでそれぞれのDBに対してのJDBCドライバが備わっており、 そのまま、それぞれのDBへ接続/運用が行えます。 ただし、SQLServerとDB2に関してはフリーのJDBCドライバが使用されています GeneXusで使用されているSQLServer用のフリーのJDBCドライバ The jTDS Project http://jtds.sourceforge.net/ 「jtds-1.2.jar」 GeneXusで使用されているDB2用のフリーのJDBCドライバ IBM Toolbox for Java https://www.ibm.com/docs/ja/was-nd/8.5.5?topic=variables-configuring-toolbox-java 「jt400.jar」 こちらのJDBCドライバを使用していても基本的には問題ないのですが、 どちらかといえばメーカーが提供するJDBCドライバのほうが性能・品質が良いので、 メーカーから出ている最新バージョンを使用するのは”有り”です。 Microsoft SQL Server 用 JDBC Driver のダウンロード https://docs.microsoft.com/ja-jp/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15 DB2 JDBC Driver Versions and Downloads https://www.ibm.com/support/pages/db2-jdbc-driver-versions-and-downloads JDBCドライバの変更方法(SQLServer) ①上記のURLからMicrosoft SQL Server 用 JDBC Driver をダウンロードします ②ダウンロードしたzipを解凍すると、Javaのバージョンごとのjarファイルがあるので、 自分が利用するJavaに合わせて1ファイルを選択します。 ※以下はJava8を利用 ③「mssql-jdbc-9.4.1.jre8.jar」を以下のディレクトリにコピーする ◇ビルド環境 ナレッジベース配下のJavaModel\web\drivers 例...

SQLServer利用時はトランザクション分離レベルに気を付けて

DBにSQLServerを使用している場合になりまして、事象と対応方法については簡単なのですが、私には詳しい説明が難しいため、先に簡潔に現象を説明します。 「長い更新処理が行われている間、別のユーザーがそのテーブルにアクセスするとデータが取得できない」 <事象の再現> ※SQLServerをデフォルトのまま使用していると再現できます。  Azure for SQLServerの場合は対応されているので、再現しません。 ①SQLServer Management Studioのクエリから一つのテーブルをUpdateを行います。  その際、トランザクションを開始してロックしたままの状態にしてみます。 BEGIN TRAN Update [KM01_KOKYAKU] Set   [KM01_REV_NO] = 7 Where [KM01_KOKYAKU_CD] = 'CC0002' ※Update文は適時調整してください。 この状態だとまだデータは確定されておらず、CommitかRollbackするまではロック状態です。 ②ロック状態のままGeneXusで生成したシステムから、  上記のテーブルの一覧画面や登録画面を開いて、データにアクセスしてみてください。  データが表示されないはずです。(画面が表示されないことも)  データがロックされているため、Selectできない状態となります。 ③次にSQLServer Management StudioのクエリからCommitを実行してみてください。  すると、GeneXusの画面でデータが表示されると思います。 <原因> SQLServerのトランザクション分離レベルがデフォルトだと「READ COMMITTED」であること、 GeneXusが生成するSQL文にはWITH(NOLOCK)が記述されていないことが合わさって上記の現象となります。 GeneXusは以前はSQLServerの場合にSQL文にWITH(NOLOCK)をつけていたのですが、 それだとダーティリードが発生してしまうため、WITH(NOLOCK)を外すように修正されました。 GeneXus コラボDB http://www.gxsupport.jp/gxfaq/faqdisplay.aspx?2961 GeneXus日本語SAC http...

17U4バージョンで注意

現時点で最新のGeneXus17U4ですが、運用で困る不具合がありました。 HttpRequest.RemoteAddressにて取得できる値が、17U2ではクライアントのIPアドレスですが、 17U4でサーバーのIPアドレスが取得されるようになってしまいました。 そもそもRemoteAddressはプロキシを使用していたり、 ネットワーク構成によっては正しくクライアントのIPが取れないこともあるのですが、 今回の場合は、以下のどのやり方でもすべてサーバーのIPアドレスが返却されてしまいました。 WebPanelのイベント &W_IP1 = &Httprequest.RemoteAddress &W_IP2 = &Httprequest.GetHeader("X-Forwarded-For") java [!&W_IP3!] = getHttpContext().getRequest().getRemoteAddr(); また、GeneXusから出力されるログ(デフォルトだとclient.log)のIPアドレスも サーバーのIPアドレスになってしまうため、運用で非常に困る状況になります。 ちなみにTomcatのアクセスログのIPアドレスはクライアントでしたので、 あくまでもGeneXusから出力されるIPアドレスの問題のようです。 ★★★ 当現象について、17U5で既に解消済みとのことでして、 日本版では17U6が2021年12月下旬にリリース予定となっております。

処理中の画面グレイアウトの調整

イメージ
ボタン押下時などのサーバー処理の間、画面がグレイアウトしますが、 デフォルトだと色が薄めで、パソコンによっては変化が見えづらかったりします。 デフォルトのグレイアウト状態 以下の調整を行うと良い感じになります。 ①色の濃さを調整 Themeの[DIV.gx-mask]クラスのCustom Properties animation: entermask 1s;-webkit-animation: entermask 1s;-ms-filter:"alpha(opacity=10)";opacity:0.1; ↓↓↓ animation: entermask 1s;-webkit-animation: entermask 1s;-ms-filter:"alpha(opacity= 20 )";opacity: 0.2 ; ②WWPを使っている場合、待ち状態のぐるぐる画像を設定 Themeの[DIV.gx-mask]クラス この2つを設定したグレイアウト状態 ※ちょっとした注意点ですが、この設定はグレイアウト全般に対して反映されるため、 プロンプト起動時の親画面側のグレイアウトも同様の設定が反映されます。 そのため、もしプロンプトを中心から大きく動かした場合は、後ろにぐるぐる画像があります。

ファビコン(fabicon)の設定

イメージ
 一応、ファビコンとはこの部分のアイコンのことです。 お気に入りに登録した際にもアイコンが表示されます。 GeneXusでファビコンを設定する方法はこちらに情報が載っています コラボDB:ファビコンの設定方法について http://www.gxsupport.jp/gxfaq/faqdisplay.aspx?3433 せっかく作ったシステムですので、アイコンを設定した方が素敵ですよね。 設定方法は記載の方法で問題ないのですが、注意点が2つほど その① WWPのシステムウィザードを使うとファビコンを設定する箇所があり、 それを設定するとリンクの記載と同じ形で、マスターページに記述が追加されます。 注意点は 「マスターページを設定していない画面にも設定しましょう」 ということになります。 特に一番大事な 「ログイン画面」 はマスターページを設定しないことが多いので、 忘れずに追加しましょう。 GAMを使用している場合はGAMExampleLogin その② WWP限定かもしれないですが、画面によってはファビコンが表示されない場合がありました。 ブラウザやGeneXusのバージョンに左右された可能性はあります。 その際にはEvents Startの冒頭に記述されている Form.HeaderRawHTML = !'<link rel="shortcut icon" type="image/x-icon" href="'+ Favicon.Link()+ !'">' こちらをEvents Startの最後に移動させて試してみてください。

セミナー情報:日経電子版オンラインセミナー

イメージ
2021年7月28日(水)10:00~7月31日(土)10:00 日経電子版オンラインセミナーにて「企業のDXを高速化するノーコード、ローコード開発とは」 が実施されるようです。 GeneXus Japan様も協賛されており、GeneXusのセッションもございます。 https://events.nikkei.co.jp/39425/ ※概要転記 2020年から2021年にかけて、デジタルが前提となったビジネス環境への対応は一気に推し進められました。 しかし、多くの日本企業で推進されているDXは業務処理の効率化といった「守りのDX」にとどまっており、更なる事業成長のためには、ビジネスモデルの抜本的な変革を伴う「攻めのDX」の強化が必要不可欠です。 攻めのDXを推進するには何が必要なのか。その答えが、カルチャーや企業経営の変革であり、あるいは、開発スピードを強力に推し進める「ノーコード・ローコード開発」です。 本セミナーでは、DXが求められている背景、DXが進まない理由と課題解決の方向性を整理した上で、ノーコード・ローコード開発の導入事例やツールに関する情報もお伝えしながら、企業のDXを高速化する術を探ります。 基調講演の経済産業省 田辺氏の講演は別のセミナーで聴かせて頂きまして、とても面白かったです。 それで前回の「かんたんDX推進」を記載しました。 今回はちょっと時間が短めですね。 セッション1の「GeneXusを活用したりそなグループの次世代営業店システム構築について」も興味深いです。 銀行系でGeneXusを利用しているのはみずほ銀行様や、新潟の第四北越銀行様、千葉銀行様など聞きますので りそなグループではどんな感じなのか気になります。 ご興味のある方は是非どうぞ!