質問はこれとよく似ていますが、別の問題に集中する必要があります。
大規模なデータベース (映画データベースなど) を持つアプリケーションがあるとします。アプリケーションのユーザーは、自分のプラグインを追加して実行できる必要があります。
シナリオは次のようになります。
- メインアプリを起動
- stats-plugin.jar を /app/plugins ディレクトリに配置します
- メインアプリに新しいプラグインをロードするように伝えます
- プラグインを一覧表示するようにアプリに指示する
- プラグイン (たとえば、インストールしたばかりのもの) を選択して実行します
- stats-plugin.jar は、映画についてデータベースにクエリを実行し、ホラー映画をカウントし、カウントを返します
- メインアプリは結果を提示します
各プラグインには、などPlugin
と呼ばれる標準メソッド (共通インターフェース) が
いくつかあります。onInitialize
onRun
メイン アプリが保証する必要があるのは、プラグインがクラッシュした場合 (0 で除算など)、メイン アプリが安定したままであることです (たとえば、エラー ダイアログが表示されますが、それ自体はクラッシュしません)。実行時間を制限し、プラグインが実行している操作を確認することも可能です。
これはすべて、サンドボックス化されたプラグイン環境に要約されます。最も重要なことは次のとおりです。プラグイン スタイルの拡張性とプラグインのサンドボックス化 - 安全な操作のみを許可します (たとえば、DB を読み取り、更新しない)。
プラグインは Java で作成する必要はありません。何らかの方法で実行可能である必要があります...可能であれば、JavaScriptファイルでもかまいません。
そのようなタスクにどのように取り組みますか?