步骤:
1,设置数据源配置文件
2,添加数据库驱动程序到jboss 的lib包中,在jboss_home/server/xxxx/lib/下
3,测试数据库连接,如果命名为miotour,那么使用中就是java:/miotour
DataSource ds =(DataSource)ctx.lookup(“java:/miotour”);
首先,需要说明的是,Jboss 的数据源有两种。
从截图中可以看到,在数据源的部分有两种类型的数据源。
local-tx-datasource
no-tx-datasource
xa-datasource
在 Jboss 的docs/examples/jca中有各种数据库的数据源配置模版
数据源配置文件总是以*-ds.xml文件命名
local-tx-datasource —–仅支持本地事务
这是最常用的,配置LocalTxConnectionManager服务,该ConnectionManager只支持“本地事 务”,确切的说,只支持一个数据源的事务,不支持分布事务,本地不是说数据源指定的数据库在本地,可以在任何地方,但local-tx- datasource不能在一个事务中访问两个数据源,即使这两个数据源配置是一样的。
xa-datasource —–分布式事务
该数据源配置XATxConnectionManager服务。XA事务也就是通常所说的分布式事务。在一个事务中可以有多个资源(如数据源),但 这些资源必须能够支持XA事务,支持XA事务的数据库在docs/examples/jca目录中都有一个xa-ds.xml文件
所以,我给大家提供一个local-tx-datasource 的默认配置文件。
下载地址:http://download.miotour.com/jboss /dataosource/miotour-ds.zip
下载地址:http://download.miotour.com/jboss /dataosource/test.zip
配置文件:除去红色部分需要设置外,其余都是Jboss 自动添加
2,测试数据库的文件
<%@ page contentType=”text/html;charset=utf-8″%>
<%@ page import=”java.sql.*”%>
<%@ page import=”javax.sql.*”%>
<%@ page import=”javax.naming.*”%>
<html>
<body>
<% Context ctx = new InitialContext();
Connection conn=null;
ctx = new InitialContext();
DataSource ds =(DataSource)ctx.lookup(“java:/miotour”);
conn = ds.getConnection();
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql=”select * from vender”;
ResultSet rs=stmt.executeQuery(sql);
%>
<% while(rs.next()) {
out.println(rs.getString(1));
out.println(rs.getString(2));
out.println(rs.getString(3));
}
%>
<% out.print(“successed!”);
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
spring配置文件中
< jee:jndi-lookup id ="dataSource" jndi-name ="dabase1" />
< bean id ="txManager"
class ="org.springframework.transaction.jta.JtaTransactionManager" >
<!--手动注入,否则会报transactionmanager not bound-->
< property name ="transactionManagerName " value ="java:/TransactionManager " />
</ bean >
conf/standardjbosscmp-jdbc.xml 里的
<defaults>
<datasource>java:/ configuration_db</datasource>
也要改成
<defaults>
<datasource>configuration_db </datasource>
遗留问题:
如果使用默认设置use-java-context为true,然后使用jndi name为java:数据源名,很奇怪,在jboss项目启动有错误
在tomcat中要换回 java:/数据源名
在spring容器中使用jndi的获得数据库连接的配置中,tomcat要加前缀java:comp/env/,而websphere不用
websphere没用过,他和jboss都属于应用服务器.tomcat只是一个web容器!一个应用服务器可以包含很多容器.
websphere不用因为服务器已经替你封装好了