私は、主にデータセットの単純な検証に焦点を当てた、ユーザーがアップロードしたカスタム コードまたはプリコンパイル済みクラスを実行できる Java Web アプリケーションの設計に取り組んでいます。カスタム クラスは定義済みのインターフェイスに制限する必要があり、一部のライブラリとクラスのみをカスタム クラスで使用できるようにする必要があります。
私の最初の解決策は、ファイル システムの定義済みディレクトリから .jar ファイルをロードできるカスタム クラスローダーを使用することです。このアプローチは機能しているように見えますが、このソリューションのセキュリティと互換性が心配です。
ファイルやソケットを開くなどのアクションを回避するために、カスタム クラスによってインポートできるクラスを制限し、サンドボックスでコードを実行することは可能ですか?
ロードされたクラスはいつアンロードされますか?
Weblogic のようなアプリケーション サーバーには、カスタム クラスローダーの使用に関していくつかの制限がありますか?
OSGi バンドルなどの別のソリューションを評価しましたが、非常に複雑に見え、一部のアプリケーション サーバーではサポートが制限されており、OSGi がこの特定の用途に適したテクノロジであるかどうかもよくわかりません。Groovy や Javascript などの組み込みスクリプト言語は、プロジェクトの所有者がカスタム コードをプリコンパイルして Java で記述したいと考えているため、破棄されます。
この問題には何をお勧めしますか?