1

私は apache-tomcat-7.0.35 を使用しています。以下のように server.xml で環境変数を定義しました。

<GlobalNamingResources>

        <Environment name="sam" 
                 value="D:\AppServers\apache-tomcat-7.0.35\conf\sample.xml"
                 type="java.lang.String" override="true"/>

  </GlobalNamingResources>

context.xml のコンテキスト要素の横に ResourceLink 要素を使用しています

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/Practice_1" docBase="/Practice_1"
    crossContext="true" reloadable="true" debug="1">
<ResourceLink name="sam" global="sam" type="java.lang.String"/>

</Context>

を使用してコードでこの値を取得しようとすると

 Context initCtx = new InitialContext();
        String configPath = (String)initCtx.lookup("sam");

その投げるjavax.naming.NameNotFoundException.javax.naming.NameNotFoundException: Name [sam] is not bound in this Context. Unable to find [sam].

どうすればこれを修正できますか?

4

2 に答える 2

1

私が間違っていなければ、 server.xml を変更する必要はありません。

変更された context.xml

<Resource auth="Container"            java.naming.factory.initial="org.jnp.interfaces.NamingContextFactory" 
factory="de.example.CXIResourceLocator"
name="bean/CXIResourceLocator"
type="de.example.Bean"/>

web.xml

<resource-env-ref>
    <description>
        Connection pooling.
    </description>
    <resource-env-ref-name>bean/CXIResourceLocator</resource-env-ref-name>
    <resource-env-ref-type>
        de.example.Bean
    </resource-env-ref-type>
</resource-env-ref>

bean/CXIResourceLocator should match in both context and web xmls.

これを行う目的がわからないので、これ以上お手伝いできません。:-(

詳細については、このリンクをたどってください。Apache は非常に良い例を示しました。

この助けを願っています。 http://tomcat.apache.org/tomcat-7.0-doc/jndi-resources-howto.html

于 2013-03-18T13:51:31.787 に答える