我正在将WAR部署到在context.xml中定义了数据源(Oracle)的Tomcat中。
我的应用程序通过jndi名称进行访问。 我需要将jar驱动程序嵌入战争吗?还是只需要在Tomcat的类路径中使用它?
-编辑-
我解释了一些错误。我正在战争中提供它,并且正在工作。
但我最后的疑问是,连接是由服务器本身进行的,还是jndi只是将数据提供给应用程序来执行。
战争中提供的驱动程序使我对此行为感到困惑
谢谢
答案 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下。这样,您就可以控制要使用的版本。