﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-Dong</title><link>http://www.blogjava.net/dong/</link><description>Share Our Experience of Java</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 02:14:26 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 02:14:26 GMT</pubDate><ttl>60</ttl><item><title>C-JDBC 数据库集群中间件资料</title><link>http://www.blogjava.net/dong/archive/2010/03/25/316577.html</link><dc:creator>Dong</dc:creator><author>Dong</author><pubDate>Thu, 25 Mar 2010 12:23:00 GMT</pubDate><guid>http://www.blogjava.net/dong/archive/2010/03/25/316577.html</guid><wfw:comment>http://www.blogjava.net/dong/comments/316577.html</wfw:comment><comments>http://www.blogjava.net/dong/archive/2010/03/25/316577.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dong/comments/commentRss/316577.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dong/services/trackbacks/316577.html</trackback:ping><description><![CDATA[<div style="border-bottom: #666666 1px solid; border-left: #666666 1px solid; border-top: #666666 1px solid; border-right: #666666 1px solid"><span style="color: #000080"><strong>CJDBC官网</strong><a href="http://c-jdbc.ow2.org/"><strong>http://c-jdbc.ow2.org/</strong></a></span><br />
<strong>cjdbc与hibernate的整合</strong><br />
Configuring C-JDBC with Hibernate <br />
<br />
C-JDBC just has to be defined as any JDBC driver in Hibernate, leaving the syntax set to the proper database. Here is a configuration example to use Hibernate with a C-JDBC cluster made of Sybase backends:
<pre class="programlisting">## C-JDBC
hibernate.dialect                 net.sf.hibernate.dialect.SybaseDialect
hibernate.connection.driver_class org.objectweb.cjdbc.driver.Driver
hibernate.connection.username     user
hibernate.connection.password     pass
hibernate.connection.url          jdbc:cjdbc://localhost:25322/test       </pre>
</div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a style="color: red" href="http://lzj0470.javaeye.com/blog/445348"><strong><font color="#000000">转自：</font>http://lzj0470.javaeye.com/blog/445348</strong></a><br />
<table border="0" width="95%" align="center">
    <tbody>
        <tr>
            <td><span style="font-size: 10pt">一、前言</span></td>
        </tr>
        <tr>
            <td>
            <table border="0" cellpadding="6" width="100%" align="center">
                <tbody>
                    <tr>
                        <td><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cjdbc ( </span><a href="http://c-jdbc.objectweb.org/"><span style="font-size: 10pt">http://c-jdbc.objectweb.org/</span></a><span style="font-size: 10pt"> ) 是一个open source的数据库集群中间件，任何基于jdbc的应用都可以通过它透明地访问数据库集群，它可以进行各个节点之间的数据复制，并且可以实现各个节点的查询负载均衡。通过这样的软件，偶们可以方便的实现RAIDb - Redundant Array of Inexpensive Database 廉价数据库冗余阵列。<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;大型应用随着用户量访问越来越大，增加数据库存储和做好数据库冗余可以增加系统的可靠性和性能。<br />
                        <br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下面利用cjdbc，把两台对等的 Mysql 做 RAIDb，<strong>本文假定你已经搭建好两台对等的 Mysql环境并建好一个需要做集群冗余的数据库 clusterdb。</strong> </span></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<table border="0" width="95%" align="center">
    <tbody>
        <tr>
            <td><span style="font-size: 10pt">二、配置环境</span></td>
        </tr>
        <tr>
            <td>
            <table border="0" cellpadding="6" width="100%" align="center">
                <tbody>
                    <tr>
                        <td><span style="font-size: 10pt"><strong>Mysql:</strong> 5.0.19, 并使用 InnoDB 作为 Mysql 引擎<br />
                        <br />
                        <strong>C-jdbc:</strong> 2.0.2<br />
                        <br />
                        <strong>Jdk:</strong> 1.5</span></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<table border="0" width="95%" align="center">
    <tbody>
        <tr>
            <td><span style="font-size: 10pt">三、选择合适的 C-JDBC RAIDb 机制</span></td>
        </tr>
        <tr>
            <td>
            <table border="0" cellpadding="6" width="100%" align="center">
                <tbody>
                    <tr>
                        <td height="63">
                        <p><span style="font-size: 10pt">cjdbc有几种RAIDb的机制可以选择，如RAIDb-0，RAIDb-1等等，可以根据不同的情况选择不同的RAIDb的机制。各种 RAIDb的机制详情请查看 cjdbc 的文档和 Demo。<br />
                        <br />
                        RAIDb-1有如下功能：<br />
                        完全镜像处理机制，每个节点上都有完整的数据库结构，这种方式提供了最好的容错处理，并且通过设置合理的Loading Balance策略，可以带来查询性能相当好的提高。但是由于对于任何的写操作（create/update/delete)，需要在各个节点上进行传播复制，写操作就会比原来慢一些了，如下图：</span></p>
                        <p><span style="font-size: 10pt"><img alt="" src="http://tk.files.storage.msn.com/x1pLE6X9i4gePBHnjMbCaZsk1B1P8cyLTeUftye_MGyJ6oPl4sP5LQ3blbfW1m7-THSj9zA3qly6l59kQAWXAZfEbWXWsghjksM-9qJXJUBMqm-EpC-7o_Veseu6rmyO8ZwfGNN_8iKyS5md3_gzDaJTQ" width="378" height="209" /><br />
                        <br />
                        <span style="color: #ff0000"><span>这里选择 RAIDb-1 做为 cjdbc RAIDb 机制。</span></span></span></p>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<table border="0" width="95%" align="center">
    <tbody>
        <tr>
            <td><span style="font-size: 10pt">四、给两台对等的 Mysql 建表，假设两台 Mysql 的IP分别是 192.168.0.2和192.168.0.3</span></td>
        </tr>
        <tr>
            <td>
            <table border="0" cellpadding="6" width="100%" align="center">
                <tbody>
                    <tr>
                        <td><span style="font-size: 10pt">bash&gt; mysql -h192.168.0.2 -uroot <br />
                        bash&gt; use clusterdb<br />
                        bash&gt; create table user (id int(3) not null auto_increment primary key, name char(50) not null)<strong> engine innodb</strong>;<br />
                        bash&gt; exit;<br />
                        <br />
                        bash&gt; mysql -h192.168.0.3 -uroot <br />
                        bash&gt; use clusterdb<br />
                        bash&gt; create table user (id int(3) not null auto_increment primary key, name char(50) not null)<strong> engine innodb</strong>;<br />
                        bash&gt; exit; </span></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<table border="0" width="95%" align="center">
    <tbody>
        <tr>
            <td><span style="font-size: 10pt">五、在 Linux 下安装 C-JDBC Controller</span></td>
        </tr>
        <tr>
            <td>
            <table border="0" cellpadding="6" width="100%" align="center">
                <tbody>
                    <tr>
                        <td><span style="font-size: 10pt">bash&gt; mkdir -p /usr/local/c-jdbc<br />
                        bash&gt; cd /usr/local/c-jdbc<br />
                        bash&gt; tar xvfz c-jdbc-2.0.2-bin.tar.gz<br />
                        bash&gt; export CJDBC_HOME=/usr/local/c-jdbc<br />
                        </span></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<table border="0" width="95%" align="center">
    <tbody>
        <tr>
            <td><span style="font-size: 10pt">六、把 Mysql JDBC Driver 放到 C-JDBC Controller 中来</span></td>
        </tr>
        <tr>
            <td>
            <table border="0" cellpadding="6" width="100%" align="center">
                <tbody>
                    <tr>
                        <td>
                        <p><span style="font-size: 10pt">这里我们使用 mysql-connector-java-3.1.12-bin.jar 驱动程序，把它放到<br />
                        /usr/local/c-jdbc/drivers 中</span></p>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<table border="0" width="95%" align="center">
    <tbody>
        <tr>
            <td><span style="font-size: 10pt">七、配置 C-JDBC Controller</span></td>
        </tr>
        <tr>
            <td>
            <table border="0" cellpadding="6" width="100%" align="center">
                <tbody>
                    <tr>
                        <td><span style="font-size: 10pt">1、在 /usr/local/c-jdbc/config/virtualdatabase 目录中创建 虚拟数据库配置文件，并把它命名为 mysql-raidb1-distribution.xml，内容如下：<br />
                        </span>
                        <table border="0" cellpadding="6" width="100%" align="center">
                            <tbody>
                                <tr>
                                    <td>
                                    <p><span style="font-size: 10pt">&lt;?xml version="1.0" encoding="UTF8"?&gt;<br />
                                    &lt;!DOCTYPE C-JDBC PUBLIC "-//ObjectWeb//DTD C-JDBC 2.0.2//EN" "http://c-jdbc.objectweb.org/dtds/c-jdbc-2.0.2.dtd"&gt;</span></p>
                                    <p><span style="font-size: 10pt">&lt;C-JDBC&gt;</span></p>
                                    <p><span style="font-size: 10pt">&lt;VirtualDatabase name="myDB"&gt;</span></p>
                                    <p><span style="font-size: 10pt">&lt;Distribution&gt;<br />
                                    &lt;/Distribution&gt;<br />
                                    <br />
                                    &lt;AuthenticationManager&gt;<br />
                                    &lt;Admin&gt;<br />
                                    &lt;User username="admin" password="c-jdbc"/&gt;<br />
                                    &lt;/Admin&gt; <br />
                                    &lt;VirtualUsers&gt;<br />
                                    &lt;VirtualLogin vLogin="boss" vPassword="boss"/&gt;<br />
                                    &lt;/VirtualUsers&gt;<br />
                                    &lt;/AuthenticationManager&gt;</span></p>
                                    <p><span style="font-size: 10pt">&lt;DatabaseBackend name="mysqlNode211" driver="org.gjt.mm.mysql.Driver" url="jdbc:mysql://192.168.0.2/clusterdb" connectionTestStatement="select 1"&gt;<br />
                                    &lt;ConnectionManager vLogin="boss" rLogin="boss_user" rPassword="123456"&gt;<br />
                                    &lt;VariablePoolConnectionManager initPoolSize="10" minPoolSize="10" maxPoolSize="50" idleTimeout="30" waitTimeout="10"/&gt;<br />
                                    &lt;/ConnectionManager&gt;<br />
                                    &lt;/DatabaseBackend&gt;</span></p>
                                    <p><span style="font-size: 10pt">&lt;DatabaseBackend name="mysqlNode213" driver="org.gjt.mm.mysql.Driver" url="jdbc:mysql://192.168.0.3/clusterdb" connectionTestStatement="select 1"&gt;<br />
                                    &lt;ConnectionManager vLogin="boss" rLogin="boss_user" rPassword="123456"&gt;<br />
                                    &lt;VariablePoolConnectionManager initPoolSize="10" minPoolSize="10" maxPoolSize="50" idleTimeout="30" waitTimeout="10"/&gt;<br />
                                    &lt;/ConnectionManager&gt;<br />
                                    &lt;/DatabaseBackend&gt;</span></p>
                                    <p><span style="font-size: 10pt">&lt;RequestManager&gt;<br />
                                    &lt;RequestScheduler&gt;<br />
                                    &lt;RAIDb-1Scheduler level="passThrough"/&gt;<br />
                                    &lt;/RequestScheduler&gt;</span></p>
                                    <p><span style="font-size: 10pt">&lt;LoadBalancer&gt;<br />
                                    &lt;RAIDb-1&gt;<br />
                                    &lt;WaitForCompletion policy="first"/&gt;<br />
                                    &lt;RAIDb-1-LeastPendingRequestsFirst/&gt;<br />
                                    &lt;/RAIDb-1&gt;<br />
                                    &lt;/LoadBalancer&gt;<br />
                                    &lt;/RequestManager&gt;</span></p>
                                    <p><span style="font-size: 10pt">&lt;/VirtualDatabase&gt;</span></p>
                                    <p><span style="font-size: 10pt">&lt;/C-JDBC&gt;</span></p>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                        <p><span style="font-size: 10pt">2、在 /usr/local/c-jdbc/config/controller 目录中创建 C-JDBC controller 配置文件，并把它命名为 uud-controller-distributed.xml，内容如下：</span></p>
                        <table border="0" cellpadding="6" width="100%" align="center">
                            <tbody>
                                <tr>
                                    <td>
                                    <p><span style="font-size: 10pt">&lt;?xml version="1.0" encoding="UTF8" ?&gt;<br />
                                    &lt;!DOCTYPE C-JDBC-CONTROLLER PUBLIC "-//ObjectWeb//DTD C-JDBC-CONTROLLER 2.0.2//EN" "http://c-jdbc.objectweb.org/dtds/c-jdbc-controller-2.0.2.dtd"&gt;<br />
                                    &lt;C-JDBC-CONTROLLER&gt;<br />
                                    &lt;Controller port="25323"&gt;<br />
                                    &lt;JmxSettings&gt;<br />
                                    &lt;RmiJmxAdaptor port="1091"/&gt;<br />
                                    &lt;/JmxSettings&gt;<br />
                                    &lt;VirtualDatabase configFile="mysql-raidb1-distribution.xml" virtualDatabaseName="myDB" autoEnableBackends="true"/&gt;<br />
                                    &lt;/Controller&gt;<br />
                                    &lt;/C-JDBC-CONTROLLER&gt;</span></p>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                        <p><span style="font-size: 10pt">3、在 /usr/local/c-jdbc/config/demo 目录中创建启动 C-JDBC controller sh，并把它命名为 uud-distributed-raidb1-controller.sh，内容如下：</span></p>
                        <table style="height: 0%" border="0" cellpadding="6" width="100%" align="center" height="0%">
                            <tbody>
                                <tr>
                                    <td height="100%">
                                    <p><span style="font-size: 10pt">#!/bin/sh</span></p>
                                    <p><span style="font-size: 10pt">export CJDBC_HOME=/usr/local/c-jdbc<br />
                                    export JAVA_HOME=/opt/jdk1.5</span></p>
                                    <p><span style="font-size: 10pt">cd $CJDBC_HOME/bin</span></p>
                                    <p><span style="font-size: 10pt">echo "Waiting for mysql servers to finish start up"</span></p>
                                    <p><span style="font-size: 10pt">echo "Starting Controller"<br />
                                    ./controller.sh -f ../config/controller/uud-controller-distributed.xml &amp;</span></p>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<table border="0" width="95%" align="center">
    <tbody>
        <tr>
            <td><span style="font-size: 10pt">八、启动 C-JDBC Controller</span></td>
        </tr>
        <tr>
            <td>
            <table border="0" cellpadding="6" width="100%" align="center">
                <tbody>
                    <tr>
                        <td><span style="font-size: 10pt">bash&gt; cd /usr/local/c-jdbc/demo<br />
                        bash&gt; chmod u+rwx uud-distributed-raidb1-controller.sh<br />
                        bash&gt; ./uud-distributed-raidb1-controller.sh &amp;<br />
                        <br />
                        如果启动正常，显示的信息如下： <br />
                        </span>
                        <table style="height: 0%" border="0" cellpadding="6" width="100%" align="center" height="0%">
                            <tbody>
                                <tr>
                                    <td height="100%">
                                    <p><span style="font-size: 10pt">Waiting for mysql servers to finish start up<br />
                                    Starting Controller<br />
                                    2006-04-20 10:32:21,126 INFO controller.core.Controller C-JDBC controller (2.0.2)<br />
                                    2006-04-20 10:32:21,189 INFO controller.core.Controller Loading configuration file: ../config/controller/uud-controller-distributed.xml<br />
                                    2006-04-20 10:32:21,278 INFO controller.core.Controller JMX is enabled<br />
                                    2006-04-20 10:32:21,308 INFO controller.core.Controller Starting JMX server on host: 127.0.0.1<br />
                                    2006-04-20 10:32:21,674 INFO backend.DatabaseBackend.mysqlNode211 Adding connection manager for virtual user "boss"<br />
                                    2006-04-20 10:32:21,749 INFO backend.DatabaseBackend.mysqlNode213 Adding connection manager for virtual user "boss"<br />
                                    2006-04-20 10:32:21,809 INFO controller.RequestManager.myDB Request manager will parse requests with the following granularity: NO_PARSING<br />
                                    2006-04-20 10:32:21,814 INFO controller.virtualdatabase.myDB Configuring jgroups using: file:/usr/local/c-jdbc/config/jgroups.xml</span></p>
                                    <p><span style="font-size: 10pt">-------------------------------------------------------<br />
                                    GMS: address is 127.0.0.1:32773<br />
                                    -------------------------------------------------------<br />
                                    2006-04-20 10:32:26,476 INFO controller.virtualdatabase.myDB Group myDB connected to /127.0.0.1:32773[/127.0.0.1:32773]<br />
                                    2006-04-20 10:32:26,476 INFO controller.virtualdatabase.myDB First controller in group myDB<br />
                                    2006-04-20 10:32:26,477 WARN controller.virtualdatabase.myDB No recovery log has been configured, enabling backend without checkpoint.</span></p>
                                    <p><span style="font-size: 10pt">[1]+ Done ./uud-distributed-raidb1-controller.sh</span></p>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<table border="0" width="95%" align="center">
    <tbody>
        <tr>
            <td><span style="font-size: 10pt">八、编写 C-JDBC 客户端程序</span></td>
        </tr>
        <tr>
            <td>
            <table border="0" cellpadding="6" width="100%" align="center">
                <tbody>
                    <tr>
                        <td height="1055"><span style="font-size: 10pt">1、把 C-JDBC Drivers(/usr/local/c-jdbc/drivers/c-jdbc-driver.jar) 放置到 CLASSPATH 中<br />
                        2、编写插入 10 条数据到 Mysql 中，程序如下： </span>
                        <table border="0" cellpadding="6" width="100%" align="center">
                            <tbody>
                                <tr>
                                    <td>
                                    <p><span style="font-size: 10pt">/**<br />
                                    * @author 胡荣华<br />
                                    * @Company 世纪龙 21cn<br />
                                    */<br />
                                    package com.cjdbc.test;</span></p>
                                    <p><span style="font-size: 10pt">import java.sql.Connection;<br />
                                    import java.sql.PreparedStatement;<br />
                                    import java.sql.DriverManager;</span></p>
                                    <p><span style="font-size: 10pt">/**<br />
                                    * <br />
                                    */<br />
                                    public class GenerateSampleData {</span></p>
                                    <p><span style="font-size: 10pt">public void generate() {<br />
                                    Connection conn = null;<br />
                                    PreparedStatement pstmt = null;<br />
                                    try {<br />
                                    <span style="color: #0000ff"><span>// 这是 c-jdbc drivers 的 Drivers class，注意不是 mysql 的 Drivers class</span></span><br />
                                    Class.forName("org.objectweb.cjdbc.driver.Driver").newInstance();<br />
                                    <span style="color: #0000ff"><span>// 192.168.0.1 是 cjdbc controller 所在的 ip</span></span><br />
                                    </span><span style="font-size: 10pt"><span style="color: #0000ff"><span>// myDB 是在 文件 mysql-raidb1-distribution.xml 里定义的 &lt;VirtualDatabase name="myDB"&gt;<br />
                                    // user=boss&amp;password=boss 是在 文件 mysql-raidb1-distribution.xml 里定义的<br />
                                    // &lt;VirtualUsers&gt;<br />
                                    // &lt;VirtualLogin vLogin="boss" vPassword="boss"/&gt;<br />
                                    // &lt;/VirtualUsers&gt; </span></span><br />
                                    String url = "jdbc:cjdbc://192.168.0.1:25323/myDB?user=boss&amp;password=boss";</span></p>
                                    <p><span style="font-size: 10pt">conn = DriverManager.getConnection(url);<br />
                                    <br />
                                    try{ <br />
                                    conn.setAutoCommit(false);<br />
                                    pstmt = conn.prepareStatement("insert into user values ('', ?)");<br />
                                    <br />
                                    int numOfTestRecords = 10;<br />
                                    System.out.println("Update Record Start.");<br />
                                    for (int i=0;i&lt;numOfTestRecords;i++) {<br />
                                    String newkey = i + "-" + i;<br />
                                    pstmt.setString(1, "hua_" + newkey);<br />
                                    pstmt.executeUpdate();<br />
                                    <br />
                                    } <br />
                                    conn.commit();<br />
                                    System.out.println("Update Record Success.");<br />
                                    }<br />
                                    catch(Exception ex){<br />
                                    conn.rollback();<br />
                                    ex.printStackTrace();<br />
                                    }<br />
                                    finally{<br />
                                    try {<br />
                                    if( pstmt != null )<br />
                                    pstmt.close();<br />
                                    if( conn != null)<br />
                                    conn.close();<br />
                                    }<br />
                                    catch(Exception e) {<br />
                                    e.printStackTrace();<br />
                                    }<br />
                                    }<br />
                                    } catch (Exception e) {<br />
                                    e.printStackTrace();<br />
                                    }<br />
                                    }</span></p>
                                    <p><span style="font-size: 10pt">/**<br />
                                    * @param args<br />
                                    */<br />
                                    public static void main(String[] args) {<br />
                                    // TODO Auto-generated method stub<br />
                                    GenerateSampleData g = new GenerateSampleData();<br />
                                    g.generate();</span></p>
                                    <p><span style="font-size: 10pt">}</span></p>
                                    <p><span style="font-size: 10pt">}</span></p>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                        <p><span style="font-size: 10pt">3、程序执行完毕后，分别到 Mysql Node 192.168.0.2 和 192.168.0.3 查询，看看是否已同步了数据，如果两个 Mysql Node 都有相同的数据，说明 C-JDBC 环境搭建成功。</span></p>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/dong/aggbug/316577.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dong/" target="_blank">Dong</a> 2010-03-25 20:23 <a href="http://www.blogjava.net/dong/archive/2010/03/25/316577.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>颠覆JAVA，用WEB的方式开发桌面程序(一)</title><link>http://www.blogjava.net/dong/archive/2009/03/19/260789.html</link><dc:creator>Dong</dc:creator><author>Dong</author><pubDate>Thu, 19 Mar 2009 07:16:00 GMT</pubDate><guid>http://www.blogjava.net/dong/archive/2009/03/19/260789.html</guid><wfw:comment>http://www.blogjava.net/dong/comments/260789.html</wfw:comment><comments>http://www.blogjava.net/dong/archive/2009/03/19/260789.html#Feedback</comments><slash:comments>23</slash:comments><wfw:commentRss>http://www.blogjava.net/dong/comments/commentRss/260789.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dong/services/trackbacks/260789.html</trackback:ping><description><![CDATA[<p style="font-size: 10pt">最近做了一个日志管理系统<br />
