jndi配置

pxyaymoc  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(353)

我用springboot创建了一个jar应用程序。我在tomcat服务器下启动这个jar应用程序。
其中一个要求我使用jndi检索存储在tomcat context.xml中的数据源,说这很简单。
我试着用下面的代码来实现这一点。

Context initContext;
        try {
            initContext = new InitialContext();
            Context envContext = (Context) initContext.lookup("java:comp/env");
            DataSource ds = (DataSource) envContext.lookup("jdbc/mydatabase");
        } catch (NamingException e) {
            System.out.println("ERROR!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
            e.printStackTrace();
            System.out.println("ERROR!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        }

但它不起作用。
我得到这个错误:

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial

这是克服这个问题的简单方法吗?
或者对于我的jar独立应用程序来说,克服这个问题仍然是绝对不可能的,比如之前的tomcatjndi+独立java?
我看到很多帖子,很多文档,但对我来说还不清楚。
谢谢你的帮助,你的分享。
托马斯

f2uvfpb9

f2uvfpb91#

凯达给了我一个答案。我总结了凯达尔的回答:
在用jar命令行运行jar应用程序时,我使用的是嵌入式tomcat
当我使用嵌入式tomcat时,我可能无法访问我的jndi数据源,这就是为什么我的jndi不能工作的原因。我将试着看这篇文章来配置我的应用程序,以便尝试使用jndi:如何在spring boot中用嵌入的tomcat容器创建jndi上下文,但是,现在,由于kedar,我明白了为什么我的jndi代码不能工作。我将在另一篇文章中看到如何配置以尽可能使用jndi。谢谢凯达。

相关问题