现在的位置: 首页 > 综合 > 正文

Linux下JBoss到MySql的数据源配置

2013年04月06日 ⁄ 综合 ⁄ 共 3479字 ⁄ 字号 评论关闭
一、安装jdk并设置好JAVA_HOME,CLASSPATH等环境变量

二、给JBoss配置MySql数据源

下面的JBOSS_HOME是指JBoss的安装路径,比如/usr/local/jboss

1、把MySql的驱动拷到JBoss的$JBOSS_HOME/server/default/lib目录下,并把它加入到CLASSPATH环境变量中。
   比如MySql驱动是mysql-connector-java-5.0.3-bin.jar那么把下面一行加入到~/.bash_profile
   文件中:
   CLASSPATH=$CLASSPATH:/JBOSS_HOME/server/default/lib/mysql-connector-java-5.0.3-bin.jar

2、把$JBOSS_HOME/docs/examples/jca/mysql-ds.xml文件拷到$JBOSS_HOME/server/default/deploy目录下,
   然后把内容修改成如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
  
<local-tx-datasource>
    
<jndi-name>MySqlDS</jndi-name>
    
<connection-url>jdbc:mysql://localhost:3306/test</connection-url>
    
<driver-class>com.mysql.jdbc.Driver</driver-class>
    
<user-name>root</user-name>
    
<password>123456</password>
    
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
    
<metadata>
       
<type-mapping>mySQL</type-mapping>
    
</metadata>
  
</local-tx-datasource>
</datasources>

 

注意,用户名和密码要改成你实际的用户名和密码,localhost可以改成实际的主机名。

这个时候JBoss只能够使用8080端口,把开
$JBOSS_HOME/server/default/deploy/jbossweb-tomcat55.sar/server.xml
文件,找到如下内容:

<!-- A HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" address="${jboss.bind.address}"
  maxThreads
="250" strategy="ms" maxHttpHeaderSize="8192"
  emptySessionPath
="true"
  enableLookups
="false" redirectPort="8443" acceptCount="100"
  connectionTimeout
="20000" disableUploadTimeout="true"/>

把port="8080"改成port="80",这样JBoss就可以使用80端口号了

三、测试例子

打开mysql,使用test数据库,创建一个表mytable,并插入几条记录,命令如下:

CREATE TABLE mytable (name VARCHAR(20), sex CHAR(1), addr VARCHAR(30));
insert into mytable(name, sex, addr) values("plusboy", 'M', "Guangzhou");
insert into mytable(name, sex, addr) values("YanDingcheng", 'M', "Guangzhou");

编写一个myTest.jsp程序用于测试,把该文件放到目录
$JBOSS_HOME/server/default/deploy/jbossweb-tomcat55.sar/ROOT.war
下面。

文件名:myTest.jsp

<%@ page contentType="text/html; charset=gb2312" %>

<%@ page language="java" %>

<%@ page import="com.mysql.jdbc.Driver" %>

<%@ page import="java.sql.*" %>

<%

    String driverName = "com.mysql.jdbc.Driver";

    String userName = "root";

    String userPasswd = "";

    String dbName = "test";

    String tableName = "mytable";

    

    String url="jdbc:mysql://lvs1/"+dbName+"?user="+userName+"&password="+userPasswd;    

    Class.forName(driverName).newInstance();    

    Connection connection=DriverManager.getConnection(url);    

    Statement statement = connection.createStatement();    

    String sql = "SELECT * FROM " + tableName;    

    ResultSet rs = statement.executeQuery(sql);    

    //获得数据结果集合    

    ResultSetMetaData rmeta 
= rs.getMetaData();

    //确定数据集的列数,亦字段数    

    
int numColumns=rmeta.getColumnCount();    

    // 输出每一个数据值    

    out.print(
"name");

    out.print("|");    

    out.print("sex");    

    out.print("|");    

    out.print("addr");    out.print("<br>");    

    while(rs.next()) {    

        out.print(rs.getString(1)+" ");    

        out.print("|");

        out.print(rs.getString(2)+" ");

        out.print("|");

        out.print(rs.getString(3));

        out.print("<br>");

    }

    

    out.print("<br>");    

    out.print("数据库操作成功,恭喜你");    

    rs.close();    

    statement.close();    

    connection.close();

%>

重启JBoss和MySql。
在浏览器地址栏输入http://localhost/myTest.jsp
哈哈,数据库操作成功。

四、解决MySql重启后JBoss重连问题
jboss的连接池支持根据SQLException的类型来确定是应用的异常还是不可恢复的数据库连接的异常,因此可以在
datasource 的配置里加上

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

这样就不需要每次获取连接的时候都执行一次查询了,性能提高了很多,
只有当发生SQLException并且他侦测到这个异常导致连接无法使用时才会丢弃这个连接

抱歉!评论已关闭.