﻿<?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-Liver's Java</title><link>http://www.blogjava.net/liver/</link><description>我不够贪心！其实我应该明白，心有多贪，舞台就会有多大！坚持！奋斗！</description><language>zh-cn</language><lastBuildDate>Mon, 04 May 2026 19:50:04 GMT</lastBuildDate><pubDate>Mon, 04 May 2026 19:50:04 GMT</pubDate><ttl>60</ttl><item><title>[转载]Java远程通讯技术总结</title><link>http://www.blogjava.net/liver/archive/2010/05/07/320301.html</link><dc:creator>Liver</dc:creator><author>Liver</author><pubDate>Fri, 07 May 2010 09:24:00 GMT</pubDate><guid>http://www.blogjava.net/liver/archive/2010/05/07/320301.html</guid><wfw:comment>http://www.blogjava.net/liver/comments/320301.html</wfw:comment><comments>http://www.blogjava.net/liver/archive/2010/05/07/320301.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liver/comments/commentRss/320301.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liver/services/trackbacks/320301.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在分布式服务框架中，一个最基础的问题就是远程服务是怎么通讯的，在Java领域中有很多可实现远程通讯的技术，例如：RMI、MINA、ESB、 Burlap、Hessian、SOAP、EJB和JMS等，这些名词之间到底是些什么关系呢，它们背后到底是基于什么原理实现的呢，了解这些是实现分布式服务框架的基础知识，而如果在性能上有高的要求的话，那深入了解这些技术背后的机制就是必须的了，在这篇blog中我们将来一探究竟，抛砖引玉，欢迎大家提供更多的实现远程通讯的技术和原理的介绍。&nbsp;&nbsp;<a href='http://www.blogjava.net/liver/archive/2010/05/07/320301.html'>阅读全文</a><img src ="http://www.blogjava.net/liver/aggbug/320301.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liver/" target="_blank">Liver</a> 2010-05-07 17:24 <a href="http://www.blogjava.net/liver/archive/2010/05/07/320301.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]Web Services&amp;XML：什么是Web Service</title><link>http://www.blogjava.net/liver/archive/2010/04/27/319497.html</link><dc:creator>Liver</dc:creator><author>Liver</author><pubDate>Tue, 27 Apr 2010 08:42:00 GMT</pubDate><guid>http://www.blogjava.net/liver/archive/2010/04/27/319497.html</guid><wfw:comment>http://www.blogjava.net/liver/comments/319497.html</wfw:comment><comments>http://www.blogjava.net/liver/archive/2010/04/27/319497.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liver/comments/commentRss/319497.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liver/services/trackbacks/319497.html</trackback:ping><description><![CDATA[你可能早就听说过Web Service了，你也可能已经对Web Service有了一些概念，现在不管是在什么场合，谈到以后发展的新趋势，大家都会提到Web Service。世界上的顶级公司，不管是微软、IBM还是SUN，都开始把 Web Service频繁地挂在嘴边。大多数媒体也开始鼓吹Web Service是多么的好，多么的有前途或者&#8220;钱&#8221;途&#8230;&#8230;但Web Service 到底是什么呢？数据库通过网页实现服务？网络上的协议？还是一种软件的标准？<br />
<br />
在http//www.hexiesoft.net 上你可以欣赏到.NET下使用微软开发工具建立的Web Service企业级ERP应用系统。<br />
<br />
在 http//dwdemos.alphaworks.ibm.com/HospitalProj/index.html上，你可以体验使用IBM开发工具创建的提供医疗保险信息查询的Web Service。<br />
<br />
<em><strong><span style="color: rgb(0, 16, 255);">Web Service概念</span></strong></em><br />
<br />
什么是 Web Service呢？从表面上看，Web Service就是一个应用程序，它向外界暴露出一个能够通过Web进行调用的API。这就是说，你能够用编程的方法通过Web调用来实现某个功能的应用程序。例如，笔者创建一个Web Service，它的作用是查询某公司某员工的基本信息。它接受该员工的编号作为查询字符串，返回该员工的具体信息。你可以在浏览器的地址栏中直接输入HTTP GET请求来调用罗列该员工基本信息的ASP页面，这就可以算作是体验Web Service了。<br />
<br />
从深层次上看，Web Service是一种新的Web应用程序分支，它们是自包含、自描述、模块化的应用，可以在网络(通常为Web)中被描述、发布、查找以及通过Web来调用。<br />
<br />
Web Service便是基于网络的、分布式的模块化组件，它执行特定的任务，遵守具体的技术规范，这些规范使得Web Service能与其他兼容的组件进行互操作。它可以使用标准的互联网协议，像超文本传输协议HTTP和XML，将功能体现在互联网和企业内部网上。Web Service平台是一套标准，它定义了应用程序如何在Web上实现互操作性。你可以用你喜欢的任何语言(笔者用的是C#)，在你喜欢的任何平台上写Web Service。<br />
<br />
<em><strong><span style="color: rgb(0, 16, 255);">Web Service的技术支持</span></strong></em><br />
<br />
Web Service平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互操作性，Web Service平台必须提供一套标准的类型系统，用于沟通不同平台、编程语言和组件模型中的不同类型系统。目前这些协议有：<br />
<br />
<em>1.XML和XSD</em><br />
<br />
可扩展的标记语言XML?是Web Service平台中表示数据的基本格式。除了易于建立和易于分析外，XML主要的优点在于它既与平台无关，又与厂商无关。XML是由万维网协会(W3C)创建，W3C制定的XML SchemaXSD?定义了一套标准的数据类型，并给出了一种语言来扩展这套数据类型。<br />
<br />
Web Service平台是用XSD来作为数据类型系统的。当你用某种语言如 VB.NET或C#?来构造一个Web Service时，为了符合Web Service标准，所有你使用的数据类型都必须被转换为XSD类型。如想让它使用在不同平台和不同软件的不同组织间传递，还需要用某种东西将它包装起来。这种东西就是一种协议，如 SOAP。<br />
<br />
<em>2.SOAP</em><br />
<br />
SOAP即简单对象访问协议(Simple Object Access Protocol)，它是用于交换XML编码信息的轻量级协议。它有三个主要方面：XML-envelope为描述信息内容和如何处理内容定义了框架，将程序对象编码成为XML对象的规则，执行远程过程调用(RPC)的约定。 SOAP可以运行在任何其他传输协议上。例如，你可以使用 SMTP，即因特网电子邮件协议来传递SOAP消息，这可是很有诱惑力的。在传输层之间的头是不同的，但XML有效负载保持相同。<br />
<br />
Web Service 希望实现不同的系统之间能够用&#8220;软件-软件对话&#8221;的方式相互调用，打破了软件应用、网站和各种设备之间的格格不入的状态，实现&#8220;基于Web无缝集成&#8221;的目标。<br />
<br />
<em>3.WSDL</em><br />
<br />
Web Service描述语言WSDL?就是用机器能阅读的方式提供的一个正式描述文档而基于XML的语言，用于描述Web Service及其函数、参数和返回值。因为是基于XML的，所以WSDL既是机器可阅读的，又是人可阅读的。<br />
<br />
<em>4.UDDI</em><br />
<br />
UDDI 的目的是为电子商务建立标准；UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范，同时也包含一组使企业能将自身提供的Web Service注册，以使别的企业能够发现的访问协议的实现标准。<br />
<br />
<em>5.远程过程调用RPC与消息传递</em><br />
<br />
Web Service本身其实是在实现应用程序间的通信。我们现在有两种应用程序通信的方法：RPC远程过程调用?和消息传递。使用RPC的时候，客户端的概念是调用服务器上的远程过程，通常方式为实例化一个远程对象并调用其方法和属性。RPC系统试图达到一种位置上的透明性：服务器暴露出远程对象的接口，而客户端就好像在本地使用的这些对象的接口一样，这样就隐藏了底层的信息，客户端也就根本不需要知道对象是在哪台机器上。<br />
<br />
<strong><em><span style="color: rgb(0, 16, 255);">Web Service软件的支持</span></em></strong><br />
<br />
操作系统离不开丰富的应用软件的支持。同样，Web Service这项技术只有通过日益广泛的应用才能体现出其价值，目前比较流行的实现方法是使用.NET 和 Java两种技术，并且两种实现方法可以互相操作；如今我们已经可以看到使用微软、 IBM、SUN、Borland等不同厂商的Web Service构建工具建立的Web Service应用。<br />
<br />
<em>微软.NET</em><br />
<br />
微软的.NET技术应该算是时下最为流行的Web Service 开发技术。首先因为其公司在以前相应的产品就占有相当大的市场份额，以至使新推出的.NET得以有比较稳定的用户群；其次也是更重要的是 .NET平台不仅延续了微软一贯的编程风格，而且还增加了许多支持Web 服务的关键性技术，使得.NET在操作的简单性和执行的稳定性，高效性上达到了一个非常好的结合。<br />
<br />
微软的Visual Studio.NET便是一个便于 Web 服务的开发工具。微软的目标是，将其新编程语言??C#作为Web Service的首选语言。虽然C#看起来与Java类似，但是还有一些 Java中没有的独特的功能。.NET技术中用于Web Service 开发的主要工具是ASP.NET?从技术上说，ASPasp.net? 提供了一些超出ASP以前版本的优点(例如：代码和HTML的分离，与脚本语言相比较，对&#8220;真正&#8221;的编程语言如 C# 的支持)。<br />
<br />
<em>IBM的 WebSphere</em><br />
<br />
IBM公司是业界第一家能够提供全面支持Web服务的电子商务基础设施中间件的公司。通过多年来与 W3C(The World Wide Web Consortium)的共同努力，包括DB2、Lotus、Tivoli 和WebSphere在内的所有IBM软件都实现了对SOAP、WSDL、UDDI、Linux、XML、J2EE等开放技术和标准的全面支持。　　IBM公司的WebSphere 也是比较好的基础架构软件开发平台。WebSphere软件平台及开发工具包括 WebSphere Studio Application Developer WSAD? 基于J2EE、XML 和Web服务等开放标准，并具备 IBM 在可靠性、扩展性和安全性上的主要优势。WebSphere 是 IBM 在 Web Services策略中的核心平台，它支持所有开发、发布、部署 Web Services应用所必需的开放标准和技术，包括 UDDI，SOAP，J2EE，WSDL，和对 XML 技术集成的增强，这特使得它在全球有很多用户。<br />
<br />
<em>Borland的JBuilder</em><br />
<br />
Borland公司在 JBuilder7中，用户可以用其Borland Web Services Kit for Java和Borland JBuilder MobileSet 3进行更快捷地开发Web Service和无线应用。这样将使开发者能够在同一个开发环境中轻松地创建和集成Web Service。今年新推出的JBuidler8 更是针对Web Service开发更提供了方便和高效的方法。<br />
<br />
总之，在Web Service开发上，.NET 和Java都是很好的选择，尽管两者现在都有一些需要完善的地方，但是就目前来说，它们还是最好的开发手段和技术。具体选择哪种开发工具，也是仁者见仁，智者见智的问题。从根本上说，这两种方法没有孰优孰劣的问题，只是根据使用者对这两种方法的掌握程度和对具体语言的偏爱程度来决定。
<img src ="http://www.blogjava.net/liver/aggbug/319497.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liver/" target="_blank">Liver</a> 2010-04-27 16:42 <a href="http://www.blogjava.net/liver/archive/2010/04/27/319497.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>再谈线程：生产者与消费者</title><link>http://www.blogjava.net/liver/archive/2009/06/04/279970.html</link><dc:creator>Liver</dc:creator><author>Liver</author><pubDate>Thu, 04 Jun 2009 02:57:00 GMT</pubDate><guid>http://www.blogjava.net/liver/archive/2009/06/04/279970.html</guid><wfw:comment>http://www.blogjava.net/liver/comments/279970.html</wfw:comment><comments>http://www.blogjava.net/liver/archive/2009/06/04/279970.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/liver/comments/commentRss/279970.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liver/services/trackbacks/279970.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 昨天提到了线程，那么就不得不提到&#8220;生产者与消费者&#8221;这样一个经典的线程同步问题。场景描述：&nbsp;&nbsp;&nbsp;&nbsp;一个仓库，生产者在工厂里生产了产品后，将产品存放到仓库里，仓库存放数量有限，当满仓后，停止生产，直到有消费着将产品消费后才继续生产；消费者从仓库里提取产品，当仓库空仓时，停止消费产品，直到仓库中有产品时，才继续消费产品。...&nbsp;&nbsp;<a href='http://www.blogjava.net/liver/archive/2009/06/04/279970.html'>阅读全文</a><img src ="http://www.blogjava.net/liver/aggbug/279970.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liver/" target="_blank">Liver</a> 2009-06-04 10:57 <a href="http://www.blogjava.net/liver/archive/2009/06/04/279970.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>线程7种状态的相互转换</title><link>http://www.blogjava.net/liver/archive/2009/06/04/279924.html</link><dc:creator>Liver</dc:creator><author>Liver</author><pubDate>Wed, 03 Jun 2009 16:06:00 GMT</pubDate><guid>http://www.blogjava.net/liver/archive/2009/06/04/279924.html</guid><wfw:comment>http://www.blogjava.net/liver/comments/279924.html</wfw:comment><comments>http://www.blogjava.net/liver/archive/2009/06/04/279924.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/liver/comments/commentRss/279924.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liver/services/trackbacks/279924.html</trackback:ping><description><![CDATA[今天有同事问到线程的问题，自己突然就有点蒙了，只模糊的记得个大概。<br />
当初学习线程的时候把这7个状态记得比自己名字还熟悉<br />
还把这7个状态编成了一段凄惨而美丽的爱情故事<br />
没想到如今却只能记得个大概<br />
真验证了&#8220;好记性不如烂笔头&#8221;的真理<br />
还是赶快回忆一下吧<br />
<br />
先从图片开始<br />
<img height="447" alt="" src="http://www.blogjava.net/images/blogjava_net/liver/thread.jpg" width="690" border="0" /><br />
<br />
小小的作下解释：<br />
1、线程的实现有两种方式，一是继承Thread类，二是实现Runnable接口，但不管怎样，当我们new了这个对象后，线程就进入了<span style="color: red"><strong>初始状态</strong></span>；<br />
2、当该对象调用了start()方法，就进入<span style="color: red"><strong>可运行状态</strong></span>；<br />
3、进入可运行状态后，当该对象被操作系统选中，获得CPU时间片就会进入<span style="color: red"><strong>运行状态</strong></span>；<br />
4、进入运行状态后情况就比较复杂了<br />
&nbsp;&nbsp;&nbsp; 4.1、run()方法或main()方法结束后，线程就进入<span style="color: red"><strong>终止状态</strong></span>；<br />
&nbsp;&nbsp;&nbsp; 4.2、当线程调用了自身的sleep()方法或其他线程的join()方法，就会进入<strong style="color: red">阻塞状态</strong>（该状态既停止当前线程，但并<span style="color: red">不释放所占有的资源</span>）。当sleep()结束或join()结束后，该线程进入可运行状态，继续等待OS分配时间片；<br />
&nbsp;&nbsp;&nbsp; 4.3、线程调用了yield()方法，意思是放弃当前获得的CPU时间片，回到可运行状态，这时与其他进程处于同等竞争状态，OS有可能会接着又让这个进程进入运行状态；<br />
&nbsp;&nbsp; 4.4、当线程刚进入可运行状态（注意，还没运行），发现将要调用的资源被<font style="background-color: #cce8cf">synchroniza</font>（同步），获取不到锁标记，将会立即进入<span style="color: red"><strong>锁池状态</strong></span>，等待获取锁标记（这时的<font style="background-color: #cce8cf">锁</font>池里也许已经有了其他线程在等待获取<font style="background-color: #cce8cf">锁</font>标记，这时它们处于队列状态，既先到先得），一旦线程获得<font style="background-color: #cce8cf">锁</font>标记后，就转入可运行状态，等待OS分配CPU时间片；<br />
&nbsp;&nbsp; 4.5、当线程调用wait()方法后会进入<span style="color: red"><strong>等待队列</strong></span>（进入这个状态会释放所占有的所有资源，与阻塞状态不同），进入这个状态后，是不能自动唤醒的，必须依靠其他线程调用notify()或notifyAll()方法才能被唤醒（由于notify()只是唤醒一个线程，但我们由不能确定具体唤醒的是哪一个线程，也许我们需要唤醒的线程不能够被唤醒，因此在实际使用时，一般都用notifyAll()方法，唤醒有所线程），线程被唤醒后会进入锁池，等待获取锁标记。<br />
<br />
总算全部回忆了一遍JDK1.5在API的使用上有了较好的改进，效率得到很大的提高，不过几个状态转换的原理还是一样。<br />
<br />
额&#8230;&#8230;不过那一段凄惨而美丽的爱情故事还没完全想起来，那天全部回忆起来了在写吧。 
  <img src ="http://www.blogjava.net/liver/aggbug/279924.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liver/" target="_blank">Liver</a> 2009-06-04 00:06 <a href="http://www.blogjava.net/liver/archive/2009/06/04/279924.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat下配置JNDI数据库连接池并使用</title><link>http://www.blogjava.net/liver/archive/2009/05/31/279309.html</link><dc:creator>Liver</dc:creator><author>Liver</author><pubDate>Sun, 31 May 2009 14:59:00 GMT</pubDate><guid>http://www.blogjava.net/liver/archive/2009/05/31/279309.html</guid><wfw:comment>http://www.blogjava.net/liver/comments/279309.html</wfw:comment><comments>http://www.blogjava.net/liver/archive/2009/05/31/279309.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liver/comments/commentRss/279309.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liver/services/trackbacks/279309.html</trackback:ping><description><![CDATA[<span style="color: #0000ff">一、配置JNDI数据源</span><br />
这一步有几种配置方式，比如直接修改Tomcat/conf/server.xml文件，但这样修改是全局的，个人不太喜欢这样的方式，本着的原则是能不全局就不全局，以保证项目能够尽量少的影响到其他项目，尽量少的进行修改。因此这里才用局部配置的方式。<br />
把下边的代码保存为context.xml文件，并放到WebRoot/META-INF目录下。<br />
<font style="background-color: #cce8cf">
<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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;根据实际情况修改&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Context</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Resource<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="jdbc/test"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: #0000ff">="javax.sql.DataSource"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;driverClassName</span><span style="color: #0000ff">="com.mysql.jdbc.Driver"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url</span><span style="color: #0000ff">="jdbc:mysql://localhost:3306/test"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username</span><span style="color: #0000ff">="root"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password</span><span style="color: #0000ff">="root"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Context</span><span style="color: #0000ff">&gt;</span></div>
</font><br />
<span style="color: #0000ff">二、编辑web.xml文件，在里边添加如下内容</span><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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Test</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">com.nantian.jndi.Test</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">jndi</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">java:comp/env/jdbc/test</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">load-on-startup</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">0</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">load-on-startup</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Test</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/Test</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-mapping</span><span style="color: #0000ff">&gt;</span></div>
<br />
<br />
<span style="color: #0000ff">三、最后就是测试配置是否成功了</span><br />
新建一个Servlet文件Test.java，写下如下内容<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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.nantian.jndi;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.sql.Connection;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.sql.SQLException;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.naming.Context;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.naming.InitialContext;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.naming.NamingException;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletConfig;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletException;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.http.HttpServlet;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.sql.DataSource;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img id="Codehighlighter1_370_780_Open_Image" onclick="this.style.display='none'; Codehighlighter1_370_780_Open_Text.style.display='none'; Codehighlighter1_370_780_Closed_Image.style.display='inline'; Codehighlighter1_370_780_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_370_780_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_370_780_Closed_Text.style.display='none'; Codehighlighter1_370_780_Open_Image.style.display='inline'; Codehighlighter1_370_780_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Test&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;HttpServlet&nbsp;</span><span id="Codehighlighter1_370_780_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 alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_370_780_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_436_778_Open_Image" onclick="this.style.display='none'; Codehighlighter1_436_778_Open_Text.style.display='none'; Codehighlighter1_436_778_Closed_Image.style.display='inline'; Codehighlighter1_436_778_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_436_778_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_436_778_Closed_Text.style.display='none'; Codehighlighter1_436_778_Open_Image.style.display='inline'; Codehighlighter1_436_778_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;init(ServletConfig&nbsp;config)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;ServletException&nbsp;</span><span id="Codehighlighter1_436_778_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 alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_436_778_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;jndi&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;config.getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">jndi</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img id="Codehighlighter1_493_666_Open_Image" onclick="this.style.display='none'; Codehighlighter1_493_666_Open_Text.style.display='none'; Codehighlighter1_493_666_Closed_Image.style.display='inline'; Codehighlighter1_493_666_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_493_666_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_493_666_Closed_Text.style.display='none'; Codehighlighter1_493_666_Open_Image.style.display='inline'; Codehighlighter1_493_666_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_493_666_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 alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_493_666_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Context&nbsp;ctx&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;InitialContext();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataSource&nbsp;ds&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(DataSource)&nbsp;ctx.lookup(jndi);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection&nbsp;conn&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ds.getConnection();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">连接获取成功：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">conn);<br />
<img id="Codehighlighter1_694_722_Open_Image" onclick="this.style.display='none'; Codehighlighter1_694_722_Open_Text.style.display='none'; Codehighlighter1_694_722_Closed_Image.style.display='inline'; Codehighlighter1_694_722_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_694_722_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_694_722_Closed_Text.style.display='none'; Codehighlighter1_694_722_Open_Image.style.display='inline'; Codehighlighter1_694_722_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&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;(NamingException&nbsp;e)&nbsp;</span><span id="Codehighlighter1_694_722_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 alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_694_722_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img id="Codehighlighter1_747_775_Open_Image" onclick="this.style.display='none'; Codehighlighter1_747_775_Open_Text.style.display='none'; Codehighlighter1_747_775_Closed_Image.style.display='inline'; Codehighlighter1_747_775_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_747_775_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_747_775_Closed_Text.style.display='none'; Codehighlighter1_747_775_Open_Image.style.display='inline'; Codehighlighter1_747_775_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&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;(SQLException&nbsp;e)&nbsp;</span><span id="Codehighlighter1_747_775_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 alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_747_775_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
<br />
这样就可以了测试了，这个例子连接的是mysql数据库，别忘记添加mysql驱动的jar包。部署工程，运行Tomcat，在服务器启动的时候就可以看到System.out.println(<span style="color: #000000">"</span><span style="color: #000000">连接获取成功：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">conn);</span>这条语句输出的信息了。 
<img src ="http://www.blogjava.net/liver/aggbug/279309.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liver/" target="_blank">Liver</a> 2009-05-31 22:59 <a href="http://www.blogjava.net/liver/archive/2009/05/31/279309.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>