个人觉得采用了一套非常非常创新或者变态的开发方式，就像题目说的那样，使用web的方法开发桌面应用程序，当然所有的技术都是基于java的。<br />
<strong style="color: #0000ff">总结一下在整个项目中使用到的技术</strong><br />
<br />
1、底层服务器的开发socket通信、http报文解析、反射机制（这些技术其实就是开发了一款小型的服务器，让我们的web代码能够在本地运行起来，之所以选择自己开发服务器的原因是，tomcat对于我们这个小桌面程序来说还是太大了点，如果作为桌面启动，用户不可能等待程序启动这么长的时间，我给这个服务器起了个名字叫做<span style="color: #ff0000">jnet</span>）<br />
2、SWT，包括的浏览器控件和窗口等。<br />
3、使用installanywhere来打包程序，方便发布<br />
4、前台展现数据使用了ext2.2<br />
5、扩展自己开发的服务器<span style="color: #ff0000">jnet</span>，开发出自己的&#8220;action&#8221;，应该来说还是符合MVC的<br />
数据库使用的是access，采用jdbc的方式访问，你知道，如果在桌面软件上使用hibernate...<br />
<br />
好了，不说废话<br />
先贴出成品的效果图<br />
<br />
1、桌面图标<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/dong/daily-icon.jpg" border="0" /><br />
<br />
2、登录界面<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/dong/daily-login.jpg" border="0" /><br />
<br />
3、登录效果图<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/dong/daily-logining.jpg" border="0" /><br />
<br />
4、主界面<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/dong/daily-main.jpg" border="0" /><br />
</p>
<span style="font-size: 10pt"><br />
是不是觉得还不错呢？JAVA也可以扬眉吐气开发出这样的桌面系统，可惜的是因为使用到了SWT，所以整个项目并不能跨平台，放到linux系统下去运行。<br />
<span style="color: #0000ff"><strong>好了先理一理，发一张项目的原理图</strong></span><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/dong/page.jpg" border="0" /><br />
<br />
看图说话，我们整个项目的构架，就是这个样子的，采用SWT封装了IE作为前台展现，后台使用自己开发的服务器作为后台来处理数据，中间数据通信方式当然就只能是http了<br />
<br />
<span style="color: #0000ff">所以中心思想就是，我开发了个服务器，这个服务器能够让用户扩展自己的类，自己的方法，然后用户就可以根据自己的需要来书写自己的系统，最最最重要的就是，让我们这些写惯了J2EE的人能够使用已经形成的思维来编写桌面系统，我们可以不需要再去学swing和swt，可以使用html的方式来做前台的布局，因为老实说我每次写桌面程序的时候，总会把代码弄得一团糟，在web系统上容易规规矩矩的写出分层的代码，桌面系统...布局就让我头大（我的意思是当你跑出去接私活干的时候，不用再学一套东西，呵呵）。<br />
</span><br />
好了，这个帖子只是一个简单的介绍，整个系统具体的实现方式，会在后续的帖子中一步步解析，大家有什么意见或者建议可以给我留言，谢谢！</span>
<img src ="http://www.blogjava.net/dong/aggbug/260789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dong/" target="_blank">Dong</a> 2009-03-19 15:16 <a href="http://www.blogjava.net/dong/archive/2009/03/19/260789.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA反射机制的简单应用</title><link>http://www.blogjava.net/dong/archive/2008/06/05/206083.html</link><dc:creator>Dong</dc:creator><author>Dong</author><pubDate>Thu, 05 Jun 2008 08:36:00 GMT</pubDate><guid>http://www.blogjava.net/dong/archive/2008/06/05/206083.html</guid><wfw:comment>http://www.blogjava.net/dong/comments/206083.html</wfw:comment><comments>http://www.blogjava.net/dong/archive/2008/06/05/206083.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/dong/comments/commentRss/206083.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dong/services/trackbacks/206083.html</trackback:ping><description><![CDATA[<p style="font-size: 10pt; font-family: 幼圆">&nbsp; 开发的时候有时候会碰到这样的情况，我们在写程序的时候并不知道需要调用某个对象的哪个方法，只有程序运行后，我们才能够知道。或许我们需要根据客户端传过来的某个String参数的值来判断我们应该执行哪个方法。在这种情况下JAVA的反射执行就可以帮上忙了。下面是我做的一个简单的测试代码，提供给大家做个参考。<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.lang.reflect.InvocationTargetException;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.lang.reflect.Method;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_86_128_Open_Image" onclick="this.style.display='none'; Codehighlighter1_86_128_Open_Text.style.display='none'; Codehighlighter1_86_128_Closed_Image.style.display='inline'; Codehighlighter1_86_128_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_86_128_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_86_128_Closed_Text.style.display='none'; Codehighlighter1_86_128_Open_Image.style.display='inline'; Codehighlighter1_86_128_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_86_128_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_86_128_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;*&nbsp;</span><span style="color: #808080">@author</span><span style="color: #008000">&nbsp;Dong<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;*&nbsp;测试JAVA&nbsp;reflect机制<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_150_950_Open_Image" onclick="this.style.display='none'; Codehighlighter1_150_950_Open_Text.style.display='none'; Codehighlighter1_150_950_Closed_Image.style.display='inline'; Codehighlighter1_150_950_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_150_950_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_150_950_Closed_Text.style.display='none'; Codehighlighter1_150_950_Open_Image.style.display='inline'; Codehighlighter1_150_950_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;TestRef</span><span id="Codehighlighter1_150_950_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_150_950_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_156_185_Open_Image" onclick="this.style.display='none'; Codehighlighter1_156_185_Open_Text.style.display='none'; Codehighlighter1_156_185_Closed_Image.style.display='inline'; Codehighlighter1_156_185_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_156_185_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_156_185_Closed_Text.style.display='none'; Codehighlighter1_156_185_Open_Image.style.display='inline'; Codehighlighter1_156_185_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_156_185_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_156_185_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;args<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_229_948_Open_Image" onclick="this.style.display='none'; Codehighlighter1_229_948_Open_Text.style.display='none'; Codehighlighter1_229_948_Closed_Image.style.display='inline'; Codehighlighter1_229_948_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_229_948_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_229_948_Closed_Text.style.display='none'; Codehighlighter1_229_948_Open_Image.style.display='inline'; Codehighlighter1_229_948_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)</span><span id="Codehighlighter1_229_948_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_229_948_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TestBean&nbsp;test&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;TestBean();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method[]&nbsp;methods&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;test.getClass().getMethods();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test.setAbc(</span><span style="color: #000000">"</span><span style="color: #000000">---</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img id="Codehighlighter1_413_942_Open_Image" onclick="this.style.display='none'; Codehighlighter1_413_942_Open_Text.style.display='none'; Codehighlighter1_413_942_Closed_Image.style.display='inline'; Codehighlighter1_413_942_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_413_942_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_413_942_Closed_Text.style.display='none'; Codehighlighter1_413_942_Open_Image.style.display='inline'; Codehighlighter1_413_942_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">methods.length;i</span><span style="color: #000000">++</span><span style="color: #000000">)</span><span id="Codehighlighter1_413_942_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_413_942_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_482_928_Open_Image" onclick="this.style.display='none'; Codehighlighter1_482_928_Open_Text.style.display='none'; Codehighlighter1_482_928_Closed_Image.style.display='inline'; Codehighlighter1_482_928_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_482_928_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_482_928_Closed_Text.style.display='none'; Codehighlighter1_482_928_Open_Image.style.display='inline'; Codehighlighter1_482_928_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(methods[i].getName().equalsIgnoreCase(</span><span style="color: #000000">"</span><span style="color: #000000">getabc</span><span style="color: #000000">"</span><span style="color: #000000">))</span><span id="Codehighlighter1_482_928_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_482_928_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_508_599_Open_Image" onclick="this.style.display='none'; Codehighlighter1_508_599_Open_Text.style.display='none'; Codehighlighter1_508_599_Closed_Image.style.display='inline'; Codehighlighter1_508_599_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_508_599_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_508_599_Closed_Text.style.display='none'; Codehighlighter1_508_599_Open_Image.style.display='inline'; Codehighlighter1_508_599_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_508_599_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_508_599_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(methods[i].invoke(test));<br />
<img id="Codehighlighter1_636_703_Open_Image" onclick="this.style.display='none'; Codehighlighter1_636_703_Open_Text.style.display='none'; Codehighlighter1_636_703_Closed_Image.style.display='inline'; Codehighlighter1_636_703_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_636_703_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_636_703_Closed_Text.style.display='none'; Codehighlighter1_636_703_Open_Image.style.display='inline'; Codehighlighter1_636_703_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(IllegalArgumentException&nbsp;e)&nbsp;</span><span id="Codehighlighter1_636_703_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_636_703_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img id="Codehighlighter1_738_805_Open_Image" onclick="this.style.display='none'; Codehighlighter1_738_805_Open_Text.style.display='none'; Codehighlighter1_738_805_Closed_Image.style.display='inline'; Codehighlighter1_738_805_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_738_805_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_738_805_Closed_Text.style.display='none'; Codehighlighter1_738_805_Open_Image.style.display='inline'; Codehighlighter1_738_805_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(IllegalAccessException&nbsp;e)&nbsp;</span><span id="Codehighlighter1_738_805_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_738_805_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img id="Codehighlighter1_843_910_Open_Image" onclick="this.style.display='none'; Codehighlighter1_843_910_Open_Text.style.display='none'; Codehighlighter1_843_910_Closed_Image.style.display='inline'; Codehighlighter1_843_910_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_843_910_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_843_910_Closed_Text.style.display='none'; Codehighlighter1_843_910_Open_Image.style.display='inline'; Codehighlighter1_843_910_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(InvocationTargetException&nbsp;e)&nbsp;</span><span id="Codehighlighter1_843_910_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_843_910_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<img src ="http://www.blogjava.net/dong/aggbug/206083.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dong/" target="_blank">Dong</a> 2008-06-05 16:36 <a href="http://www.blogjava.net/dong/archive/2008/06/05/206083.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA中Object[]数据转String[]</title><link>http://www.blogjava.net/dong/archive/2008/06/02/205280.html</link><dc:creator>Dong</dc:creator><author>Dong</author><pubDate>Mon, 02 Jun 2008 03:25:00 GMT</pubDate><guid>http://www.blogjava.net/dong/archive/2008/06/02/205280.html</guid><wfw:comment>http://www.blogjava.net/dong/comments/205280.html</wfw:comment><comments>http://www.blogjava.net/dong/archive/2008/06/02/205280.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dong/comments/commentRss/205280.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dong/services/trackbacks/205280.html</trackback:ping><description><![CDATA[<font style="font-size: 10pt; color: #000000; font-family: Verdana" color="#ff0000">(String[])ArrayList.toArray(new String[0]);</font>
<img src ="http://www.blogjava.net/dong/aggbug/205280.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dong/" target="_blank">Dong</a> 2008-06-02 11:25 <a href="http://www.blogjava.net/dong/archive/2008/06/02/205280.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在XML配置文件中输出&amp;符号</title><link>http://www.blogjava.net/dong/archive/2008/05/21/201812.html</link><dc:creator>Dong</dc:creator><author>Dong</author><pubDate>Wed, 21 May 2008 01:03:00 GMT</pubDate><guid>http://www.blogjava.net/dong/archive/2008/05/21/201812.html</guid><wfw:comment>http://www.blogjava.net/dong/comments/201812.html</wfw:comment><comments>http://www.blogjava.net/dong/archive/2008/05/21/201812.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dong/comments/commentRss/201812.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dong/services/trackbacks/201812.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt; font-family: Verdana">XML里是无法直接正常输出&amp;等特殊字符的，可用&amp;amp;转义表示！</span>
<img src ="http://www.blogjava.net/dong/aggbug/201812.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dong/" target="_blank">Dong</a> 2008-05-21 09:03 <a href="http://www.blogjava.net/dong/archive/2008/05/21/201812.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Fmt标签的使用</title><link>http://www.blogjava.net/dong/archive/2008/05/20/201568.html</link><dc:creator>Dong</dc:creator><author>Dong</author><pubDate>Tue, 20 May 2008 01:29:00 GMT</pubDate><guid>http://www.blogjava.net/dong/archive/2008/05/20/201568.html</guid><wfw:comment>http://www.blogjava.net/dong/comments/201568.html</wfw:comment><comments>http://www.blogjava.net/dong/archive/2008/05/20/201568.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dong/comments/commentRss/201568.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dong/services/trackbacks/201568.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt; font-family: Verdana">1、数字格式化<br />
&lt;fmt:formatNumber value="33.33333" pattern="#.0"&gt;&lt;/fmt:formatNumber&gt;--&gt;输出33.3<br />
<div style="border-right: #666666 1px solid; border-top: #666666 1px solid; border-left: #666666 1px solid; border-bottom: #666666 1px solid">pattern中符号的约束规定<br />
0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个数位<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个数位，前导零和追尾零不显示<br />
.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 小数点分割位置<br />
，&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 组分隔符的位置<br />
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 负数前缀<br />
%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用100乘，并显示百分号<br />
其他任何符号&nbsp;&nbsp;&nbsp; 在输出字符串中包括指定符号</div>
2、日期格式化<br />
&lt;fmt:formatDate value="${vo.lateCompleteDate}" type="both" pattern="yy-MM-dd"/&gt;</span>
<img src ="http://www.blogjava.net/dong/aggbug/201568.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dong/" target="_blank">Dong</a> 2008-05-20 09:29 <a href="http://www.blogjava.net/dong/archive/2008/05/20/201568.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HashMap标准遍历方法</title><link>http://www.blogjava.net/dong/archive/2008/05/19/201440.html</link><dc:creator>Dong</dc:creator><author>Dong</author><pubDate>Mon, 19 May 2008 09:09:00 GMT</pubDate><guid>http://www.blogjava.net/dong/archive/2008/05/19/201440.html</guid><wfw:comment>http://www.blogjava.net/dong/comments/201440.html</wfw:comment><comments>http://www.blogjava.net/dong/archive/2008/05/19/201440.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dong/comments/commentRss/201440.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dong/services/trackbacks/201440.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt; font-family: Verdana">HashMap&lt;String,String&gt; testMap = new HashMap&lt;String,String&gt;();<br />
for (Map.Entry&lt;String, String&gt; entry : testMap&nbsp;.entrySet()) {<br />
entry.getKey();<br style="font-family: " />
entry.getValue();<br style="font-family: " />
}</span> 
<img src ="http://www.blogjava.net/dong/aggbug/201440.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dong/" target="_blank">Dong</a> 2008-05-19 17:09 <a href="http://www.blogjava.net/dong/archive/2008/05/19/201440.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在java环境中访问spring中配置的对象</title><link>http://www.blogjava.net/dong/archive/2008/05/19/201430.html</link><dc:creator>Dong</dc:creator><author>Dong</author><pubDate>Mon, 19 May 2008 08:45:00 GMT</pubDate><guid>http://www.blogjava.net/dong/archive/2008/05/19/201430.html</guid><wfw:comment>http://www.blogjava.net/dong/comments/201430.html</wfw:comment><comments>http://www.blogjava.net/dong/archive/2008/05/19/201430.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dong/comments/commentRss/201430.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dong/services/trackbacks/201430.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt; font-family: Verdana">ApplicationContext ctx = new ClassPathXmlApplicationContext("application-config.xml"); <br style="font-family: " />
Map&lt;String,String&gt; bureauMap = ((DictionaryService)ctx.getBean("dictionaryService")).getBureauMap();</span>
<img src ="http://www.blogjava.net/dong/aggbug/201430.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dong/" target="_blank">Dong</a> 2008-05-19 16:45 <a href="http://www.blogjava.net/dong/archive/2008/05/19/201430.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于request.request.getRequestDispatcher().forward()方法的一点看法</title><link>http://www.blogjava.net/dong/archive/2008/04/17/193658.html</link><dc:creator>Dong</dc:creator><author>Dong</author><pubDate>Thu, 17 Apr 2008 02:28:00 GMT</pubDate><guid>http://www.blogjava.net/dong/archive/2008/04/17/193658.html</guid><wfw:comment>http://www.blogjava.net/dong/comments/193658.html</wfw:comment><comments>http://www.blogjava.net/dong/archive/2008/04/17/193658.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/dong/comments/commentRss/193658.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dong/services/trackbacks/193658.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt; font-family: Arial">今天在调试一个Servlet程序的时候，报了以下错误！<br style="font-family: " />
<span style="color: red">java.lang.IllegalStateException: Cannot forward after response has been committed<br />
</span>根据字面理解的话，意识是在response已经提交后程序不能再一次的跳转！<br />
<br />
研究代码以后发现，是因为前面已经执行过一次<font face="Arial" size="2">request.request.getRequestDispatcher().forward()</font><br />
但是后面的<font face="Arial" size="2">request.request.getRequestDispatcher().forward()</font>依然被执行到了！<br />
<br />
那么很有理由相信<font face="Arial" size="2">request.request.getRequestDispatcher().forward()</font>跳转本身是不会返回什么，也不会终止程序体的执行！<br />
程序体后面该执行的还是会执行！</span>
<img src ="http://www.blogjava.net/dong/aggbug/193658.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dong/" target="_blank">Dong</a> 2008-04-17 10:28 <a href="http://www.blogjava.net/dong/archive/2008/04/17/193658.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat配置JNDI数据源 报错解决</title><link>http://www.blogjava.net/dong/archive/2008/02/24/181755.html</link><dc:creator>Dong</dc:creator><author>Dong</author><pubDate>Sun, 24 Feb 2008 05:47:00 GMT</pubDate><guid>http://www.blogjava.net/dong/archive/2008/02/24/181755.html</guid><wfw:comment>http://www.blogjava.net/dong/comments/181755.html</wfw:comment><comments>http://www.blogjava.net/dong/archive/2008/02/24/181755.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/dong/comments/commentRss/181755.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dong/services/trackbacks/181755.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt"><span style="font-size: 10pt; font-family: Verdana">
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">Resource&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="jdbc/dong"</span><span style="color: #ff0000">&nbsp;&nbsp;auth</span><span style="color: #0000ff">="Container"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="javax.sql.DataSource"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">ResourceParams&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="jdbc/dong"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">factory</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">org.apache.commons.dbcp.BasicDataSourceFactory</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">maxActive</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">100</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">maxIdle</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">30</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">maxWait</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">5000</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">username</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">root</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">password</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">colorful</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">driverClassName</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">org.gjt.mm.mysql.Driver</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">url</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">jdbc:mysql://localhost:3306/dong</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">ResourceParams</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
使用如上配置的时候一直报这个<br />
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'错误<br />
<br />
在网络上寻觅后发现是因为Tomcat版本引起的，改成如下问题就消失了<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">Resource<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="jdbc/dong"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: #0000ff">="javax.sql.DataSource"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;password</span><span style="color: #0000ff">="colorful"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;driverClassName</span><span style="color: #0000ff">="org.gjt.mm.mysql.Driver"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;maxIdle</span><span style="color: #0000ff">="2"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;maxWait</span><span style="color: #0000ff">="5000"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;username</span><span style="color: #0000ff">="root"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;url</span><span style="color: #0000ff">="jdbc:mysql://localhost:3306/dong"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;maxActive</span><span style="color: #0000ff">="4"</span><span style="color: #0000ff">/&gt;</span></div>
</span></span>
<img src ="http://www.blogjava.net/dong/aggbug/181755.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dong/" target="_blank">Dong</a> 2008-02-24 13:47 <a href="http://www.blogjava.net/dong/archive/2008/02/24/181755.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>