как инициализировать JNDI-контекст для Junit для тестового примера We Services в Джерси - PullRequest
0 голосов
/ 26 февраля 2019

Я пишу контрольные примеры для Jersey WS и застрял при инициализации JNDI.Получение исключения «javax.naming.NameNotFoundException: имя jdbc не связано в этом контексте».

    public class LoginServicesTest extends JerseyTest {


    @Override
    protected Application configure() {
        return new ResourceConfig(LoginServices.class);
    }

    @BeforeClass
    public static void setUpClass() throws Exception {
        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");


         // Construct DataSource
            OracleConnectionPoolDataSource ds = new OracleConnectionPoolDataSource();
            ds.setURL("jdbc:oracle:thin:@dbs-host.comp.com:1525:USRDEV");
            ds.setUser("DBName");
            ds.setPassword("password");
            ic.bind("java:comp/env", ds);

        } catch (NamingException ex) {ex.printStackTrace();}
    }

    @Test
    public void acceptAgreementTest() {
        Response response = target("/user/acceptAgreement").request().get();
        System.out.println(response);
    }
}

Код создания источника данных:

public DataSource getDataSource() {
        DataSource dataSource = null;
        String jndiName = null;
        try {

            jndiName = "jdbc/usrdb";
            Context env = (Context) initialContext.lookup("java:comp/env");
            dataSource = (DataSource) env.lookup(jndiName);
        }catch(Exception e) {
            LOGGER.error("ServiceLocator", e);
            e.printStackTrace();
        }
        return dataSource;
    }

Пожалуйста, предложите, как я могу выполнить тестовое покрытие для Jersey WS, имеющего подключение к БД через JNDI.Цените любые указатели, чтобы решить проблему.Застрял плохо.

...