首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JBoss数据库连接池

JBoss数据库连接池
EN

Stack Overflow用户
提问于 2009-05-04 13:33:29
回答 3查看 45.1K关注 0票数 7

我是jboss的新手,我被要求将jboss连接池机制与现有的web应用程序结合起来。考虑到web应用程序数据库层被正确编写,即所有结果集、语句和连接在不需要时被正确关闭,那么在正确配置jboss数据源之后,我必须在web应用程序中进行哪些代码更改。

有没有人可以给我指点一下在web应用中使用jboss数据源的教程或代码示例。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-04 13:38:33

JBoss中的池全部在DataSource配置中处理。Here是HowTo。web应用程序必须对数据源执行JNDI查找以获得数据库连接,而不是执行直接的JDBC URL,然后您将获得池。

然而,交易是另一回事。

编辑:为了回应您关于这将如何影响代码的评论,它看起来是这样的:

代码语言:javascript
复制
String jndiPath = "java:DataSourceJNDIName"; //The exact prefix here has a lot to do with clustering, etc., but if you are using one JBoss instance standalone, this works.
Context ctx = new InitialContext();
DataSource ds = (DataSource) PortableRemoteObject.narrow(ctx.lookup(jndiPath), DataSource.class);
Connection c = ds.getConnection();

从技术上讲,PortableRemoteObject.narrow在JBoss (至少是4.2.2)单服务器配置中肯定不是必需的,但它是更合适的J2EE标准代码,因为一般的应用服务器不必仅仅为了执行Context.lookup而返回正确类型的对象。

上面并没有涉及到资源利用率和错误处理问题。您应该在使用完上下文对象后关闭它,当然还有数据库连接,但是如果您忘记关闭数据库连接,事务结束,JBoss会对您大喊大叫,并为您关闭它。

无论如何,Connection对象和DriverManager.getConnection(Url)一样有用;

票数 8
EN

Stack Overflow用户

发布于 2011-05-04 15:08:11

首先,创建一个名为xxx-ds.xml的xml文件,并将该文件放在server/default/deploy/xxx-ds.xml

代码语言:javascript
复制
<datasources>
<local-tx-datasource>
<jndi-name>/jdbc/Exp</jndi-name>
<type-mapping>SQL</type-mapping>
<connection-url>jdbc:microsoft:sqlserver://          </connection-url>
<driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class>
<user-name></user-name>
<password></password>
<min-pool-size>5</min-pool-size>
<max-pool-size>1000</max-pool-size>
</local-tx-datasource>
</datasources>

jboss-web.xml

代码语言:javascript
复制
<jboss-web>
<!--  <security-domain flushOnSessionInvalidation="false"/>-->
<!--  <context-root>/BSI</context-root>-->
  <resource-ref>
        <description>Database connection resource</description>
        <res-ref-name>jdbc/Exp</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <jndi-name>java:/jdbc/Exp</jndi-name>
        <res-auth>Container</res-auth>
    </resource-ref>
</jboss-web>

web.xml

代码语言:javascript
复制
<resource-ref>
    <description>Database connection resource</description>   
    <res-ref-name>jdbc/Exp</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

现在在您的.java文件中

代码语言:javascript
复制
javax.naming.Context ctx1 = new javax.naming.InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource) ctx1.lookup("java:comp/env/jdbc/Exp");
con = ds.getConnection();

*请确保资源引用名称在所有位置都相同

票数 10
EN

Stack Overflow用户

发布于 2009-05-04 17:55:58

你不需要改变任何东西。当您选择正确类型的数据源(local- TX - data source /xa-data source)时,将为您完成连接处理和TX。在$JBoss/docs/examples/jca中,您可以找到几乎每个数据库的模板,您可以直接重用这些模板。

如果您正在使用XA,则需要配置Tx-recovery。请在how-to:http://management-platform.blogspot.com/2008/11/transaction-recovery-in-jbossas.html上查看此帖子(好吧,在独立模式下可能不是how-to,但与Jopr源代码结合使用)。

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

https://stackoverflow.com/questions/820116

复制
相关文章

相似问题

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