2016-05-02 11 views
1

私はcontext/JNDIを使って開発しているweb-appの設定を提供したいと思います。私は現在Netbeans 8.1で、Glassfishサーバーをバンドルして開発していますが、私のソリューションはコンテナに依存しません。カスタムJNDIリソースを作成する

私はデータベース接続を取得するための設定を行っていますが、カスタムリソースタイプで困惑しています。 web.xmlに

:GlassFishの-resources.xmlので

<resource-ref> 
    <res-ref-name>SHOWmail/search</res-ref-name> 
    <res-type>com.example.SearchProvider</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 

<custom-resource jndi-name="SHOWmail/search" res-type="com.example.SearchProvider" factory-class="com.example.SearchProviderFactory"> 
    <property name="name" value="value"/> 
</custom-resource> 

コードで:

initContext = new InitialContext(); 
    envContext = (Context) initContext.lookup("java:comp/env"); 
    search = (SearchProvider)envContext.lookup("SHOWmail/search"); 

私は信頼性の高いjavax.naming.NameNotFoundException: No object bound to name java:SHOWmail/searchを取得します。私の工場とクラスは触れられません(必要に応じて追加されます)。

私が間違っていたところのポインタは大変感謝しています。

+0

私も試してみた 'を'の代わりに '<のresource-ref>'、と同じ結果。 –

答えて

0

netbeans/glassfishの組み合わせでは、ここでは異なるJNDI名前空間を誤解しているようです。

解決策は、java:comp/envの代わりにjava:appを見てください。 WEB-INF/glassfish-resources.xmlが検索されます。

web.xmlの

<resource-env-ref> 
    <resource-env-ref-name>SHOWmail/search</resource-env-ref-name> 
    <resource-env-ref-type>com.example.SearchProviderFactory</resource-env-ref-type> 
</resource-env-ref> 

のglassfish-resources.xmlの

<custom-resource jndi-name="java:app/SHOWmail/search" res-type="com.example.ElasticSearchProvider" factory-class="com.example.SearchProviderFactory"> 
</custom-resource> 
関連する問題