2023-07-06

FileMaker Server をアップデートするとやっぱ WebDirect が使用不能になった

 みなさんは運用中のサーバソフトウェアをどのタイミングでアップグレードしていますか? 当社では運用中のサーバに関するアップグレードがリリースされた場合、リリースノートを読み、重要なバグフィクスやセキュリティパッチが含まれるかどうかを確認し、これらに該当しない場合は直ぐにはアップグレードを行いません。 例えば、FileMaker Server で機能的なアップグレード(新しい機能追加や既存機能の改善のみ)があった場合は、リリースから数ヶ月経過するかマイナーバージョンが上がるまではそのアップグレードは行いません。これは、新しいアップグレードが含むかも知れない新たなバグを回避するためです(人柱が現れるのを待つ、とも言う)。

 さて今回、当社で運用中の FileMaker Server 19のアップグレードを行ったのですが、悪い経験は繰り返す則(マーフィーの法則)に従い、WebDirect が使用不能になりました。 そこで本稿ではこの経緯と対応方法をまとめました。 


対象読者


FileMaker Server(FMS) 19.x 環境で WebDirect を使用していたが、FMS をアップグレードしたら WebDirect が動作しなくなった方
 

WebDirect が動作しなくなった経緯

先日、FileMaker Server 19.0.1 を 19.6.3 にアップグレードしたところ、今まで動作していた WebDirect ページが開けなくなりました。以下のような HTTP エラー502.3 が出ます。

FileMaker Server Admin コンソールも、プライマリマシンがいつの間にか無効化された状態となっています。このまま有効化してもすぐに無効に戻ってしまいます。

 

アップグレードした途端に WebDirect が動かなくなるなら Java との互換性を疑え、ということで Claris 公式サイトを検索したところ、FileMaker Server 19.2~19.6 は Java 11 が推奨されているという表記をみつけました。

macOS および Windows 上で Web 公開を使用する場合の、JAVA_HOME 環境変数の活用について [Claris 公式サイト]


もともと使用していた Java が OpenJDK 8.0_252 だったため、上記ページを参考に OpenJDK 11 に入れ替えたところ WebDirect が復活しました。

作業内容

以下では Windows Server を使用した復旧方法を記します。
作業につきましては自己責任でお願いいたします。

  1. Windows サービスより FileMaker Server を停止させます。
  2. OpenJDK をダウンロードします。
    https://adoptium.net/temurin/releases/?version=11
    当方の場合は、msi インストーラーを選択しました。
     
     
  3. OpenJDK 11 をインストールします。いくつかオプション指定がありますが、デフォルトのままでOKです。
  4. OpenJDK 11 のインストールが終わったら、環境変数を手動で変更します。
    Windows Server のコントロールパネルを開き、システムとセキュリティ→システム→システムの詳細設定の順に選択します。
    システムのプロパティより、“環境変数”ボタンをクリックします。

     
  5. 環境変数の一覧から、JAVA_HOME 環境変数を特定し、設定値を新しい OpenJDK のインストールパスに変更します。
    たとえば以下のようになります。

    (変更前)



    (変更後)


  6. FileMaker Server 20.1 以降は Java ガベージコレクション用の PATH 指定が必要になるとのことで、併せて設定を行います。
    既存の Path システム環境変数に、%JAVA_HOME%\bin を追加します。たとえば以下のようになります。



  7.  つぎに、古い Javaのインストールフォルダを削除します。Program Files\FileMaker\FileMaker Server\Web Publishing\java あたりを探してみてください。
  8. Windows サービスより、FileMaker Server を起動します。起動後、FileMaker Server Admin コンソールの「コネクタ」タブより、プライマリマシンを有効にします。
  9. 以下のように、プライマリマシンが実行中になれば作業は終了です。

その他の WebDirect 情報については、以下のリンクをご参照ください。

FileMaker Server 18.0.2 以降での Java の変更
FileMaker Server と Java - 概要
Claris FileMaker WebDirect ガイド


(亀)


追記:
WebDirect、予想以上に情報少ないですね。導入しているところ、あるんでしょうか...


2022-05-24

