Тестирование сервлетов JUnit с поиском jndi для источника данных - PullRequest
1 голос
/ 06 января 2010

Как сделать модульный тест сервлетов, который использует jndi для поиска источника данных (JDBC)?

Ответы [ 3 ]

3 голосов
/ 21 января 2011

Я запускаю следующий код в методе before класса.

    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(""); // <--insert url to database here
        ds.setUser("username"); //<-- self explanatory
        ds.setPassword("password"); //<-- self explanatory

        ic.bind("java:/comp/env/jdbc/examplename", ds); //<--insert name of binding here
    } catch (NamingException ex) {
        ex.printStackTrace();
    } catch (SQLException ex){
        ex.printStackTrace();
    }

Я использую Tomcat в качестве своего сервера, поэтому мне также пришлось ссылаться на следующие jar-файлы, расположенные в каталоге tomcat \ bin:

  1. кот-juli.jar
  2. bootstrap.jar
  3. Обще-daemon.jar

Надеюсь, это поможет вам

1 голос
/ 06 января 2010

Настройте контекст JNDI в ваших @Before (или @BeforeClass) методах, создав источник данных вручную.

(Ответ только руководящий, но я не могу предоставить ничего конкретного, поскольку вы не предоставили ничего конкретного)

0 голосов
/ 06 января 2010

Если проблема в том, что вам нужен JNDI, то существует простая автономная реализация, которую можно использовать в сценариях приложений и модульных тестов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...