0

环境:
Tomcat 7
JNDI
Spring-MyBatis
No JTA - 仅公共池

问题:无法让连接池按照宣传的方式工作。我找不到一个不使用独立事务管理器或不将所有设置放入战争中的示例,这使得 JNDI 毫无意义。有人告诉我,JTA 对于这个应用程序来说太过分了,我们应该坚持使用公共池。这是有道理的,但如果我们这样做,我看不到配置池的方法。

那么......如何在不将设置放入war文件并且不使用独立事务管理器的情况下配置连接池?这可以在没有完整的 Java EE 应用服务器的情况下完成吗?我们只是从另一个实际上是完整的 Java EE 的产品迁移到 Tomcat,所以我认为这可能是一个 Container vrs。应用服务器问题。

奇怪的是我们可以并且已经使用了 JNDI,但是池化绝对是错误的。

这是一个可能有效的示例,但如果设置将在 META-INF/context.xml 中,为什么还要使用 JNDI?:

MyBatis JNDI 示例

4

1 回答 1

0

即使使用 context.xml,它仍然是容器级别的设置。但是,这是一种在单个单元中部署所有内容的便捷方式,而不必在部署 WAR 文件之前创建连接池。

JNDI 旨在保持您的应用程序配置通用。例如,如果您将 WAR 部署到 WebSphere 中,它将忽略 context.xml 文件。但是 WebSphere 将看到您的 web.xml 中有一个 JDNI 资源引用,并引导您创建数据源。与 Tomcat 相同的想法,只是实现方式不同。

如果您 100% 确定此应用程序将仅在 Tomcat 中运行,那么您不必使用JNDI。但是,如果您确实移动到另一个容器,它将为您省去麻烦。

于 2012-11-30T12:36:40.930 回答