データへのオプションの SOAP インターフェース (一連の EJB として実装) を持つ Web アプリケーションがあります。メイン アプリケーションと SOAP インターフェイスは分離され、データベース アクセス コードのみを共有していましたが、最近、1 つのアプリケーションとして統合されました (SOAP インターフェイスは、メイン アプリケーションの依存関係に追加された JAR としてパッケージ化されました)。どちらも JBoss サーバーでホストされています。
ソリューションは機能しますが、このアプリケーションではモジュラー プラグイン インターフェイスを使用しており、Maven を使用してプラグインを見つけ、アプリのユーザー インターフェイスから特定の機能のオンとオフを切り替えることができます。プラグインは、アプリケーションのデフォルト クラス ローダーを親として を使用してロードされURLClassLoader
、 にマッピングされた汎用ページ ディスパッチャー サーブレットに登録されます*.page
。
<!-- from web.xml -->
<servlet-mapping>
<servlet-name>dispatcer</servlet-name>
<url-pattern>*.page</url-pattern>
</servlet-mapping>
現在のソリューションでは、EJB は以下を使用して公開されていweb.xml
ます。
<!-- the very same web.xml -->
<servlet>
<display-name>BaseService</display-name>
<servlet-name>BaseService</servlet-name>
<servlet-class>ourapp.services.BaseService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BaseService</servlet-name>
<url-pattern>/services/Base/*</url-pattern>
</servlet-mapping>
もちろん、EJB が実行時にロードされる場合、事前に指定することはできないため、次のようになります。
JAR から EJB をロードし、実行時に Web サービスとして公開するにはどうすればよいですか?