spring mvc アプリケーションで jndi を次の 2 つの目的で使用したいと考えています。
- データソース設定
- プロパティ ファイルの場所を保存して、コード内で検索できるようにする
私は実際には2つのアプリケーションを持っています.1つはSpring MVCで、もう1つはSpringなので、両方に同じjndi設定を使用する予定です。
また、2 つのアプリケーションは異なるコンテナー (Tomcat と Jetty) で実行されます。私はこれまで jndi を使用したことがないので、これを 1 つの場所で定義し、両方のアプリケーションが同じ jndi ファイルを指すようにしたいと考えています (ファイルであると仮定します)。
#1に関しては、現在、Springコンテキストファイルのデータソース設定は次のとおりです。
<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/mydb_development"/>
<property name="username" value="devuser1"/>
<property name="password" value="123"/>
<property name="maxActive" value="100"/>
<property name="maxIdle" value="30"/>
<property name="maxWait" value="1000"/>
<property name="defaultAutoCommit" value="true"/>
<property name="removeAbandoned" value="true"/>
<property name="removeAbandonedTimeout" value="60"/>
<property name="testOnBorrow" value="true"/>
<property name="validationQuery" value="SELECT 1"/>
</bean>
JNDI を使用するためにこれを抽出する方法を誰かに教えてもらえますか?
#2に関しては、私のコードでは現在、次のようなクラスパスにあるプロパティファイルをロードしています:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream is = classLoader.getResourceAsStream("test.properties");
今、test.propertiesファイルは私のクラスパスにあるので、そのままで動作しますが、私が知りたい/理解したいのは、何らかの方法でjndiを使用してプロパティファイルの場所を検索できるかどうかです(それが理にかなっていますか?)このファイルをクラスパスに入れる可能性があります。
私はグーグルで検索しましたが、春には次を使用してjndiを取り込むことができることを知っています:
<jee:jndi-lookup id="dataSource" jndi-name="jdbc/mysqlDataSource" />
しかし、私が理解できないのは、設定を含む実際のファイルはどこにあるのでしょうか? 私の web.xml ファイル以外の場所に置くことはできますか? (私の他のアプリケーションもSpringを使用していますが、これはデーモンであるため、web.xmlファイルがありません)。
私の目標は、jndi ファイルの値 (ユーザー名、パスワード、ファイル パスなど) を変更できるようにし、これらを jar に埋め込まないようにすることです。運用サーバーまたは開発サーバーでこれらのファイルを手動で編集し、コンテナーを再起動できるようにしたいと考えています。