私たちのビジネスケースでは、メッセージBeanからシェルスクリプトを呼び出す必要があります。明らかな移植性の問題と標準への準拠以外に、Beanからシェルスクリプトを呼び出す際の問題は何ですか?技術的に言えば、コンテナのWebLogicで可能になりますが、それは確かに悪い習慣のようです。良い代替案は何でしょうか?この場合は同期呼び出しです。
3 に答える
明らかな移植性の問題と標準への準拠以外に、Beanからシェルスクリプトを呼び出す際の問題は何ですか?
あなたは最も重要なものをカバーしました。
私が考えることができる他の唯一のものは次のとおりです。
- 「混合」ソリューションを維持するためのエンジニアリングの問題
- 潜在的なパフォーマンスの問題。たとえば、Javaでコーディングし、(通常は)メインJVMで実行すると、タスクを大幅に高速化できる場合です。
技術的に言えば、コンテナのWebLogicで可能になりますが、それは確かに悪い習慣のようです。
悪い習慣は優雅さと同一視されるべきではありません。良い/悪い習慣は、いくつかの客観的な基準に従って測定可能な影響を与える/もたらすであろうものについてです...あなたがそれらを測定することができれば。
良い代替案は何でしょうか?この場合は同期呼び出しです。
一般的な代替手段は、Javaでタスクをコーディングすることです。awk
/のsed
場合はそれができるはずです。外部プロセスを探すために使用している場合、ps
おそらく純粋なJavaでタスクを実行することはできません。つまり、現在のアプローチが最適です。
大丈夫だと思います、私たちはいつもそれを使っています。Beanは同期呼び出しを待つのに忙しいので、ロードに十分な空きBeanがない場合、キューは停止します。
@スティーブンC:いい反応。
問題と対応は、リソース管理に対する私の考えを導きます。外部プロセスがアクセスするリソースを検討してください。
リソースが次の場合:
厳密に「計算」(awk / sed over stdin / stdout)であり、これは既存のツール(UNIXの精神)を活用して迅速なソリューションを引き出すための不合理な方法ではありませんが、移植性はありません。私がプロトタイピングをしている場合、または開発スケジュールが速い場合は、これを考慮し、より複雑な問題についてのみこれに傾倒します。
次に、ファイル、ネットワークなどを、スケーラブルなJavaEE環境でこれらのリソースをどのように管理するかを検討する必要があります。
プロセスは、プロセス管理の目的で、Java / Java EEでは利用できません。/processesの場合のように
ps
、O/Sに目を向ける必要があります。作業を並列化するためのプロセス/スレッド-並列ワークフローを管理するように誘惑されないでください。JavaEEには、その目的のためのスケーラブルなAPIがあります。