<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>一杯江湖</title>
    <description>要勤奋，要善于运用智慧！</description>
    <link>http://kaguvivian.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>Eclipse下使用Xfire创建WebService入门示例（上） </title>
        <author>kaguvivian</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kaguvivian.javaeye.com">kaguvivian</a>&nbsp;
          链接：<a href="http://kaguvivian.javaeye.com/blog/114670" style="color:red;">http://kaguvivian.javaeye.com/blog/114670</a>&nbsp;
          发表时间: 2007年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h1><font face="Times New Roman">Web Service</font>概述</h1>
<h2>什么是<font face="Arial">Web Service</font></h2>
<p><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Web Service</font>是能够基于<a href="http://www.newasp.cn/" target="_blank"></a><a href="http://www.ahaoz.com/" target="_blank">网络</a>，尤其是基于万维网（<font face="Times New Roman">World Wide Web</font>）直接调用的能够处理离散任务或连续任务的<a href="http://www.ahaoz.com/" target="_blank">软件</a>模型。目前较为流行的应用是，由一家公司对其专有数据进行封装，提供<font face="Times New Roman">Web Service</font>，然后其它公司就可以通过<font face="Times New Roman">Internet</font>来动态使用这些在线服务。这为未来全球的电子商务发展提供了新的标准和架构。</p>
<h2><font face="Arial">Web Service</font>架构</h2>
<p><font face="Times New Roman">Web Service</font>是独立的、模块化的应用，能够通过因特网来描述、发布、定位以及调用。在<font face="Times New Roman">Web Service</font>的体系架构中包括三个角色：服务提供者<font face="Times New Roman">(Service Provider)</font>、服务请求者<font face="Times New Roman">(Service Requestor)</font>、服务注册器<font face="Times New Roman">(Service Registry)</font>。角色间主要有三个操作：发布<font face="Times New Roman">(Publish)</font>、查找<font face="Times New Roman">(Find)</font>、绑定<font face="Times New Roman">(Bind)</font>。</p>
<p>下图清楚的描述了三种角色，以及角色之间的作用关系。</p>
<p>图示一：</p>
<p align="center"><img src="http://www.itlove.net/Article/UploadPic/2005-8/200582555613204.jpg" border="0" alt="" /><br />
</p>
<h2><font size="1">图示二：</font></h2>
<p>这个流程图显示了Web Services中的核心技术是如何工作的。 </p>
<p>　　这里，Provider是提供服务的应用程序组件，Requester是使用服务的客户端程序。很多其他技术也会参与到交互中，但是这个图只显示了在Web Services环境中必需的核心技术组件。</p>
<p><img src="http://117.photo.pp.sohu.com/images/blog/2007/8/17/10/5/1150b9654b0.jpg" border="0" alt="" style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" /></p>
<h2><font face="Arial">Web Service</font>协议标准</h2>
<h3><font size="5">简单对象访问协议（<font face="Times New Roman">SOAP</font>）</font></h3>
<p><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SOAP</font>是<font face="Times New Roman">Simple Object Access Protocol</font>的缩写，是一种基于<font face="Times New Roman">XML</font>的不依赖传输协议的表示层协议，用来在分散或分布式的应用<a href="http://www.ahaoz.com/" target="_blank">程序</a>之间方便地以对象的形式交换数据。在<font face="Times New Roman">SOAP</font>的下层，可以是<font face="Times New Roman">HTTP/HTTP</font>，也可以是<font face="Times New Roman">SMTP/POP3</font>，还可以是为一些应用而专门设计的特殊的通信协议。</p>
<p><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SOAP</font>包括三个主要部分：</p>
<p>&sup2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Times New Roman">SOAP</font>封装结构：定义了一个整体框架，以表示消息中包含什么<a href="http://www.ahaoz.com/" target="_blank">内容</a>，谁来处理这些<a href="http://www.ahaoz.com/" target="_blank">内容</a>以及这些<a href="http://www.ahaoz.com/" target="_blank">内容</a>是可选的或是必需的。</p>
<p>&sup2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Times New Roman">SOAP</font>编码规则：定义了用以交换应用<a href="http://www.ahaoz.com/" target="_blank">程序</a>定义的数据类型的实例的一系列机制。</p>
<p>&sup2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Times New Roman">SOAP RPC</font>表示：定义了一个用来表示远程过程调用和应答的协定。</p>
<h3><font size="5"><font face="Times New Roman">Web Service</font>描述语言（<font face="Times New Roman">WSDL</font>）</font></h3>
<p><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WSDL</font>是<font face="Times New Roman">Web Service Des cription Language</font>的缩写，该语言将<a href="http://www.newasp.cn/" target="_blank"></a><a href="http://www.ahaoz.com/" target="_blank">网络</a>服务定义成一个能交换消息的通信端点集，为分布式<a href="http://www.ahaoz.com/" target="_blank">系统</a>提供了帮助文档，同时也可作为自动实现应用间通信的解决方案。</p>
<h3><font size="5">统一描述、发现和集成协议（<font face="Times New Roman">UDDI</font>）</font></h3>
<p><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UDDI</font>是一套基于<font face="Times New Roman">Web</font>的、分布式的、为<font face="Times New Roman">Web Service</font>提供的、信息注册中心的实现标准规范，同时也包含一组使企业能将自身提供的<font face="Times New Roman">Web Service</font>注册，以使别的企业能够发现的访问协议的实现标准。</p>
<p>以上概念转自<a href="http://www.itlove.net/Article/203/207/2005/2005082532541.html">http://www.itlove.net/Article/203/207/2005/2005082532541.html</a></p>
<p><font size="5" face="Arial"><strong>XFire</strong></font></p>
<p>XFire是一个免费的开源SOAP框架，它不仅可以极大方便地实现这样一个环境，并且可以提供许多Web Services规范中高级特征，这些特征在多数的商业或者开源工具都没有提供。<a href="http://xfire.codehaus.org/Download">http://xfire.codehaus.org/Download</a>是它的官方网站下载区，同时你也可以了解关于它的更多内容。</p>
<p><font size="5" face="Arial"><strong>创建过程示例</strong></font></p>
<p>下面我们就来使用Java构建一个WebService并且构建一个客户端来测试访问它。</p>
<p>&nbsp;&nbsp;&nbsp;首先请确保你的JDK和Tomcat在Eclipse环境中是可用的，配置方法不做赘述。并且你了解一些java编程技术和tomcat的发布常识。</p>
<p>版本信息：MyEclipse6.0.0M1；Tomcat6.0；JDK1.5；Xfire1.2</p>
<p>1、打开MyEclipse新建一个WebService Project，为你的项目命名，我选择了Java EE5.0，项目在你的WorkSpace目录下。下一步：看到了这个界面</p>
<p><img src="http://118.img.pp.sohu.com/images/blog/2007/8/17/10/25/1150ba8b5d8.jpg" border="0" alt="" style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" /></p>
<p>在这里Eclipse为你创建了webService的配置文件services.xml（主意文件名是有&ldquo;s&rdquo;的），并进行了Xfire的Servlet基本配置告诉项目你使用了Xfire改信息将体现在项目的web.xml文件中。继续下一步，加载Xfire相关的jar包，你看到了</p>
<p><img src="http://117.photo.pp.sohu.com/images/blog/2007/8/17/11/3/1150bb03dee.jpg" border="0" alt="" style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" /></p>
<p>在这个项目里我勾选了Xfire1.2 Core Libraries；HTTP Client Libraries；XML Beans Libraries。主要是确保引入了这些包包：</p>
<li><a>　　&bull; activation-1.0.2.jar </a></li>
<li><a>　　&bull; commons-codec-1.3.jar </a></li>
<li><a>　　&bull; commons-httpclient-3.0.jar </a></li>
<li><a>　　&bull; commons-logging-1.0.4.jar </a></li>
<li><a>　　&bull; jaxen-1.1-beta-8.jar </a></li>
<li><a>　　&bull; jdom-1.0.jar </a></li>
<li><a>　　&bull; log4j-1.2.x.jar </a></li>
<li><a>　　&bull; mail-1.3.3_01.jar </a></li>
<li><a>　　&bull; spring-1.2.x.jar </a></li>
<li><a>　　&bull; stax-api-1.0.jar </a></li>
<li><a>　　&bull; wsdl4j-1.5.2.jar </a></li>
<li><a>　　&bull; wstx-asl-2.9.jar </a></li>
<li><a>　　&bull; xbean-2.1.0.jar </a></li>
<li><a>　　&bull; xbean-spring-2.2.jar </a></li>
<li><a>　　&bull; xfire-all-1.0.jar </a></li>
<li><a>　　&bull; XmlSchema-1.0.jar </a>
<p>如果你好奇其他的包包是做什么用的就有待于我们在今后的学习中继续探究了～点击&ldquo;Finish&rdquo;完成了项目创建。目录结构如下图所示：</p>
<p><img src="http://115.img.pp.sohu.com/images/blog/2007/8/17/11/17/1150bb3db4c.jpg" border="0" alt="" style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" /></p>
<p>打开web.xml我们可以看到如下片断：</p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">servlet</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>XFireServlet</span><span class="tag">&lt;/</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet-class</span><span class="tag">&gt;</span><span>org.codehaus.xfire.transport.http.XFireConfigurableServlet</span><span class="tag">&lt;/</span><span class="tag-name">servlet-class</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">load-on-startup</span><span class="tag">&gt;</span><span>0</span><span class="tag">&lt;/</span><span class="tag-name">load-on-startup</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">servlet</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet-mapping</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>XFireServlet</span><span class="tag">&lt;/</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">url-pattern</span><span class="tag">&gt;</span><span>/services/*</span><span class="tag">&lt;/</span><span class="tag-name">url-pattern</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">servlet-mapping</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">welcome-file-list</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">welcome-file</span><span class="tag">&gt;</span><span>index.jsp</span><span class="tag">&lt;/</span><span class="tag-name">welcome-file</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">welcome-file-list</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
</li>
<p>接下来的工作是开始编写java类，将在《Eclipse下使用Xfire创建WebService入门示例（下）》中为大家继续介绍。to be continued&mdash;&mdash;&mdash;&mdash;</p>
<p>吃饭去咯～^0^</p>
          <br/>
          <span style="color:red;">
            <a href="http://kaguvivian.javaeye.com/blog/114670#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 21 Aug 2007 09:27:00 +0800</pubDate>
        <link>http://kaguvivian.javaeye.com/blog/114670</link>
        <guid>http://kaguvivian.javaeye.com/blog/114670</guid>
      </item>
      <item>
        <title>Eclipse下使用Xfire创建WebService入门示例（下）</title>
        <author>kaguvivian</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kaguvivian.javaeye.com">kaguvivian</a>&nbsp;
          链接：<a href="http://kaguvivian.javaeye.com/blog/114665" style="color:red;">http://kaguvivian.javaeye.com/blog/114665</a>&nbsp;
          发表时间: 2007年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>有了在&nbsp;《Eclipse下使用Xfire创建WebService入门示例（上）》中所描述的构建基础，接下来我们要写一个服务端java类。模拟应用是一个银行转账应用，从账户A转账到账户B并需要给出金额和货币种类。我们先来实现一个接口IBankingService.java代码全文如下：</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">package</span><span>&nbsp;com.mybank.xfire.example; &nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">interface</span><span>&nbsp;IBankingService&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;String&nbsp;transferFunds( &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;fromAccount,&nbsp;String&nbsp;toAccount,&nbsp;</span><span class="keyword">double</span><span>&nbsp;amount,&nbsp;String&nbsp;currency); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>然后编写一个普通的Java类BankingService包含了一个叫做transferFunds()的方法来为我们完成这项工作。它需要四个输入参数: </p>
<ul><a></a>
    <li><a>　　1、 String fromAccount </a></li>
    <li><a>　　2、 String toAccount </a></li>
    <li><a>　　3、 double amount </a></li>
    <li><a>　　4、 String currency </a></li>
</ul>
<p><a>　　代码如下:</a></p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">package</span><span>&nbsp;com.mybank.xfire.example; &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;java.text.NumberFormat; &nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;java.text.DecimalFormat; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;BankingService&nbsp;</span><span class="keyword">implements</span><span>&nbsp;IBankingService&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;</span><span class="comment">//Default&nbsp;constructor. </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;BankingService(){&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**&nbsp;Transfers&nbsp;fund&nbsp;from&nbsp;one&nbsp;account&nbsp;to&nbsp;another. </span>&nbsp; </li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;String&nbsp;transferFunds( &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;fromAccount,&nbsp;String&nbsp;toAccount,&nbsp;</span><span class="keyword">double</span><span>&nbsp;amount,&nbsp;String&nbsp;currency){ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;statusMessage&nbsp;=&nbsp;</span><span class="string">&quot;&quot;</span><span>; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//调用业务逻辑执行操作. </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//建立并返回状态信息. </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NumberFormat&nbsp;formatter&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;DecimalFormat(</span><span class="string">&quot;###,###,###,###.00&quot;</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;statusMessage&nbsp;=&nbsp;</span><span class="string">&quot;COMPLETED:&nbsp;&quot;</span><span>&nbsp;+&nbsp;currency&nbsp;+&nbsp;</span><span class="string">&quot;&nbsp;&quot;</span><span>&nbsp;+&nbsp;formatter.format(amount)+&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">&quot;&nbsp;was&nbsp;successfully&nbsp;transferred&nbsp;from&nbsp;A/C#&nbsp;&quot;</span><span>&nbsp;+&nbsp;fromAccount&nbsp;+&nbsp;</span><span class="string">&quot;&nbsp;to&nbsp;A/C#&nbsp;&quot;</span><span>&nbsp;+&nbsp;toAccount; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(Exception&nbsp;e){ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;statusMessage&nbsp;=&nbsp;</span><span class="string">&quot;BankingService.transferFunds():&nbsp;EXCEPTION:&nbsp;&quot;</span><span>&nbsp;+&nbsp;e.toString(); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;statusMessage; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>｝ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>你可以看到BankingService是一个普通的Java类，没有任何代码告诉我们它将会在Web Services中使用。只是要有默认的构造函数，类型是public。这是必须的。否则，XFire不能够初始化这个类。好的，这里我们不需要增加任何东西。我们所有的工作都在部署描述符里完成。</p>
<p><strong>Web应用的部署描述符</strong> </p>
<p>　　在Java中，Web应用程序通常需要至少一个部署描述符(叫做web.xml)对其进行配置。XFire本身是一个基于servlet的应用程序。因此，我们需要增加必要的引用到描述符文件中。然后我们还必须配置将要创建的Web Services。我们使用一个称为services.xml的新文件来完成这件事。在使用Eclipse工具构建工程的时候我们已经完成了这项配置（参见（上）文）。</p>
<p><font face="Verdana"><strong>services.xml</strong></font> </p>
<p><a>　　现在我们不得不说一下我们的Web Services的由什么组成的了。这由一个叫做services.xml的文件完成，当这个项目在tomcat发布后，它存放在WEB-INF/classes/META-INF/xfire目录下，它在Web应用程序的标准类路径中。而在Eclipse环境中我们可以清除的看到Eclipse已经为我们把它清楚的列在项目路径中。这里是services.xml中的基本配置条目:</a></p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">beans</span><span>&nbsp;</span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">&quot;http://xfire.codehaus.org/config/1.0&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">service</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">name</span><span class="tag">&gt;</span><span>Banking</span><span class="tag">&lt;/</span><span class="tag-name">name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">namespace</span><span class="tag">&gt;</span><span>mybank</span><span class="tag">&lt;/</span><span class="tag-name">namespace</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">serviceClass</span><span class="tag">&gt;</span><span>com.mybank.xfire.example.IBankingService</span><span class="tag">&lt;/</span><span class="tag-name">serviceClass</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">implementationClass</span><span class="tag">&gt;</span><span>com.mybank.xfire.example.BankingService</span><span class="tag">&lt;/</span><span class="tag-name">implementationClass</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">service</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;/</span><span class="tag-name">beans</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>Web Services的定义包含在元素中，它还含有一些子元素。</p>
<p>第一个子元素是<name></name>Banking，它可以是你提供任何的合法名字。这将会被客户端程序和其它需要定位你的服务的组件用到。例如，在服务准备好以后，你将在浏览器上使用这个名字来查看WSDL。</p>
<p><font face="Verdana">下一个子元素是<namespace></namespace>。任何合法的XML名字都是可以的。<namespace></namespace>用来唯一标识你的服务的各个参数。（注释@）</font></p>
<p><font face="Verdana"><em>注释@：Namespace派什么用？namespace的作用是要避免命名冲突。如果我建立一项Web <br />
Service，其中的WSDL文件包含一个名为&quot;foo&quot;的元素，而你想要使用我的服务与另一项服务连接作为补充，这样的话另一项服务的WSDL文件就不能包含名为&quot;foo&quot;的元素。两个服务器程序只有在它们在两个事例中表示完全相同的东西时，才可以取相同的名字。如果有了表示区别的namespace，我的网络服务里的&quot;foo&quot;就可以表示完全不同于另一个网络服务里&quot;foo&quot;的含义。在你的客户端里，你只要加以限制就可以引用我的&quot;foo&quot;。</em></font></p>
<p><font face="Verdana"><br />
<serviceclass></serviceclass>元素包含了Java类的名字，它指定了方法签名。在我们的例子中，它是接口IBankingService。如果Java类没有实现任何接口，你就需要把类的名字放在这里。在你的Java类或者接口中可能有几个方法。只需要一个入口把它们全部发布为Web Services。</font> </p>
<p><a><font face="Verdana">　　<implementationclass></implementationclass>保存了实现方法的Java类名。这是一个可选元素。如果上一个元素<serviceclass></serviceclass>包含了一个接口，那么相应的实现类必须在这里指定。</font></a></p>
<p><a><font face="Verdana">　　就是这样。我们的Web Services配置完成了</font>。</a></p>
<p><strong>我们如何知道Web Service正在工作呢?</strong> </p>
<p>　　为了了解Web Service是否正在工作，我们需要测试。首先，我们测试来看WSDL是否可用。我们在浏览器中输入URL。哪个URL?因为我们的应用程序的war文件是aa.war，并且在services.xml中给出的服务名是Banking，WSDL的URL应该是:http://localhost:8080/aa/services/Banking?wsdl。</p>
<p>　　请注意:URL的第一部分，例如，<a href="http://localhost:8080/">http://localhost:8080</a>，可能会根据你的应用服务器不同而不同。无论怎样，当你输入URL后，将会看到一个XML文档，这个文档叫做服务的WSDL。如果你看到了，这就是你的应用作为Web Service已经可用的第一个证明。</p>
<p>正确的执行情况：</p>
<p><img src="http://116.img.pp.sohu.com/images/blog/2007/8/17/14/24/1150c70b918.jpg" border="0" alt="" style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" /></p>
<p>在这个WSDL中我们可以看到<span>&lt;</span><span>xsd:element</span><span> name</span><span>=&quot;</span><strong>transferFunds</strong><span>&quot;</span><span>&gt;的服务方法明以及他的四个参数描述等信息。</span>但是这个测试是不够的。可能会发生这种情况，可以看到WSDL，但是从客户端程序可能会访问不到服务。因此为了核实服务是否可以访问了，我们必须使用一个客户端进行服务的实际调用来进行一个真正的测试。</p>
<p><strong>开发一个客户端</strong></p>
<p>编写BankClient.java</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">package</span><span>&nbsp;com.mybank.xfire.client; &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;java.net.MalformedURLException; &nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;org.codehaus.xfire.XFire; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;org.codehaus.xfire.XFireFactory; &nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;org.codehaus.xfire.client.XFireProxyFactory; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;org.codehaus.xfire.service.Service; &nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;org.codehaus.xfire.service.binding.ObjectServiceFactory; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;com.mybank.xfire.example.IBankingService; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="comment">/** </span>&nbsp; </li>
    <li class=""><span><span class="comment">&nbsp;*&nbsp;@author&nbsp;AdminiDD </span>&nbsp;</span> </li>
    <li class="alt"><span><span class="comment">&nbsp;* </span>&nbsp;</span> </li>
    <li class=""><span><span class="comment">&nbsp;*/</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class="alt"><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;BankClient&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;</span><span class="comment">/** </span>&nbsp; </li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;*&nbsp;@param&nbsp;args </span>&nbsp;</span> </li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;main(String[]&nbsp;args)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">//&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;</span><span class="comment">/*&nbsp;Call&nbsp;the&nbsp;Web&nbsp;service </span>&nbsp; </li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;* </span>&nbsp;</span> </li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;String&nbsp;callWebService( &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;fromAccount,&nbsp;String&nbsp;toAccount,&nbsp;</span><span class="keyword">double</span><span>&nbsp;amount,&nbsp;String&nbsp;currency)&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">throws</span><span>&nbsp;MalformedURLException,&nbsp;Exception&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//Create&nbsp;a&nbsp;metadata&nbsp;of&nbsp;the&nbsp;service&nbsp;&nbsp;创建一个service的元数据&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Service&nbsp;serviceModel&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;ObjectServiceFactory().create(IBankingService.</span><span class="keyword">class</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span class="string">&quot;callSoapServiceLocal():&nbsp;got&nbsp;service&nbsp;model.&quot;</span><span>&nbsp;); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//Create&nbsp;a&nbsp;proxy&nbsp;for&nbsp;the&nbsp;deployed&nbsp;service&nbsp;为XFire获得一个代理工厂对象 </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XFire&nbsp;xfire&nbsp;=&nbsp;XFireFactory.newInstance().getXFire(); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XFireProxyFactory&nbsp;factory&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;XFireProxyFactory(xfire);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//得到一个服务的本地代理 </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;serviceUrl&nbsp;=&nbsp;</span><span class="string">&quot;http://127.0.0.1:8080/wstest/services/Banking&quot;</span><span>; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IBankingService&nbsp;client&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;client&nbsp;=&nbsp;(IBankingService)&nbsp;factory.create(serviceModel,&nbsp;serviceUrl); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(MalformedURLException&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span class="string">&quot;WsClient.callWebService():&nbsp;EXCEPTION:&nbsp;&quot;</span><span>&nbsp;+&nbsp;e.toString()); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//Invoke&nbsp;the&nbsp;service&nbsp;调用服务&nbsp;返回状态结果信息 </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;serviceResponse&nbsp;=&nbsp;</span><span class="string">&quot;&quot;</span><span>; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serviceResponse&nbsp;=&nbsp;client.transferFunds(fromAccount,&nbsp;toAccount,&nbsp;amount,&nbsp;currency); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(Exception&nbsp;e){ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span class="string">&quot;WsClient.callWebService():&nbsp;EXCEPTION:&nbsp;&quot;</span><span>&nbsp;+&nbsp;e.toString());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serviceResponse&nbsp;=&nbsp;e.toString(); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span class="string">&quot;WsClient.callWebService():&nbsp;status=&quot;</span><span>&nbsp;+&nbsp;serviceResponse);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//Return&nbsp;the&nbsp;response </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;serviceResponse; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>编写两个JSP页来模拟请求和响应</p>
<p>index.jsp；发送请求</p>
<p><!--page language="java"  pageEncoding="UTF-8-->
<base href="&lt;%=basePath%&gt;&lt;/base&gt;" />
<base href="&lt;%=basePath%&gt;&lt;/base&gt;" /><!--Messag-->

</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span><!--page language=</span><span class="string">"java"</span><span>  pageEncoding=</span><span class="string">"UTF-8"</span><span-->&nbsp;&nbsp;</span></span> </li>
    <li class=""><span><!-- </span></li>
    <li class="alt"><span>String path = request.getContextPath();   </span></li>
    <li class=""><span>String basePath = request.getScheme()+</span><span class="string">"://"</span><span>+request.getServerName()+</span><span class="string">":"</span><span>+request.getServerPort()+path+</span><span class="string">"/"</span><span>;   </span></li>
    <li class="alt"><span-->&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span><!--CTYPE HTML PUBLIC </sp--><span class="string">&quot;-//W3C//DTD&nbsp;HTML&nbsp;4.01&nbsp;Transitional//EN&quot;</span><span>&gt; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;<!--asePat-->&quot;</span><span>&gt; &nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;<span class="string">&quot;pragma&quot;</span><span>&nbsp;content=</span><span class="string">&quot;no-cache&quot;</span><span>&gt; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;<span class="string">&quot;cache-control&quot;</span><span>&nbsp;content=</span><span class="string">&quot;no-cache&quot;</span><span>&gt; &nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;<span class="string">&quot;expires&quot;</span><span>&nbsp;content=</span><span class="string">&quot;0&quot;</span><span>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;<span class="string">&quot;keywords&quot;</span><span>&nbsp;content=</span><span class="string">&quot;keyword1,keyword2,keyword3&quot;</span><span>&gt; &nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;<span class="string">&quot;description&quot;</span><span>&nbsp;content=</span><span class="string">&quot;This&nbsp;is&nbsp;my&nbsp;page&quot;</span><span>&gt; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;<!--   </span></li>
    <li class="alt"><span> <link rel=</span><span class="string">"stylesheet"</span><span> type=</span><span class="string">"text/css"</span><span> href=</span><span class="string">"styles.css"</span><span>>   </span></li>
    <li class=""><span> --> &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;
    <h1><br />
    </h1>
    <h1>Welcomle&nbsp;to&nbsp;WebService!&nbsp;</h1>
    <br />
    &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<hr />
    &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;Bank&nbsp;test&nbsp;:&nbsp;give&nbsp;my&nbsp;money&nbsp;to&nbsp;you! &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;form1&quot;</span><span>&nbsp;action=</span><span class="string">&quot;say.jsp&quot;</span><span>&nbsp;method=</span><span class="string">&quot;POST&quot;</span><span>&gt; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;your&nbsp;account&nbsp;ID：<span class="string">&quot;toAcc&quot;</span><span>&nbsp;type=</span><span class="string">&quot;text&quot;</span><span>/&gt;<br />
    &nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;How&nbsp;much&nbsp;</span><span class="keyword">do</span><span>&nbsp;you&nbsp;want：<span class="string">&quot;amount&quot;</span><span>&nbsp;type=</span><span class="string">&quot;text&quot;</span><span>&nbsp;/&gt;<br />
    &nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;center&quot;</span><span>&gt;<span class="string">&quot;submit&quot;</span><span>&nbsp;value=</span><span class="string">&quot;提交&quot;</span><span>&gt;&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span>
    <div></div>
    <p>say.jsp，接收请求并返回响应结果<br />
    &nbsp; <br />
    </p>
    <div class="code_title">java 代码</div>
    <div class="dp-highlighter">
    <div class="bar"></div>
    <ol class="dp-j">
        <li class="alt"><span><span><!--page language=</span><span class="string">"java"</span><span>  pageEncoding=</span><span class="string">"UTF-8"</span><span-->&nbsp;&nbsp;</span></span> </li>
        <li class=""><span></span></li>
        <li class="alt"><span><!-- </span></li>
        <li class=""><span>String path = request.getContextPath();   </span></li>
        <li class="alt"><span>String basePath = request.getScheme()+</span><span class="string">"://"</span><span>+request.getServerName()+</span><span class="string">":"</span><span>+request.getServerPort()+path+</span><span class="string">"/"</span><span>;   </span></li>
        <li class=""><span>  </span></li>
        <li class="alt"><span>String toAcc = request.getParameter(</span><span class="string">"toAcc"</span><span>);   </span></li>
        <li class=""><span></span><span class="keyword">double</span><span> amount = </span><span class="keyword">new</span><span> Integer(request.getParameter(</span><span class="string">"amount"</span><span>)).doubleValue();   </span></li>
        <li class="alt"><span>String fromAccount = </span><span class="string">"affman"</span><span>;   </span></li>
        <li class=""><span>String currency = </span><span class="string">"RMB$"</span><span>;   </span></li>
        <li class="alt"><span>String Message = ClientBean.callWebService(fromAccount,toAcc,amount,currency);   </span></li>
        <li class=""><span-->&nbsp;&nbsp;</span> </li>
        <li class="alt"><span>&nbsp;&nbsp;</span> </li>
        <li class=""><span><!--CTYPE HTML PUBLIC </sp--><span class="string">&quot;-//W3C//DTD&nbsp;HTML&nbsp;4.01&nbsp;Transitional//EN&quot;</span><span>&gt; &nbsp;&nbsp;</span> </span></li>
        <li class="alt"><span>&nbsp;&nbsp;</span> </li>
        <li class=""><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
        <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;<!--asePat-->&quot;</span><span>&gt; &nbsp;&nbsp;</span> </span></li>
        <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
        <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
        <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
        <li class="alt"><span>&nbsp;<span class="string">&quot;pragma&quot;</span><span>&nbsp;content=</span><span class="string">&quot;no-cache&quot;</span><span>&gt; &nbsp;&nbsp;</span> </span></li>
        <li class=""><span>&nbsp;<span class="string">&quot;cache-control&quot;</span><span>&nbsp;content=</span><span class="string">&quot;no-cache&quot;</span><span>&gt; &nbsp;&nbsp;</span> </span></li>
        <li class="alt"><span>&nbsp;<span class="string">&quot;expires&quot;</span><span>&nbsp;content=</span><span class="string">&quot;0&quot;</span><span>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
        <li class=""><span>&nbsp;<span class="string">&quot;keywords&quot;</span><span>&nbsp;content=</span><span class="string">&quot;keyword1,keyword2,keyword3&quot;</span><span>&gt; &nbsp;&nbsp;</span> </span></li>
        <li class="alt"><span>&nbsp;<span class="string">&quot;description&quot;</span><span>&nbsp;content=</span><span class="string">&quot;This&nbsp;is&nbsp;my&nbsp;page&quot;</span><span>&gt; &nbsp;&nbsp;</span> </span></li>
        <li class=""><span>&nbsp;<!--   </span></li>
    <li class="alt"><span> <link rel=</span><span class="string">"stylesheet"</span><span> type=</span><span class="string">"text/css"</span><span> href=</span><span class="string">"styles.css"</span><span>>   </span></li>
    <li class=""><span> --> &nbsp;&nbsp;</span> </li>
        <li class="alt"><span>&nbsp;&nbsp;</span> </li>
        <li class=""><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
        <li class="alt"><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
        <li class=""><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
        <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <h1>Welcomle&nbsp;to&nbsp;WebService!&nbsp;</h1>
        <br />
        &nbsp;&nbsp;</span> </li>
        <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<hr />
        &nbsp;&nbsp;</span> </li>
        <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;Message&nbsp;from&nbsp;WebService:<!--Messag--> &nbsp;&nbsp;</span> </li>
        <li class=""><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
        <li class="alt"><span>&nbsp;&nbsp;</span> </li>
        <li class=""><span>&nbsp;&nbsp;</span> </li>
    </ol>
    </div>
    <p>&nbsp;</p>
    <p>项目aa编译完毕并发布到Tomcat上，启动Tomcat测试开始！访问<a href="http://127.0.0.1:8080/aa/index.jsp">http://127.0.0.1:8080/aa/index.jsp</a></p>
    <p>执行效果：</p>
    <p><img src="http://117.photo.pp.sohu.com/images/blog/2007/8/17/14/10/1150c5b560f.jpg" border="0" alt="" style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" /></p>
    <p>添上你的账户，想要多少钱就写多少钱，嘿嘿 提交！请求转发到say.jsp如果你看到下面的情况：</p>
    <p><img src="http://116.img.pp.sohu.com/images/blog/2007/8/17/14/16/1150c69daf3.jpg" border="0" alt="" style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" /></p>
    <p>恭喜你！成功啦～ 可以看到有&nbsp;RMB$ 1,000.00 从affman（a fit foolish man～）的账户转到了liudan的账户上！</p>
    <p><strong>总结：</strong></p>
    <p><strong>基本的Web Services开发步骤清单 </strong></p>
    <p><a><strong>　</strong>　这个清单总结了将一个Java方法发布为Web Service所必须的步骤:</a></p>
    <ul><a></a>
        <li><a>　　1、 检查Java类的方法和默认构造函数确保为public </a></li>
        <li><a>　　2、 增加XFire servlet相关条目到web.xml中 </a></li>
        <li><a>　　3、 创建services.xml，把它放到WEB-INF/classes/META-INF/xfire目录下 </a></li>
        <li><a>　　4、 增加XFire和第三方包到你的Web应用的WEB-INF/lib文件夹中 </a></li>
    </ul>
    <p>嗯～确实不复杂！</p>
    <p><font color="#0000ff">以上步骤均经过亲自测试执行，如有勘误请至mail to： </font><a href="mailto:sweetmoondd@hotmail.com"><font color="#0000ff">sweetmoondd@hotmail.com</font></a><font color="#0000ff">&nbsp;欢迎指教和共同探讨</font></p>
    <p><font size="+0"><strong>以下相关讨论（转自原文<a href="http://www.360doc.com/showweb/0/0/516946.aspx">http://www.360doc.com/showweb/0/0/516946.aspx</a>）</strong></font></p>
    <p><strong>XFire的其他高级特性</strong> </p>
    <p><a>　　XFire的使用可能比较简单，但是在特性和功能性上，它却占据着领导者的位置。下面是它的高级特性:</a></p>
    <ul><a></a>
        <li><a>　　---本地数据绑定支持POJOs(plain-old Java objects)、XMLBeans、JAXB(Java Architecture for XML Binding)、Castor等等。数据绑定说明了Web Services的XML请求和映射到Java对象的XML响应。 </a></li>
        <li><a>　　---使用StAX(Streaming API for XML)处理XML文档。同DOM的基于树和SAX的事件驱动的处理方式相比，StAX使用了拉(pull)机制，它使处理更快速，内存效率更高。 </a></li>
        <li><a>　　---支持多种传输协议，如HTTP、JMS(Java Message Service)和JVM内部传输。 </a></li>
        <li><a>　　---嵌入式，这是XFire的核心功能之一。你可以把这个SOAP引擎嵌入到你的应用中，完全隐藏所有XFire特定引用，同样所有配置都是程序驱动。 </a></li>
        <li><a>　　---丰富的API，它使XFire可高度自定义，允许开发者在不同的阶段截获请求，并且对他们进行处理。 </a></li>
        <li><a>　　---兼容最新的标准例如SOAP1.1(没有加密远程工程调用，或者RPC)和1.2、WSDL1.1、the Web Services Interoperability Organization&rsquo;s Basic Profile 1.0、Web Services Addressing和WS-Security。 </a></li>
    </ul>
    <p><a>　　最重要的是，XFire属于新一代Web Services引擎。不仅仅是营销用语，&ldquo;新一代&rdquo;有一些重要的意义。Apache Axis是第一代Java语言的Web Services引擎，已经成为了所有后来工具的参考标准。在过去的几年里，Axis以及这些其它的工具已经在很多生产环境中进行了实地测试。从中得出的一个关键的问题就是Web Services并不最适合RPC类型的通信。对于性能和效率，面向文档的消息形式是最好的方式。但是Apache Axis和很多其他的Web Services引擎都被设计成了面向RPC的(尽管它们支持文档形式)。现在，整个行业正在开发新一代的SOAP引擎，设计为面向文档的。Apache已经宣布结束旧版本的Axis引擎开发，现在专注于Axis2，现在它的预发布版本是0.95。XFire在今年的2月份发布了它的第一个产品版本(1.0)。它的下一个版本(1.1)仅仅在几个星期之后就进行了发布。</a></p>
    <p><a>　　</a><strong>局限性</strong> </p>
    <p><a>　　XFire有些重要的局限性你应该清楚:</a></p>
    <ul><a></a>
        <li><a>　　---开发Web Services的好的实践是从WSDL开始。大部分的SOAP引擎提供了从WSDL生成服务stub的工具。XFire也提供了这样一个工具。但是它是基于注释(annotations-based)的，因此需要J2SE5.0。对于仍坚持使用J2SE1.4.x的人来说，它不是一个令人拍手叫好的工具，因为我们有很多其他方式来编写客户端，一个就是文章中演示的方式。 </a></li>
        <li><a>　　---附件支持，它将会包含在未来发行的版本中。 </a></li>
        <li><a>　　---易于学习的用户向导。XFire团队在这个方面还有很多工作需要做。 </a></li>
    </ul>
    <p><a>　　<strong>结论</strong></a></p>
    <p><a>　　Java当前的趋势是简化技术的使用。因此，我们正看到一波基于POJO的开发成就。同时，面向服务架构(SOA，Services-oriented architecture)和Web Services已经变成了当前行业的热点话题。XFire正是在这种情况下产生的。它能够使POJO发布为最少的Web Services，而只需要付出最小化的努力。从而，它使希望使用这项技术的初级开发者的学习曲线变得平缓。同时，由于它兼容最新标准和提供了丰富的API，XFire为高级用户提供了更多的大好机会。</a></p>
    <p>版权声明：</p>
    <p>&nbsp;&nbsp;&nbsp; 本文内容为作者经过查阅资料，编码实践，编辑实属原创，仅限学习与个人收藏，为避免制造网络垃圾请误用于商业性的原文转载。如有勘误请至mail to： <a href="mailto:sweetmoondd@hotmail.com"><font color="#0000ff">sweetmoondd@hotmail.com</font></a><font color="#0000ff">&nbsp;</font><font color="#000000"> 期待共同探讨！</font></p>
    <p>参考资料：</p>
    <p><a href="http://www.itlove.net/Article/203/207/2005/2005082532541.html" target="_blank">通过WebService实现Java与.Net互联</a>&nbsp;作者：itlove </p>
    <p>&nbsp;&nbsp;&nbsp; 图文并茂的阐述了WebService相关概念。</p>
    <p><a href="http://www.360doc.com/showweb/0/0/516946.aspx" target="_blank">轻松简单地开发Web Services</a>&nbsp;作者:Shahid Ahmed ;mydeman</p>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;文章语言组织简练明确，是众多资料中表述最确切全面的，很多语言也被我原文转述了，原因是说的很好无须再由本人重新组织语言。可惜也是被转载的。</p>
    <p><a href="http://hi.baidu.com/ecspell/blog/item/315892ef793909edcf1b3e2f.html" target="_blank">利用xfire开发webservice专题[四]</a>&nbsp;作者：MSN:spell_zheng@hotmial.com</p>
    <p>&nbsp;&nbsp;&nbsp; 借鉴了测试客户端的jsp形式实现。</p>
    </li>
    </li>
</ol>
</div>
&nbsp;&nbsp;
          <br/>
          <span style="color:red;">
            <a href="http://kaguvivian.javaeye.com/blog/114665#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 21 Aug 2007 09:14:13 +0800</pubDate>
        <link>http://kaguvivian.javaeye.com/blog/114665</link>
        <guid>http://kaguvivian.javaeye.com/blog/114665</guid>
      </item>
      <item>
        <title>Hibernate生成映射文件及POJO出现的oracle驱动版本问题 </title>
        <author>kaguvivian</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kaguvivian.javaeye.com">kaguvivian</a>&nbsp;
          链接：<a href="http://kaguvivian.javaeye.com/blog/114664" style="color:red;">http://kaguvivian.javaeye.com/blog/114664</a>&nbsp;
          发表时间: 2007年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="item-content">
<p>本人在使用Hibernate生成映射文件及POJO时遇到的问题：&ldquo;org.hibernate.exception.GenericJDBCException: Could not get list of tables from database. Probably a JDBC driver problem. <br />
&rdquo;</p>
<p>版本信息：Hibernate3.1 ；MyEclipse6.0M1； Oracle8。</p>
<p>查看Eclipse workspace\.metadata\.log文件产生如下日志信息：</p>
<p>!ENTRY org.eclipse.core.jobs 4 2 2007-08-13 14:01:59.546<br />
!MESSAGE An internal error occurred during: &quot;Generating Artifacts&quot;.<br />
!STACK 0<br />
org.hibernate.exception.GenericJDBCException: Could not get list of tables from database. Probably a JDBC driver problem. <br />
Configured schema:ALDB<br />
Configured catalog:null<br />
Available schemas:<br />
&nbsp; ADAMS<br />
&nbsp; ALDB<br />
&nbsp; AURORA$JIS$UTILITY$<br />
&nbsp; AURORA$ORB$UNAUTHENTICATED<br />
&nbsp; BLAKE<br />
&nbsp; CLARK<br />
&nbsp; CTXSYS<br />
&nbsp; DBSNMP<br />
&nbsp; JONES<br />
&nbsp; MDSYS<br />
&nbsp; MTSSYS<br />
&nbsp; ORDPLUGINS<br />
&nbsp; ORDSYS<br />
&nbsp; OSE$HTTP$ADMIN<br />
&nbsp; OUTLN<br />
&nbsp; SCOTT<br />
&nbsp; SYS<br />
&nbsp; SYSTEM<br />
Available catalogs:</p>
<p>&nbsp;at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)<br />
&nbsp;at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)<br />
&nbsp;at org.hibernate.cfg.reveng.dialect.JDBCMetaDataDialect$1.handleSQLException(JDBCMetaDataDialect.java:40)<br />
&nbsp;at org.hibernate.cfg.reveng.dialect.ResultSetIterator.next(ResultSetIterator.java:62)<br />
&nbsp;at org.hibernate.cfg.reveng.JDBCReader.processTables(JDBCReader.java:433)<br />
&nbsp;at org.hibernate.cfg.reveng.JDBCReader.readDatabaseSchema(JDBCReader.java:67)<br />
&nbsp;at com.genuitec.eclipse.hibernate.wizards.MEJDBCMetaDataConfiguration$1.readDatabaseSchema(MEJDBCMetaDataConfiguration.java:104)<br />
&nbsp;at org.hibernate.cfg.JDBCBinder.readFromDatabase(JDBCBinder.java:89)<br />
&nbsp;at com.genuitec.eclipse.hibernate.wizards.MEJDBCMetaDataConfiguration.readFromJDBC(MEJDBCMetaDataConfiguration.java:137)<br />
&nbsp;at com.genuitec.eclipse.hibernate.wizards.GenerateArtifactsJob$7.execute(GenerateArtifactsJob.java:827)<br />
&nbsp;at org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:56)<br />
&nbsp;at org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:89)<br />
&nbsp;at com.genuitec.eclipse.hibernate.wizards.GenerateArtifactsJob.buildConfiguration(GenerateArtifactsJob.java:811)<br />
&nbsp;at com.genuitec.eclipse.hibernate.wizards.GenerateArtifactsJob.run(GenerateArtifactsJob.java:381)<br />
&nbsp;at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)<br />
Caused by: java.sql.SQLException: Invalid column name<br />
&nbsp;at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)<br />
&nbsp;at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210)<br />
&nbsp;at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:273)<br />
&nbsp;at oracle.jdbc.driver.OracleStatement.get_column_index(OracleStatement.java:4383)<br />
&nbsp;at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:667)<br />
&nbsp;at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:1374)<br />
&nbsp;at org.hibernate.cfg.reveng.dialect.JDBCMetaDataDialect$1.convertRow(JDBCMetaDataDialect.java:33)<br />
&nbsp;at org.hibernate.cfg.reveng.dialect.ResultSetIterator.next(ResultSetIterator.java:59)<br />
&nbsp;... 11 more</p>
<p>解决思路：按照提示信息描述的Probably a JDBC driver problem.开始更换OracleJDBCDriver classess12的各种版本，由于数据库版本为8使用8的驱动明显不行，逐渐升高版本至(10.2.0.3) 问题便解决了。可以到这个地址下载最新的Oracle驱动程序http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc_10201.html</p>
<div class="clear"></div>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://kaguvivian.javaeye.com/blog/114664#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 21 Aug 2007 09:11:00 +0800</pubDate>
        <link>http://kaguvivian.javaeye.com/blog/114664</link>
        <guid>http://kaguvivian.javaeye.com/blog/114664</guid>
      </item>
  </channel>
</rss>