Java™ Platform, Enterprise Edition (Java EE) Specification, v5のセクションEE.5.4 Simple Environment Entriesで説明されているように、単純な環境エントリを定義するのが最も用途の広いアプローチだと思います。
セクションから(68ページ):
単純な環境エントリは、アプリケーション コンポーネントのビジネス ロジックをカスタマイズするために使用される構成パラメーターです。環境エントリの値は、次の Java タイプのいずれかです: String、Character、Byte、Short、Integer、Long、Boolean、Double、および Float。
仕様のセクションEE.5.6.1.4 Standard Resource Manager Connection Factory Typesで説明されているように、URL 接続ファクトリーを使用することもできます。
アプリケーション コンポーネント プロバイダは、URL 接続を取得するために、java.net.URL リソース マネージャ接続ファクトリ タイプを使用する必要があります。
どちらも、Web アプリケーションのデプロイメント記述子でリソース参照の定義を必要とするため、 JNDI API を使用WEB-INF/web.xml
して値を注入したり、エントリ ポイントとして使用したりできます。@Resource
java:comp/env
利点は、コードを再コンパイルせずに Web アプリケーションの構成を変更できることと、管理者が使い慣れているアプリケーション サーバーの管理ツールを使用して変更できることです。
web.xml
リソース参照を定義します。
<resource-ref>
<res-ref-name>propertiesURL</res-ref-name>
<res-type>java.net.URL</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
<resource-ref>
<res-ref-name>propertiesPath</res-ref-name>
<res-type>java.lang.String</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
次に、コードで次を使用して値にアクセスします。
@Resource
String propertiesPath;
@Resource
URL propertiesURL;
これにより、Java EE の要件が満たされ、メソッドへの入力パラメーターとして渡されたかのようにpropertiesPath
orを使用できます。propertiesURL
さあ、WebSphere Application Server の期待に応える時が来ました。
定義したのは、管理された名前にマップする必要がある論理名です(アプリケーション サーバーはそれを認識しており、アプリケーションに提供できます)。
WebSphere Application ServerWEB-INF/ibm-web-bnd.xml
では、次の構成で WebSphere Binding 記述子を使用します。
<?xml version="1.0" encoding="UTF-8"?>
<web-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-bnd_1_1.xsd"
version="1.1">
<virtual-host name="default_host" />
<resource-ref name="propertyURL" binding-name="propertyURL" />
<resource-ref name="propertyURL" binding-name="propertyURL" />
</web-bnd>
アプリケーションがデプロイされると、WAS を使用して、これらのマッピングをその管理対象リソースにマップできます。ISC コンソールを使用して、環境エントリの値を定義し、それらをアプリケーションにマップします。
WebSphere Liberty Profile により、それがより簡単になりました。WLP が提供するメカニズムについては、私の記事Using @Resource to access JNDI in WebSphere AS 8.5 Liberty Profile で説明しました。