未调用导入的java文件

时间:2013-10-16 15:07:35

标签: java debugging jndi

由于未调用实际导入的java文件,因此我遇到问题。请看一下我的代码: -

    import javax.naming.Context;
    import javax.naming.InitialContext;
    .....
   public class ABC{
   .....
  1.      Context lContext = null;
  2.        ObjectDataSourceFactory lSource = null;
  3.      try
  4.       {
  5.           lContext = new InitialContext();
  6.           lSource = ((ObjectDataSourceFactory)lContext.lookup(....));
     }
        catch (Exception e)
    {

    }

我在这里面临的问题是:当流控制进入第6行时,它从“SelectorContext.java”调用“查找方法”而不是从“InitialContext.java”调用,我在这个问题的帮助下找到了日食中的调试模式。结果它找不到合适的JNDI并给出异常。 FYI .. 我的代码在Tomcat6上运行。 我已经从我的JRE1.6和JDK设置了jar文件的类路径。

有人可以建议我 -   我怎么知道从哪个JAR调用这个“SelectorContext.java”以及如何让它查看RT.JAR中存在的InitialContext.class,如果我没有错的话?

1 个答案:

答案 0 :(得分:1)

您的理解不正确。 SelectorContext是tomcat的JNDI实现之一。

通过将java.naming.factory.initial设置为系统变量,可以选择使用外部JNDI上下文。这是由Tomcat(javaURLContextFactory)设置的,以提供它自己的JNDI服务。

当你调用new InitialContext()时,JVM会看到是否有用户提供的命名工厂,如果它可用,JVM调用initialFactory.getInitialContext来获取自定义JNDI实现并使其成为默认值并且对上下文的所有方法调用都是inturn路由到自定义实现。

在您的情况下,调用SelectorContext是正确的,看看您是否具有所需的配置以在JNDI中拥有资源。