javax.naming.NoInitialContextException:在webservices中运行JUNIT测试用例时
我的应用程序中所有可能的数据库连接都有JNDI配置。同时,我正在使用JUNIT测试我的应用程序。我从webservices类调用中找到了成功的连接,但在通过junit测试类调用时抛出了错误 我的JNDI设置是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
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文件 您仍然可以使用所有其他配置。我认为它是重复的