- PR -

Servletを裏で定時起動する方法

投稿者投稿内容
matu
ベテラン
会議室デビュー日: 2002/09/01
投稿数: 95
お住まい・勤務地: 東京
投稿日時: 2003-12-15 09:48
 おはようございます

引用:

今回の問題を整理すると「EJBのロジックをリモートのスケジューラから
起動したい」ということに尽きますよね?
で、今回の場合はJNDIはEJBを検索する際に使うディレクトリサービス
ですから、これはクライアント向けインタフェースではありませんよね?



 確かに統一性の無い書き方をしてしまいました。すみません。JNDIと
書いたのはEJBクライアントの話をしていたからです。クライアント向け
という意味では「EJB」や「Servlet」と書くべきでしたね。


引用:

問題は、EJBの機能を利用するクライアントを、Servletで実装するのか、
コマンドラインアプリケーションとするのか、その違いだと思います。



 ServletかEJBクライアントかは正直まだ悩んでいます。何か良いご意見
があればご教授ください。
 将来的なクライアントインターフェースなどを考えた時に流用性の高い
処理の書き方という点ではEJBクライアントでしょうか。 


引用:

もうちょっと、ちゃんとServlet/JSP & EJBの基本について勉強された
方が宜しいのではないでしょうか?
何事も最初が肝心ですから



 ご心配ありがとうございます。基本が抜けているのが見え隠れしてい
