谁在服务器中配置的JNDI数据源上执行连接?

时间:2018-08-22 10:39:34

标签: java tomcat jndi

我正在将WAR部署到在context.xml中定义了数据源(Oracle)的Tomcat中。

我的应用程序通过jndi名称进行访问。 我需要将jar驱动程序嵌入战争吗?还是只需要在Tomcat的类路径中使用它?

-编辑-

我解释了一些错误。我正在战争中提供它,并且正在工作。
但我最后的疑问是,连接是由服务器本身进行的,还是jndi只是将数据提供给应用程序来执行。
战争中提供的驱动程序使我对此行为感到困惑

谢谢

3 个答案:

答案 0 :(得分:1)

应用服务器未与所有RDBMS系统的驱动程序jar文件捆绑在一起。 Tomcat当然不是Oracle的JDBC驱动程序文件附带的。但是创建连接等仍需要这些类。

是的,您需要包括驱动程序jar。您可能需要将其安装在服务器本身上(在<tomcat>/lib下)

答案 1 :(得分:1)

在这种情况下,您不应将驱动程序添加到WAR文件中,而应将其部署到tomcat的lib目录中。原因:服务器打开并维护了连接,因此服务器本身需要访问驱动程序,而不仅仅是应用程序。

如果还将驱动程序添加到应用程序中,则可能会冒用两个版本的风险,并且最终可能会在类路径上出现重复的类,这在调试时从来都不是一件好事。将它包含在肯定需要的位置(服务器)一次,然后将其从WAR文件中删除。

答案 2 :(得分:0)

将JDBC驱动程序放在/ lib中将使其可用于所有应用程序。但是,如果您要专门针对Webapp,则可以考虑将库放在/ webapps / testapp / WEB-INF / lib下。这样,您就可以控制要使用的版本。