2016-12-08 11 views
0

Я использую сервер WebSphere Liberty 8.5.5 и записываю несколько тестовых примеров на этом сервере. Я пытаюсь издеваться JNDI объект подстановок для тестирования, но при настройке объекта DataSource в тесте я получаю ниже ошибки, Кто-нибудь знает, как установить INITIAL_CONTEXT_FACTORYunit testing -Mock JNDI lookup in WebSphere LIberty

ОШИБКА: javax.naming.NoInitialContextException: Необходимо указать класс имя в среде или системе prop erty или в качестве параметра апплета или в файле ресурсов приложения: java.naming.factory.initial в javax.naming.spi.NamingManager.getInitialContext (NamingManager.java:662) в javax .naming.InitialContext.getDefaultInitCtx (InitialContext.java:307) at javax.naming.InitialContext.getURLOrDefaultInitCtx (InitialContext.java:344) at javax.naming.InitialContext.lookup (Ini tialContext.java:411)

ответ

1

Вам необходимо установить имя класса вашей фабрики исходного контекста в среде конструктора InitialContext.

Например:

Hashtable<Object, Object> env = new Hashtable<>(); 
env.put(InitialContext.INITIAL_CONTEXT_FACTORY, "com.example.MockICF"); 
new InitialContext(env); 

Где com.example.MockICF может быть записана в виде:

public class MockICF implements InitialContextFactory { 

    private static Context ctx = new Mockery().mock(Context.class); 

    @Override 
    public Context getInitialContext(Hashtable<?, ?> environment) throws NamingException { 
     return ctx; 
    } 
}