2

私のサーバー側には、次のようなコードのメソッドがあります

Context ctx = (Context)new InitialContext().lookup("java:comp/env");

JUnitまたはスタンドアロンアプリケーションを使用してクライアントでこのメソッドをテストする方法は? 私は次のことを試みますが、それでも失敗します

@BeforeClass
    public static void setUpClass() throws Exception {
        // rcarver - setup the jndi context and the datasource
        try {
            // Create initial context
            System.setProperty(Context.INITIAL_CONTEXT_FACTORY,
                "org.apache.naming.java.javaURLContextFactory");
            System.setProperty(Context.URL_PKG_PREFIXES, 
                "org.apache.naming");            
            InitialContext ic = new InitialContext();

            ic.createSubcontext("java:");
            ic.createSubcontext("java:/comp");
            ic.createSubcontext("java:/comp/env");
            ic.createSubcontext("java:/comp/env/jdbc");

            // Construct DataSource
            OracleConnectionPoolDataSource ds = new OracleConnectionPoolDataSource();
            ds.setURL("jdbc:oracle:thin:@host:port:db");
            ds.setUser("MY_USER_NAME");
            ds.setPassword("MY_USER_PASSWORD");

            ic.bind("java:/comp/env/jdbc/nameofmyjdbcresource", ds);
        } catch (NamingException ex) {
            Logger.getLogger(MyDAOTest.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

例外は javax.naming.NameNotFoundException:remaining name:env です

実際、サーバーでは、新しい InitialContext() を実行すると、以前のクライアントでのサブコンテキストの作成はすべて明確になっていると思います。

4

0 に答える 0