javax.naming.NoInitialContextException:在webservices中运行JUNIT测试用例时

javax.naming.NoInitialContextException:在webservices中运行JUNIT测试用例时,java,web-services,soap,junit,jndi,Java,Web Services,Soap,Junit,Jndi,我的应用程序中所有可能的数据库连接都有JNDI配置。同时,我正在使用JUNIT测试我的应用程序。我从webservices类调用中找到了成功的连接,但在通过junit测试类调用时抛出了错误 我的JNDI设置是 public static Connection getConnectionPool() { Connection conn = null; System.out.println("Creating connection pool."); try { Con

我的应用程序中所有可能的数据库连接都有JNDI配置。同时,我正在使用JUNIT测试我的应用程序。我从webservices类调用中找到了成功的连接,但在通过junit测试类调用时抛出了错误

我的JNDI设置是

public static Connection getConnectionPool() {
    Connection conn = null;
System.out.println("Creating connection pool.");
    try {
        Context initContext = new InitialContext();
        Context envContext  = (Context)initContext.lookup("java:/comp/env");
        DataSource ds = (DataSource)envContext.lookup(getJNDIName());
        conn = ds.getConnection();
    } catch (SQLException e1) {
        e1.printStackTrace();
    } catch (NamingException e) {
        e.printStackTrace();
    }
    return conn;

}

private static String getJNDIName()
{
    if(!readJNDI)
    {
        try{
            Properties prop = new Properties();
            prop.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties"));
            JNDIName = prop.getProperty("jndi.name");
            System.out.println("JNDIName : "+JNDIName);
            readJNDI = true;
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }
    return JNDIName;
}
下面提到的是错误

javax.naming.NoInitialContextException:需要在中指定类名 环境或系统属性,或作为小程序参数,或在 应用程序资源文件:java.naming.factory.initial

我该如何解决它


提前感谢。

您应该使用本地数据源

只需将DataSource/TransactionManager定义提取到一个单独的XML文件中,并在测试期间使用该文件而不是JNDI文件

您仍然可以使用所有其他配置。

我认为它是重复的