0
点赞
收藏
分享

微信扫一扫

JBOSS设置数据源和测试页面-jboss5.0.1



 

 

 

 

JBOSS设置数据源和测试页面-jboss5.0.1




步骤:

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 自动添加



<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?> 
 
 
 

   <datasources> 
 
 
 

   < 
  local-tx-datasource > 
 
 
 
<jndi-name> 
  miotour 
  </jndi-name>
 
 

   <rar-name> 
  jboss -local-jdbc.rar</rar-name> 
 
 
 

   <use-java-context>true</use-java-context> 
 
 
 

   <connection-definition>javax.sql.DataSource</connection-definition> 
 
 
 

   <jmx-invoker-name> 
  jboss :service=invoker,type=jrmp</jmx-invoker-name> 
 
 
 

   <min-pool-size>0</min-pool-size> 
 
 
 

   <max-pool-size>10</max-pool-size> 
 
 
 

   <blocking-timeout-millis>30000</blocking-timeout-millis> 
 
 
 

   <idle-timeout-minutes>30</idle-timeout-minutes> 
 
 
 

   <prefill>false</prefill> 
 
 
 

   <background-validation>false</background-validation> 
 
 
 

   <background-validation-millis>0</background-validation-millis> 
 
 
 

   <validate-on-match>true</validate-on-match> 
 
 
 

   <statistics-formatter>org. 
  jboss .resource.statistic.pool.JBossDefaultSubPoolStatisticFormatter</statistics-formatter> 
 
 
 

   <isSameRM-override-value>false</isSameRM-override-value> 
 
 
 

   <allocation-retry>0</allocation-retry> 
 
 
 

   <allocation-retry-wait-millis>5000</allocation-retry-wait-millis> 
 
 
 

   <security-domain xsi:type=”securityMetaData” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”/> 
 
 
 

   <metadata> 
 
 
 

   <type-mapping>Oracle9i</type-mapping> 
 
 
 

   </metadata> 
 
 
 

   <type-mapping>Oracle9i</type-mapping> 
 
 
 

   <local-transaction/> 
 
 
 
<user-name> 
  miotour 
  </user-name>
 
 
<password> 
  miotour 
  </password>
 
 

   <check-valid-connection-sql>SELECT * FROM DUAL</check-valid-connection-sql> 
 
 
 

   <exception-sorter-class-name>org. 
  jboss .resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name> 
 
 
 

   <prepared-statement-cache-size>0</prepared-statement-cache-size> 
 
 
 

   <share-prepared-statements>false</share-prepared-statements> 
 
 
 

   <set-tx-query-timeout>false</set-tx-query-timeout> 
 
 
 

   <query-timeout>0</query-timeout> 
 
 
 

   <use-try-lock>60000</use-try-lock> 
 
 
 

   <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> 
 
 
 
<connection-url>jdbc:oracle:thin:@10.10.10.10:1521:miotour</connection-url>
 
 

   </ 
  local-tx-datasource > 
 
 
 

   </datasources>

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配置文件中



<!--在mysql-ds.xml中设置 
  use-java-context为false后 , 
  注意没有前缀java:-->
     < 
  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不用因为服务器已经替你封装好了

 




 


举报

相关推荐

0 条评论