首页
学习
活动
专区
圈层
工具
发布

对JNDI?
EN

Stack Overflow用户
提问于 2013-02-22 20:23:03
回答 3查看 3.9K关注 0票数 4

我是一个新手,我已经创建了一些简单的Java Swing应用程序。我能够使用创建一个连接池并访问数据源。

我最近开始使用JSP和Servlets创建基于java web的应用程序。我已经学会了使用JNDI访问数据源。我更新XML文件并使用InitialContext()和查找(“java:comp/env”),就是这样!我使用Apache作为Servlet/JSP容器。

1.但是在哪里创建了DB连接池?

如果是的话,这是否意味着在内部使用DBCP?

当我必须为Swing应用程序创建一个DBCP时,我必须首先创建一个GenericObjectPool实例,然后创建一个连接工厂对象,最后一个PoolableConnectionFactory对象来创建将用于获取连接的Datasource。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-22 20:28:50

JNDI是一种将对象从系统的一个部分传递到另一个部分的机制(在技术上跨类加载器)。这对于Java中的类和接口(如String或DataSource )非常有用。

这意味着在您的示例中,JNDI只是一种传输机制,您需要在其他地方定义实际的连接池。大多数web容器都有一种机制来定义一个系统范围的连接池,然后JNDI允许您访问它。

票数 4
EN

Stack Overflow用户

发布于 2013-02-22 20:28:07

Tomcat使用Apache DBCP阿帕奇池的自定义实现来实现JNDI数据资源。这些库位于$CATALINA_HOME/lib/tomcat-dbcp.jar的一个JAR中。

主包是org.apache.tomcat.dbcp,以避免与常规包阿帕奇公域格式的冲突。

票数 3
EN

Stack Overflow用户

发布于 2013-02-22 21:05:15

JNDI是一种通过查找定位远程资源的机制。它与连接池库没有任何共同之处。这些库(其中c3p0、DBCP和BoneCP是最著名的)允许您创建具有连接和/或语句池功能的数据源。如果在应用程序中使用此数据源,则不需要使用JNDI,如果它位于远程系统(例如Tomcat中),则需要使用JNDI访问数据源。

另外,您为什么选择使用旧的Servlet/JSP组合?在JSF2.x中,使用JSP后继的facelets是一种首选的视图技术,这是一个更好的主意。

另一个注释是将数据源的管理转移到一个众所周知的框架中。一个方向可能是使用ORM,例如Hibernate来管理数据源(创建数据源时考虑了连接池)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15032585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档