2

アプリ独自の XML 構成ファイル (Tomcat の に多少似ていますcontext.xml) で JNDI ルックアップを定義し、アプリでそれらを参照したいと考えています。次に、内部で、アプリは JNDI を使用して、XML ファイルに格納された情報でオブジェクトを検索します。

たとえば、アプリの XML 構成ファイルからの次のスニペットがあるとします。

<app>
    <!-- lots of stuff -->

    <dataSource name="jdbc/myDB"
        maxActive="50" maxIdle="30" maxWait="10000"
        username="mysqluser" password="mysqlpassword" 
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost:3306/myDB"/>

    <!-- lots of stuff -->
</app>

次に、私のアプリで:

public class DataSourceProvider {
    public DataSource lookupDataSource(String name) {
        DataSource dataSource = null;
        try {
            Context context = new InitialContext();
            dataSource = (DataSource) context.lookup("Database");
        } catch (NamingException e) {
            // Handle...
        }

        return dataSource;
    }
}

DataSourceProvider dsp = new DataSourceProvider();
DataSource myDB = dsp.lookupDataSource("myDB");

これら 2 つの概念をどのように結び付けますか? XML<dataSource/>要素がオブジェクトに読み込まれるとしDataSourceVOます。JNDI ルックアップを実行できるように、InitialContextインスタンスからインスタンスを構成するにはどうすればよいですか? DataSourceVO前もって感謝します!

更新:私はこの例を見つけました:

try{   
    Hashtable env = new Hashtable();   
    env.put(Context.INITIAL_CONTEXT_FACTORY,   
            "com.sun.jndi.ldap.LdapCtxFactory");   
    env.put(Context.SECURITY_AUTHENTICATION, "simple");

    String securityPrincipal = domain + "\\" + user;

    env.put(Context.SECURITY_PRINCIPAL, securityPrincipal);   
    env.put(Context.SECURITY_CREDENTIALS, password);   
    env.put(Context.PROVIDER_URL, "ldap://" + domainController);   

    ctx = new InitialDirContext(env);   
} catch (AuthenticationException ex) { 
    ex.printStackTrace();
} catch(NamingException nex){   
    nex.printStackTrace();   
}

これは私が探しているものですか?そうすれば、XML をHashtable(または同様のもの)に読み込んで、InitialContextそのテーブルから を作成できますか? それだけですか!?

4

1 に答える 1