gaojohn933
BlogJava | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理

2013年1月15日

Tomcat7配置数据源

一:JNDI配置方式

现在来讲一下如何到服务器上对 Data Source 进行配置?

服务器: Tomcat 7

数据库:MySQL

1:将下面的代码添加到Tomcat服务器上conf/context.xml中的<Context></Context>标签中

<Resource 
       name="jdbc/shopping" 
       auth="Container" 
       type="javax.sql.DataSource"
       maxActive="100" 
       maxIdle="30" 
       maxWait="10000"
       username="root" 
       password="root" 
       driverClassName="com.mysql.jdbc.Driver"
       url="jdbc:mysql://localhost:3306/shopping"
/>

上下文context.xml中的参数的解析如下:
     其中的name属性是数据源名称,通常采取jdbc/**. 
     driverClassName属性是驱动程序名称。

     username,password,数据库名称和密码

     url:访问的数据库路径。其中url的内容组成解析上篇博客中已经分析

     maxActive属性是并发连接的最大数。设置为0则无限制。

     maxWait属性是等待连接的最大连接的时间。

     maxIdle属性是连接池中空闲的连接的个数。

2. 修改web.xml
 打开%TOMCAT_HOME%\conf\web.xml,在</web-app>的前面添加以下内容:

<description>MySQL Test App</description>
  <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/shopping</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>

3:建立测试文件

test.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<sql:query var="rs" dataSource="jdbc/shopping">
select id, name, normalprice from product
</sql:query>

<html>
  <head>
    <title>DB Test</title>
  </head>
  <body>

  <h2>Results</h2>

<c:forEach var="row" items="${rs.rows}">
    name ${row.name}<br/>
    normalprice ${row.normalprice}<br/>
</c:forEach>

  </body>
</html>

4.添加jar包 

JDBC驱动程序mysql-connector-java-5-bin.jar放置在%TOMCAT_HOME%\lib和应用的WEB-INF\lib下,复制 jstl.jar 和 standard.jar 到 你的 WEB-INF/lib 目录.


5:配置名称name="jdbc/mldn"可以任意,配置完成后,需要通过名称查找的方式,去找到数据源,本示例代码运用的Tomcat服务器,所以在查找时需要对名称进行定位:java:comp/env

<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%!
    final String JNDINAME = "java:comp/env/jdbc/shopping" ;
%>
<%
    Connection conn = null ;
    try
    {
        // 初始化查找命名空间
        Context ctx = new InitialContext() ;
        // 找到DataSource
        DataSource ds = (DataSource)ctx.lookup(JNDINAME) ;
        conn = ds.getConnection() ;
    }
    catch(Exception e)
    {
        System.out.println(e) ;
    }
%>
<%=conn%>
<%
    // 将连接重新放回到池中
    conn.close() ;
%>

配置spring

配置spring
 <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName"><value>java:comp/env/jdbc/xxx</value></property>
 </bean>

 

posted @ 2013-10-15 23:32 快乐一天 阅读(530) | 评论 (0) | 编辑 收藏
 
Linux设置bond网卡绑定

 Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。其实这项 技术在Sun和Cisco中早已存在,被称为Trunking和Etherchannel技术,在Linux的2.4.x的内核中也采用这这种技术,被称为bonding。,什么是bonding需要从网卡的混杂(promisc)模式说起。我们知道,在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身Mac的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。但是网卡也支持另外一种被称为混杂promisc的模式,可以接收网络上所有的帧,bonding也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的Mac地址改成相同,可以接收特定mac的数据帧。然后把相应的数据帧传送给bond驱动程序处理。


1.# vim /etc/modprobe.conf
编辑 /etc/modules.conf 文件,加入如下一行内容,以使系统在启动时加载bonding模块,对外虚拟网络接口设备为 bond0
alias bond0 bonding

options bond0 miimon=100 mode=1
说明:miimon是用来进行链路监测的。 比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有0,1,2,3四种模式,常用的为0,1两种。
mode=0表示load balancing (round-robin)为负载均衡方式,两块网卡都工作。
mode=1表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份.

 


modprobe bonding 加载bonding模块


2.分别编辑 ifcfg-eth0 ifcfg-eth1

DEVICE=eth0
MASTER=bond0
SLAVE=yes
HWADDR=00:0C:29:86:AD:80
ONBOOT=yes

DEVICE=eth1
MASTER=bond0
SLAVE=yes
ONBOOT=yes
HWADDR=00:0c:29:86:ad:8a

3.vim ifcfg-bond0

DEVICE=bond0
BOOTPROTO=static
IPADDR=192.168.1.2
NETMASK=255.255.255.0
ONBOOT=yes
BONDING_OPTS="mode=1 miimon=100 primary=eth0"
 
 

BONDING_OPTS参数解释

此参数用于指定网卡绑定时的属性,以下是对常用参数进行的解释:

miimon参数:指定网卡故障时的切换时间间隔以ms为单位。

primary参数:指定默认的主网卡设备。

mode参数:

0-轮询模式,所绑定的网卡会针对访问以轮询算法进行平分。

1-高可用模式,运行时只使用一个网卡,其余网卡作为备份,在负载不超过单块网卡带宽或压力时建议使用。

2-基于HASH算法的负载均衡模式,网卡的分流按照xmit_hash_policy的TCP协议层设置来进行HASH计算分流,使各种不同处理来源的访问都尽量在同一个网卡上进行处理。

3-广播模式,所有被绑定的网卡都将得到相同的数据,一般用于十分特殊的网络需求,如需要对两个互相没有连接的交换机发送相同的数据。

4-802.3ab负载均衡模式,要求交换机也支持802.3ab模式,理论上服务器及交换机都支持此模式时,网卡带宽最高可以翻倍(如从1Gbps翻到2Gbps)

5-适配器输出负载均衡模式,输出的数据会通过所有被绑定的网卡输出,接收数据时则只选定其中一块网卡。如果正在用于接收数据的网卡发生故障,则由其他网卡接管,要求所用的网卡及网卡驱动可通过ethtool命令得到speed信息。

6-适配器输入/输出负载均衡模式,在"模式5"的基础上,在接收数据的同时实现负载均衡,除要求ethtool命令可得到speed信息外,还要求支持对网卡MAC地址的动态修改功能。

xmit_hash_policy参数(此参数对mode参数中的2、4模式有影响):

layer1-通过MAC地址进行HASH计算。

计算公式:(MACsrc⊕MACdest)% Nslave

layer3+4-通过TCP及UDP端口及其IP地址进行HASH计算。

计算公式:((portsrc⊕portdest)⊕(IPsrc⊕IPdest)) % Nslave

注意:

mode参数中的0、2、3、4模式要求交换机支持"ports group"功能并能进行相应的设置,例如在Cisco中要将所连接的端口设为"trunk group"。

选择绑定模式的建议

如果系统流量不超过单个网卡的带宽,请不要选择使用mode 1之外的模式,因为负载均衡需要对流量进行计算,这对系统性能会有所损耗。

建议mode 5、mode 6只在交换机不支持"ports group"的情况下选用。

如果交换机及网卡都确认支持802.3ab,则实现负载均衡时尽量使用mode 4以提高系统性能

 今天你菊子曰了么?
posted @ 2013-01-15 10:59 快乐一天 阅读(3868) | 评论 (0) | 编辑 收藏
 
随笔:8 文章:3 评论:1 引用:0
<2013年1月>
日一二三四五六
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论

留言簿(2)

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔档案

  • 2013年10月 (1)
  • 2013年1月 (1)
  • 2011年2月 (2)
  • 2009年5月 (1)
  • 2008年8月 (2)
  • 2008年7月 (1)

文章档案

  • 2012年12月 (1)
  • 2011年7月 (1)
  • 2009年2月 (1)

搜索

  •  

最新评论

  • 1. re: Linux安装JBoss
  • 辛苦了,谢谢你,受益非浅!
  • --kerry

阅读排行榜

  • 1.  Linux下安装java (25720)
  • 2. oracle向mysql转换(4150)
  • 3. Linux设置bond网卡绑定 (3868)
  • 4.  Linux安装JBoss (2296)
  • 5. 解决HIbernate3运行出现No CurrentSessionContext configured!错误(1683)

评论排行榜

  • 1.  Linux安装JBoss (1)
  • 2.  Linux下安装java (0)
  • 3.  linux环境下安装MySQL (0)
  • 4. Tomcat7配置数据源(0)
  • 5. Linux设置bond网卡绑定 (0)

Powered by: 博客园
模板提供:沪江博客
Copyright ©2025 快乐一天