- PR -

Webアプリケーション内のstaticフィールド値をWebコンテナ外から変更したい

投稿者投稿内容
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-07-28 18:06
スフレさんのパターンを丁度この前やりました。
PHPとJavaとAixとWindowsのバッチの連携で。

物理ファイルなら他システムとの排他制御にも使用可能なので、
結構便利だと思います。

あとはDBのテーブルの排他フラグを更新するとか・・・
まあや
会議室デビュー日: 2005/07/28
投稿数: 6
投稿日時: 2005-07-28 18:06
スフレ さん、かつのり さん

回答ありがとうございます。ファイルorDBで確認するのもイイかも!と思ったのですが、よく考えたらオンラインサービス中かどうかの判定は、クライアントからリクエストが送られてくるたびにやっていました。。。なので、さすがにファイルシステムやDBにアクセスするのは、頻度的にいってちょっとキケンかもしれません。レスポンスも遅くなってしまいそうですし。

[ メッセージ編集済み 編集者: まあや 編集日時 2005-07-28 18:08 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-07-29 10:17
>た。。。なので、さすがにファイルシステムやDBにアクセスするのは、頻度的にいってちょっとキケンかもし
>れません。レスポンスも遅くなってしまいそうですし。
本当にそうですか?
多くの Web アプリケーションはほとんどのページのレンダリングに DB アクセスに行く必要があります。フラグ一つみるのでパフォーマンスに支障がでるってのは考えすぎではないでしょうか。
パフォーマンスを考えながらコーディングするのは重要ですが、それを重視しすぎてトリッキーなことをするのは本末転倒です。まずは正攻法でコーディングして、パフォーマンスに問題がでたらボトルネックを洗い出してチューニングしていくほうが無難かと思います。
まあや
会議室デビュー日: 2005/07/28
投稿数: 6
投稿日時: 2005-07-29 11:00
みなさんのアドバイスで、なんとかクリアできました!
最終報告をしておきますね。

最終的に、Webアプリケーション内にstaticフィールドを変更するため
だけの専用のServlet(正確にはStrutsを使っているのでActionですが)
をつくりました。

さらに、このServletのURLに接続する単純なJavaクラスを作成。main
メソッド内でURLConnectionオブジェクトを使用して接続しました。

最後に、このJavaクラスをjavaコマンドで起動するバッチファイルを作り、
サイトが上がっている状態でバッチを起動したところ、サービス時間外の
フラグが変更されているのを確認できました!

ここまでで6時間もかかってしまいました・・(>o<)
インギさんやかつのりさん、スフレさんのおっしゃる方法もアリだと
思うので、次回こういう機会があったら検討してみたいと思います。

もっと勉強しなきゃ、ですね。

アドバイスどうも有難うございました!m(_ _)m

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-07-29 12:19
おめでとうございます。
サーブレットでパラメータを変えられるって事はもしかすると外部からだれでもサービス時間外に設定できることになってしまいます。
場合によっては security-constraint で保護することも検討しましょう。おそらくはインターナルなシステムで細かいセキュリティ的な懸念はないのだと思いますが。
http://edocs.beasys.co.jp/e-docs/wls/docs81/webapp/web_xml.html#1017885

スキルアップ/キャリアアップ(JOB@IT)