我刚接触jboss,并被要求将jboss连接池机制与现有的Web应用程序结合起来。考虑到Web应用程序数据库层已经正确编写,即在不需要时关闭所有结果集、语句和连接,那么在我正确配置了jboss数据源后,我需要对我的Web应用程序进行哪些代码更改。
请问有人可以指向一个使用jboss数据源的教程或代码示例吗?
我刚接触jboss,并被要求将jboss连接池机制与现有的Web应用程序结合起来。考虑到Web应用程序数据库层已经正确编写,即在不需要时关闭所有结果集、语句和连接,那么在我正确配置了jboss数据源后,我需要对我的Web应用程序进行哪些代码更改。
请问有人可以指向一个使用jboss数据源的教程或代码示例吗?
首先创建一个名为 xxx-ds.xml
的 XML 文件,并将该文件放置在 server/default/deploy/xxx-ds.xml
中。
<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
<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
<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
文件中:
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();
请确保所有的资源引用名称在各处都相同。
但事务则另当别论。
编辑:针对您关于此如何影响代码的评论,以下是示例:
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();
您不需要更改任何内容。 当您选择正确的数据源(local-tx-datasource / xa-datasource)时,连接处理和TX将为您完成。在$JBoss/docs/examples/jca中,您将找到几乎所有数据库的模板,您可以直接重用。
如果您正在使用XA,则需要配置Tx-recovery。请参阅此帖子以获取如何操作: http://management-platform.blogspot.com/2008/11/transaction-recovery-in-jbossas.html(也许不是独立模式下的操作指南,但与Jopr源代码一起使用)。