[解決済み] java:comp/env/は何をするところですか?
質問
私は、いくつかのJNDIファクトリBeanをフックするときにいくつかのエラーを解決しようとして、私の一日の多くの時間を費やしました。問題は、この代わりに...であることが判明しました。
<bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/loc"/>
</bean>
実はこんなこと書いてました...。
<bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/loc"/>
</bean>
と推察しています。
java:comp/env/
おそらく、何らかの環境変数を参照し、最終的に私のコンテキストファイルが参照されるようにするのでしょう。 唯一の違いは
java:comp/env/
. 専門家の口からすると、これは何をするものなのでしょうか?
がなければ
java:comp/env/
のプレフィックスがないと、次のようなエラーが発生します。
このContextでは、jdbcという名前はバインドされていません"
.
どのように解決するのですか?
<ブロッククオートネームスペースのルートコンテキストに は "comp" という名前を持つバインディングです。 コンポーネント関連のバインディングのために予約されたサブツリーにバインドされている にバインドされています。このバインディングは、コンポーネント関連のバインディング用に予約されたサブツリーにバインドされています。 という名前は、コンポーネントの略です。 ルートコンテキストには、他のバインディングはありません。 ルートコンテキストには他のバインディングはありません。しかし、ルート コンテキストは、将来的なポリシーの拡張のために予約されています。 ポリシーの拡張、特に コンポーネントそのものではなく コンポーネント自体にではなく、ユーザーや他の のような他のタイプのエンティティに結びついた命名リソースのために予約されています。 のような他のタイプのエンティティに関連付けられた命名リソースのためのものである。たとえば、将来 将来のポリシーでは、ユーザーと組織/部門に名前を付けることができるようになるかもしれません。 および組織/部門を指定することができます。 のような名前を使用することができます。 java:org/engineering"のような名前を使用して、ユーザーと組織/部門を指定することができます。
comp" コンテキストでは、次の 2 つのバインディングがあります。 env" と "UserTransaction" という 2 つのバインディングがあります。 env"という名前は、コンポーネントのために予約されたサブツリーにバインドされています。 にバインドされ、コンポーネントの 環境関連のバインディングのために予約されたサブツリーにバインドされます。 このサブツリーは、そのコンポーネントのデプロイメント記述子によって定義されます。 env" は Environment(環境)の略です。J2EEでは J2EEでは、以下の構造を推奨しています(ただし、必須ではありません)。 env".名前空間の構造は次のとおりです。 の名前空間を使用することを推奨します。
Springやtomcatのコンテキスト記述子から行ったバインディングは、デフォルトでjava:comp/env/に移動するわけです。
例えば、あなたの設定が
<bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="foo"/>
</bean>
を使って直接アクセスできるようになります。
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/foo");
または、取得するリソースごとに "java:comp/env" を指定する必要がないように、中間ステップを作成することもできます。
Context ctx = new InitialContext();
Context envCtx = (Context)ctx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("foo");
関連
-
[解決済み] クラスを@Componentでアノテートした場合、Spring BeanとSingletonということになるのでしょうか?
-
[解決済み] Springのセキュリティ認証の例外を@ExceptionHandlerで処理する
-
[解決済み] Spring Data JPAでネイティブクエリ結果をNon-Entity POJOにマップする。
-
[解決済み] Spring Hibernate - 現在のスレッドでトランザクションに同期したセッションを取得できませんでした。
-
[解決済み] Spring Boot Rest Controllerは、異なるHTTPステータスコードを返すには?
-
[解決済み] Spring @PostConstruct と init-method 属性の比較
-
[解決済み] Spring Boot - 実行中のポートを取得する方法
-
[解決済み] Spring Dataです。"delete by "はサポートされていますか?
-
[解決済み] Spring Boot JPA - 自動再接続の設定
-
[解決済み] Spring CrudRepositoryで大文字小文字を区別しないクエリ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] クラスを@Componentでアノテートした場合、Spring BeanとSingletonということになるのでしょうか?
-
[解決済み] Springのセキュリティ認証の例外を@ExceptionHandlerで処理する
-
[解決済み] Spring Hibernate - 現在のスレッドでトランザクションに同期したセッションを取得できませんでした。
-
[解決済み] Spring Boot Rest Controllerは、異なるHTTPステータスコードを返すには?
-
[解決済み] web.xmlのresource-refは何のためにあるのですか?
-
[解決済み] Spring @PostConstruct と init-method 属性の比較
-
[解決済み] Spring Boot - 実行中のポートを取得する方法
-
[解決済み] Spring Dataです。"delete by "はサポートされていますか?
-
[解決済み] Spring Boot JPA - 自動再接続の設定
-
[解決済み] Spring CrudRepositoryで大文字小文字を区別しないクエリ