位置情報をUDPで送信 ― TPC_IPS/QuickIPSの拡張

 当社の屋内位置測位システム『TPC_IPS』 はビーコン信号をサーバ上の位置測位エンジン(TCOT)により解析し、算出された各ビーコンの位置情報をデータベースに保存します。ユーザは適時クライアント機からデータベースにアクセスして位置情報を引き出し、フロアマップ等のフロントエンドアプリケーションで利用します。この方式はクライアントがサーバに情報を要求するPull式となっています。

 Pull式は余分なクエリが発生したり、クライアント数が増えるとサーバの負荷が増す点が難点です。

 一方、サーバ側からクライアントにデータを送り付けるPush式のシステムも存在します。今回、『TPC_IPS』の位置測位エンジン(TCOT)で算出した位置情報をUDPでネットワークにブロードキャストし、クライアントのフロアマップを自動更新する処理を実装してみました。


 サーバとクライアント間のモジュール構成を図示したのが以下です。

 サーバには tcot_sender.py というプログラムが常駐していて、これがTCOTを呼び出して位置情報を取得、これを python socket によりUDPでブロードキャストします。

 一方、クライアント上ではtcot_receiver.pyが上記のUDPを待ち受けしていて、UDP データを受信するとデータ加工などの必要な処理を行います。

 フロントエンドアプリケーションの『QuickIPS』はフロアマップ上にビーコンの最新の位置を表示しますが、QuickIPS は FileMakerで開発されており、FileMaker自身にはソケット通信の機能がないため、tcot_receiver.py から直接データを取得することはできません。

 そこで tcot_receiver.py と QuickIPS 間でソケット通信を可能にするため tcot_listener.html というファイルを用意し、フロアマップのレイアウトにWebビューア*を配置してこのhtmlファイルを埋め込みます。tcot_listener.html は WebSocket を作成すると共に addEventListener を使用してtcot_receiver.pyからの受信を待ち受けます。 受信を感知すると PerformScript()によりFileMakerのスクリプトを実行して QuickIPS のフロアマップを更新します。

*WebビューワはFileMaker Pro のレイアウトに Web ページを直接表示する機能。

 この仕組みは FileMaker だけではなく、一般的なWebアプリケーションでも利用可能です。

 以下、今回実装した UDP Push式の長短をまとめてみました。 

UDP Push方式のメリット

  • TCP 通信に比べ、データ転送速度が速い
  • サーバ負荷の低減 特にユーザ数が多い場合
  • システム構成の柔軟性
  • リアルタイム性(オーバーヘッドが少ないため、クライアントアプリの実行速度の向上)

UDP Push 方式のデメリット

  • TCP 通信に比べると送信データが保証されないため、データの欠損(パケットロス)が生じることがある。
  • UDP通信の接続確認およびデータ受信確認の処理が面倒

注:
TPC_IPS ver1.0は UDP Push に対応していません。今後のリリースでの対応を予定していますが、仕様は予告なく変更されることがあります。

(亀)

 

IPS関連のBlog記事

土屋企画のIPS製品について/IPS product of TPC

 

2022-01-24

正月休み明け、仮想マシン上の FileMaker Server 5.5 バックアップが失敗していた

 正月休み明け、Windows 2012 Hyper-V上のWindows 2008 で FileMaker Server 5.5(FMS) を運用している取引先から、「バックアップが失敗している」との連絡がありました。
仮想マシンの構成は以下の通りです。

■Windows 2008仮想マシン(VM)構成
[C:内臓VHD]
[E:内臓VHD]←FMSを実行
[F:外付VHD]←FMSのバックアップ先

 上記Fドライブの特定ディレクトリはReadできるのに、他のディレクトリはReadできず、Writeは全くできないという状況で、図の「I/Oデバイスエラーが発生したため、要求を実行できませんでした。」が出ます。


 そこでFドライブ(外付ディスク)にハード的問題があると思い、このドライブを取り外して別のPCに取り付けてチェックすると、普通にマウントできて、Read/Writeできました。


 気を取り直して、Hyper-V機に同じ外付けドライブを戻してもらい、Hyper-Vマネージャーで問題のVHDを一度取り外して、再度アタッチ。 これによりRead/Writeも、FMSバックアップも実行できるようになりました。

“削除”ボタンで問題のVHDを取り外し、“参照”ボタンで同VHDを再度アタッチ


 休みの前後、取引先でHyper-V機を落とすとき、外付けHDDの電源On/Offの順番を間違ったのが原因かもしれません。

 マシンを落とすときは外付けHDDを最後にOFF、起動するときは外付HDDを最初にON。


(NuckyT)