2016-12-08 1 views
0

J'utilise le serveur WebSphere Liberty 8.5.5 et j'écris quelques cas de test de traitement par lots sur ce serveur. Je suis en train de se moquer de l'objet de recherche JNDI pour le test, mais lors de la configuration objet DataSource en cas de test, je reçois ci-dessous erreur, personne ne sait comment définir INITIAL_CONTEXT_FACTORYtest unitaire -Recherche JNDI dans WebSphere LIberty

ERREUR: javax.naming.NoInitialContextException: Nécessité de préciser la classe nom dans l'environnement ou le système prop erty, ou en tant que paramètre d'applet, ou dans un fichier de ressources d'application: java.naming.factory.initial at javax.naming.spi.NamingManager.getInitialContext (NamingManager.java:662) at javax .naming.InitialContext.getDefaultInitCtx (InitialContext.java:307) à javax.naming.InitialContext.getURLOrDefaultInitCtx (InitialContext.java:344) à javax.naming.InitialContext.lookup (Ini tialContext.java:411)

Répondre

1

Vous devez définir le nom de classe de votre fabrique de contexte initiale dans l'environnement du constructeur InitialContext.

Par exemple:

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

com.example.MockICF peut être écrit comme:

public class MockICF implements InitialContextFactory { 

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

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