るのは自分でも感じています。だいぶ頑張って勉強はしているのですが
時間が無くて・・と言い訳をしてもだめですね。特にj2eeについては、
もっと勉強が必要だと思います。頑張ります。
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2003-12-15 12:40
私もそんな偉そうな事を言えるわけではないのですが(^^、、、
引用:

 ServletかEJBクライアントかは正直まだ悩んでいます。何か良いご意見
があればご教授ください。


私は元ベンダ(SIerみたいなことをやってました)なので、そちらの観点から
言わせていただくと「できるだけアプリの管理を簡単にしたい」という考え方も
あります。つまり、カスタムアプリの配置を分散させたくないということです。

その場合、例えばスケジューラが稼動しているサーバがUNIXであれば、wget
等のHTTPクライアントのコマンドを使ってリモートのServletを叩くことが
比較的簡単に出来ます。Linuxであれば標準で入っているでしょうし、いちいち
インストールしなくて良い点がベンダ的にはGoodです。こう考えると、Servletを
採用するでしょう。

また、ネットワークの構成によっては(例えばデータセンタの運用ポリシー等の
関係で)スケジューラのあるサーバからロジックのあるアプリサーバまでRMIが
通らない場合もあるでしょう。比較的HTTPは通り易いようですので、その点では
Servlet経由の方がEJBクライアントよりも優位かもしれません。

ただ、ご存知のようにHTTPにはトランザクションという概念がありませんので、
Servlet経由でトランザクションを意識した処理をリモートで実行するのは
中々骨が折れるでしょう。そういう時は、EJBクライアントを使う方が楽です。

また、EJBはローカルのServletから呼ぼうがリモートから呼ぼうが
インタフェースは1つですが、Servletを使うとなるとそれ専用にServletを
作ってやらないとダメです。ここで工数が発生します。

折衷案として、Webサービス(SOAP over HTTP)を使うという手もあります。
この場合HTTPの上で動きますから、ネットワークの問題は少なくなります。
また、コンテナのベンダによってはWebサービスクライアントを簡単に作成
するツールも提供しているようです。それらが利用できれば比較的工数は
少なく済むでしょう。

一概に言えませんが、もし私がやるとしたらEJBクライアントかWebサービス
で悩むでしょうね。EJBクライアントかなあ。。。Webサービスだとサーバ側
にもクライアント側にもSOAP実装が必要で、ちょっと大げさな気がします。



[ メッセージ編集済み 編集者: おばけ 編集日時 2003-12-15 12:41 ]
matu
ベテラン
会議室デビュー日: 2002/09/01
投稿数: 95
お住まい・勤務地: 東京
投稿日時: 2003-12-15 16:00

 こんにちは。有用なご意見ありがとうございます。とても参考になります。

引用:

「できるだけアプリの管理を簡単にしたい」という考え方もあります。
つまり、カスタムアプリの配置を分散させたくないということです。


 確かに管理するjarファイルは増やしたくないです。JavaWebStartみたいに
サーバ側で管理できるjarファイルなら別なのですが・・


引用:

その場合、例えばスケジューラが稼動しているサーバがUNIXであれば、wget
等のHTTPクライアントのコマンドを使ってリモートのServletを叩くことが
比較的簡単に出来ます。


 なるほど。LinuxであればServletを採用したくなりますね。cronもありますし


引用:

また、ネットワークの構成によっては(例えばデータセンタの運用ポリシー等の
関係で)スケジューラのあるサーバからロジックのあるアプリサーバまでRMIが
通らない場合もあるでしょう。比較的HTTPは通り易いようですので、その点では
Servlet経由の方がEJBクライアントよりも優位かもしれません。


 確かに昨今社内でさえ全プロトコルを通すという保証はないですよね?また
プロキシもHTTPであれば一般的に提供しているのでルーティング的な問題が
発生してもおおよそは対応可能となりますよね。別プロトコルだと苦労しそう
です。


引用:

ただ、ご存知のようにHTTPにはトランザクションという概念がありませんので、
Servlet経由でトランザクションを意識した処理をリモートで実行するのは
中々骨が折れるでしょう。そういう時は、EJBクライアントを使う方が楽です。


 うーんもともとServletに直でビジネスロジックを書くつもりはなかったです。
勿論EJBクライアントにもですが。この場合はServletとEJBクライアントの利点
の差はあまりないでしょうか?rerunなどのジョブ制御はServletの方が楽かも?
と考えてしまいましたが。


引用:

折衷案として、Webサービス(SOAP over HTTP)を使うという手もあります。
この場合HTTPの上で動きますから、ネットワークの問題は少なくなります。
また、コンテナのベンダによってはWebサービスクライアントを簡単に作成
するツールも提供しているようです。それらが利用できれば比較的工数は
少なく済むでしょう。
一概に言えませんが、もし私がやるとしたらEJBクライアントかWebサービス
で悩むでしょうね。EJBクライアントかなあ。。。Webサービスだとサーバ側
にもクライアント側にもSOAP実装が必要で、ちょっと大げさな気がします。


 まだ全く私には未知の世界なのですが、大げさでも興味があるので使って
みたいです・・でも納期が

 WebサービスはXMLと合わせて近々の課題とし、EJBクライアントを使って
みようと思います。
TomScissors
ベテラン
会議室デビュー日: 2003/06/05
投稿数: 79
投稿日時: 2003-12-15 18:40
返事が遅くなり申し訳ありません。

ちなみに私の場合はsub mainから処理を書くようにして、
javaコマンドから実行するようにWindows2000のタスクから定時起動しています。
(今回の件では参考にはなりませんかね(^^;

後、初歩的云々の件ですが、私もあまり偉そうには言えないのですが…、
初歩的な質問は基本的にリアルタイムな問答の場合に起こりうることだと思っています。
(質問事項について、調査する時間がないため)

私は初歩的というのは「基本的(または簡単)であり、調べれば(すぐに)分かるもの」
だと考えていますので。
「初歩的だと自分で思うのであれば、きちんと調べてみてはどうか」と思ってしまうわけです。

よく調べてみても分からないのであれば、自信(?)を持って質問していただきたく思います。

・顔文字が変になってしまったので修正…。

[ メッセージ編集済み 編集者: Tomscissors 編集日時 2003-12-15 18:42 ]
matu
ベテラン
会議室デビュー日: 2002/09/01
投稿数: 95
お住まい・勤務地: 東京
投稿日時: 2003-12-15 22:46
引用:

ちなみに私の場合はsub mainから処理を書くようにして、
javaコマンドから実行するようにWindows2000のタスクから定時起動しています。
(今回の件では参考にはなりませんかね(^^;

後、初歩的云々の件ですが、私もあまり偉そうには言えないのですが…、
初歩的な質問は基本的にリアルタイムな問答の場合に起こりうることだと思っています。
(質問事項について、調査する時間がないため)

私は初歩的というのは「基本的(または簡単)であり、調べれば(すぐに)分かるもの」
だと考えていますので。
「初歩的だと自分で思うのであれば、きちんと調べてみてはどうか」と思ってしまうわけです。

よく調べてみても分からないのであれば、自信(?)を持って質問していただきたく思います。



 ありがとうございます。
 勿論お聞きする前に色々調べたりしましたが、正直納得のいく回答が自分でだせま
せんでした。初歩的だと感じたのは直感であったのでお許しください。
 
 皆さんの意見を聞くととても良い方向性が見つかり助かりますね。私の周りには実
はjavaを使う人が皆無なので・・なおさらです。

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