﻿<?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-过河卒-随笔分类-Java/Java框架</title><link>http://www.blogjava.net/ponzmd/category/25498.html</link><description>&lt;i&gt;平凡而简单的人一个，无权无势也无牵无挂。一路厮杀，只进不退，死而后已，岂不爽哉！&lt;br/&gt;
收起对“车”日行千里的羡慕；收起对“马”左右逢缘的感叹；目标记在心里面，向前进。一次一步，一步一脚印，跬步千里。&lt;br/&gt;
这个角色很适合现在的我。&lt;/i&gt; </description><language>zh-cn</language><lastBuildDate>Thu, 03 Apr 2008 16:35:43 GMT</lastBuildDate><pubDate>Thu, 03 Apr 2008 16:35:43 GMT</pubDate><ttl>60</ttl><item><title>Nutch爬虫的工作过程</title><link>http://www.blogjava.net/ponzmd/archive/2008/04/02/190452.html</link><dc:creator>过河卒</dc:creator><author>过河卒</author><pubDate>Wed, 02 Apr 2008 12:53:00 GMT</pubDate><guid>http://www.blogjava.net/ponzmd/archive/2008/04/02/190452.html</guid><wfw:comment>http://www.blogjava.net/ponzmd/comments/190452.html</wfw:comment><comments>http://www.blogjava.net/ponzmd/archive/2008/04/02/190452.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ponzmd/comments/commentRss/190452.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ponzmd/services/trackbacks/190452.html</trackback:ping><description><![CDATA[<p>再来1号问题：爬虫的工作过程</p> <p>来个图：</p> <p><a href="http://www.ihooyo.com/wp-content/uploads/2008/04/workflow.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="333" alt="workflow" src="http://www.ihooyo.com/wp-content/uploads/2008/04/workflow-thumb.png" width="494" border="0"></a></p> <p>动作分解： <br>&lt;传言看源代码理解的更细致，不过偶没看，偶是根据文档和下午的操作总结的，错了请指正。&gt;</p> <p>1.创建空数据库Webdb：</p> <p>2.向Webdb中注入入口攫取地址：</p> <p>3.根据Webdb中数据生成fetchlist，并生成相应的segment。</p> <p>4.根据fetchlist攫取内容（fetched content）。</p> <p>5.根据获取内容更新Webdb</p> <p>6.重复执行3-5.这个过程<a href="http://blog.donews.com/52se/archive/2006/05/16/871487.aspx" target="_blank">52se</a>称为“产生/抓取/更新”循环。</p> <p>7.完成上面的循环后，根据Webdb中信息，如网页评分和链接信息等，再次更新segment.</p> <p>8.索引被攫取的页面，生成链接。</p> <p>9.去除indexes中重复的内容和链接。</p> <p>10.依靠indexes合成单一的index文件。大功告成。</p> <p>上面这些步骤都可以对应到Nutch给我们提供的CrawlTool中的命令上。</p> <p>爬虫忙完了，有了数据，我们就可以利用Nutch的search部分功能来查找内容了。</p> <p>&nbsp;</p> <p>参考：<a href="http://blog.donews.com/52se/archive/2006/05/16/871487.aspx">Nutch爬虫工作流程及文件格式详细分析</a></p> <h4><a href="http://today.java.net/pub/a/today/2006/01/10/introduction-to-nutch-1.html" target="_blank">Introduction to Nutch, Part 1: Crawling</a></h4><img src ="http://www.blogjava.net/ponzmd/aggbug/190452.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ponzmd/" target="_blank">过河卒</a> 2008-04-02 20:53 <a href="http://www.blogjava.net/ponzmd/archive/2008/04/02/190452.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Nutch的数据存储结构。</title><link>http://www.blogjava.net/ponzmd/archive/2008/04/02/190451.html</link><dc:creator>过河卒</dc:creator><author>过河卒</author><pubDate>Wed, 02 Apr 2008 12:52:00 GMT</pubDate><guid>http://www.blogjava.net/ponzmd/archive/2008/04/02/190451.html</guid><wfw:comment>http://www.blogjava.net/ponzmd/comments/190451.html</wfw:comment><comments>http://www.blogjava.net/ponzmd/archive/2008/04/02/190451.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ponzmd/comments/commentRss/190451.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ponzmd/services/trackbacks/190451.html</trackback:ping><description><![CDATA[<p>昨天睡觉前，总结了感兴趣的3个问题，现在来回顾一下</p> <p>1.爬虫工作的过程？</p> <p>2.爬虫获取数据后，数据的存储结构？</p> <p>3.数据如何索引成Lucene设定的索引格式？</p> <p>上午干工作耽误了，下午得闲，看点资料。试简单总结一下上面几个问题的。</p> <p>先回答2号问题，数据的存储结构好了。</p> <p>Nutch把爬虫找回来的资料做成了放在一个文件夹里面，美其名曰Web database。其实里面分别就四个文件夹了事。依次道来：</p> <ul> <li>crawldb：存放需要抓取的的超链接地址；  <li>segments：存放依据crawldb中提供的地址抓取到的内容信息。segments中的每个子文件夹存储fetcher根据crawldb抓取一次所得的内容。这些抓取的内容包括有content、crawl_fetch、crawl_generate、crawl_parse、parse_data、parse_text。其中content是抓取下来的网页内容；crawl_generate根据crawldb最初生成；crawl_fetch、content在抓取时生成；crawl_parse、parse_data、parse_text在解析抓取的数据文件时生成。其中crawl_generate、crawl_fetch和crawl_parse是crawldb的部分url数据，它们格式一样，不同的是抓取时间、状态、签名等有所变化。  <li>Index和indexes：Index是最终我们所需要得到的东西，而Index就是通过indexes合并的到的。  <li>Linkdb：linkdb中存放的是所有超链接及其每个链接的连入地址和锚文件。 </li></ul> <p>好了这个存储结构的问题完成了。</p> <p>抽空先写这么多，呆会有时间在继续。</p><img src ="http://www.blogjava.net/ponzmd/aggbug/190451.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ponzmd/" target="_blank">过河卒</a> 2008-04-02 20:52 <a href="http://www.blogjava.net/ponzmd/archive/2008/04/02/190451.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Nutch0.9基本配置</title><link>http://www.blogjava.net/ponzmd/archive/2008/04/01/190147.html</link><dc:creator>过河卒</dc:creator><author>过河卒</author><pubDate>Tue, 01 Apr 2008 09:11:00 GMT</pubDate><guid>http://www.blogjava.net/ponzmd/archive/2008/04/01/190147.html</guid><wfw:comment>http://www.blogjava.net/ponzmd/comments/190147.html</wfw:comment><comments>http://www.blogjava.net/ponzmd/archive/2008/04/01/190147.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ponzmd/comments/commentRss/190147.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ponzmd/services/trackbacks/190147.html</trackback:ping><description><![CDATA[<p>下午配置成功了Nutch0.9.截图记录一下。</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/ponzmd/WindowsLiveWriter/Nutch0.9_F18A/nutchsuccess_2.jpg"><img style="border: 0px none ;" alt="nutchsuccess" src="http://www.blogjava.net/images/blogjava_net/ponzmd/WindowsLiveWriter/Nutch0.9_F18A/nutchsuccess_thumb.jpg" align="left" border="0" height="170" width="328" /></a> </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>网络上面介绍这个配置的比较多，我就不重复劳动了。</p>
<p>推荐文档如下：Nutch Version 0.8x tutorial ，还有就是这里的篇<a href="http://hi.baidu.com/jgs80/blog/item/a248fffaf7d3f2dab48f3180.html" target="_blank">日志</a>。</p>
<p>我在这里记录一下遇到的几个错误和解决办法，大家可能有用。</p>
<p>如执行如下命令：<br />
./nutch crawl ../urls.txt&nbsp; -dir ../ihooyo&nbsp; -depth 5 -topN 100<br />
参数说明：<br />
-url 就是刚才我们创建的url文件,存放我们要抓取的网址<br />
-dir 指定抓取内容所存放的目录，如上存在mydir中<br />
-threads 指定并发的线程数<br />
-depth 表示以要抓取网站顶级网址为起点的爬行深度<br />
-topN 表示获取前多少条记录，可省</p>
<p>可能错误1：</p>
<p>Generator: jobtracker is 'local', generating exactly one partition.<br />
Generator: 0 records selected for fetching, exiting ...<br />
Stopping at depth=0 - no more URLs to fetch.<br />
No URLs to fetch - check your seed list and URL filters.<br />
crawl finished: sina5 </p>
<p>说明：指定要抓取的网址(url.txt)经过(crawl-urlfilters.xml)过滤后，已经没有可抓取对象了，检查两者的匹配即可。</p>
<p>可能错误2：</p>
<p>Dedup: starting<br />
Dedup: adding indexes in: ../ihooyo/indexes<br />
Exception in thread "main" java.io.IOException: Job failed!<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:604)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.nutch.indexer.DeleteDuplicates.dedup(DeleteDuplicates.java:439)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.nutch.crawl.Crawl.main(Crawl.java:135) </p>
<p>说明：一般为./conf/nutch-site.xml文件配置有错误。请参考如下配置修改。<br />
[xml]<br />
&lt;property&gt;<br />
&lt;name&gt;http.agent.name&lt;/name&gt;<br />
&lt;value&gt;ihooyo&lt;/value&gt;<br />
&lt;description&gt;&lt;/description&gt;<br />
&lt;/property&gt;<br />
&lt;property&gt;<br />
&lt;name&gt;http.agent.description&lt;/name&gt;<br />
&lt;value&gt;apersonblog&lt;/value&gt;<br />
&lt;description&gt;&lt;/description&gt;<br />
&lt;/property&gt;<br />
&lt;property&gt;<br />
&lt;name&gt;http.agent.url&lt;/name&gt;<br />
&lt;value&gt;www.ihooyo.com&lt;/value&gt;<br />
&lt;description&gt;&lt;/description&gt;<br />
&lt;/property&gt;<br />
&lt;property&gt;<br />
&lt;name&gt;http.agent.email&lt;/name&gt;<br />
&lt;value&gt;pjuneye@qq.com&lt;/value&gt;<br />
&lt;description&gt;&lt;/description&gt;<br />
&lt;/property&gt;<br />
[/xml]<br />
这种配置错误，在log日志中可找到提示。</p>
<p>可能错误3：</p>
<p>Injector: Converting injected urls to crawl db entries.<br />
Exception in thread "main" java.io.IOException: Job failed!<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:604)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.nutch.crawl.Injector.inject(Injector.java:162)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.nutch.crawl.Crawl.main(Crawl.java:115) </p>
<p>说明：一般为crawl-urlfilters.txt中配置问题，比如过滤条件应为<br />
+^<a href="http://www.ihooyo.com">http://www.ihooyo.com</a> ,而配置成了 <a href="http://www.ihooyo.com">http://www.ihooyo.com</a> 这样的情况就引起如上错误。</p>
<p>好了写完了。</p>
<img src ="http://www.blogjava.net/ponzmd/aggbug/190147.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ponzmd/" target="_blank">过河卒</a> 2008-04-01 17:11 <a href="http://www.blogjava.net/ponzmd/archive/2008/04/01/190147.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Nutch初接触</title><link>http://www.blogjava.net/ponzmd/archive/2008/04/01/190136.html</link><dc:creator>过河卒</dc:creator><author>过河卒</author><pubDate>Tue, 01 Apr 2008 08:50:00 GMT</pubDate><guid>http://www.blogjava.net/ponzmd/archive/2008/04/01/190136.html</guid><wfw:comment>http://www.blogjava.net/ponzmd/comments/190136.html</wfw:comment><comments>http://www.blogjava.net/ponzmd/archive/2008/04/01/190136.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ponzmd/comments/commentRss/190136.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ponzmd/services/trackbacks/190136.html</trackback:ping><description><![CDATA[<p>晚上花了将近两个小时的时间,看了网络上一些关于Nutch的介绍.<br>搞明白的几个问题:</p> <p>1.Nutch到底是什么?</p> <p>Nutch是一个开源的Java语言实现的搜索引擎。它通过完整功能的搜索系统。</p> <p>2.Nutch和Lucene到底是什么关系?两者如何取舍?</p> <p>Nutch基于Lucene，Lucene为Nutch提供文本索引和搜索API。两者的取舍问题在于Lucene不能够为你抓取数据，所以如果在有数据源的情况下最好的方式是使用Lucene API来建立索引，完成搜索。如果需要抓取数据的话，那自然是选择Nutch为好。</p> <p>3.Nutch的基本安装步骤?</p> <p>这个问题有官方文档。在这里。</p> <p>PS:似乎网络Nutch上最多的帖子就是关于这个的.其中比较有意思的就是摆脱Cgywin的一些方法,比如利用window批处理或者利用ant.个人还是觉得ant更通用.</p> <p>4.Nutch的基本组成?</p> <p>Nutch基本上两部分组成：抓取部分和搜索部分。抓取程序抓取页面并将抓取回来的数据做成反向索引；搜索程序则将反向索引搜索回答用户的请求。两者的关联部分在于索引。<br>具体内容还需要仔细看文档和介绍.</p> <p>5.Nutch文档集中地?<br><a href="http://wiki.apache.org/nutch/">http://wiki.apache.org/nutch/</a></p> <p>补充完成，今日继续。愚人节快乐!</p><img src ="http://www.blogjava.net/ponzmd/aggbug/190136.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ponzmd/" target="_blank">过河卒</a> 2008-04-01 16:50 <a href="http://www.blogjava.net/ponzmd/archive/2008/04/01/190136.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ZT]Java版大腕对白</title><link>http://www.blogjava.net/ponzmd/archive/2008/03/31/189787.html</link><dc:creator>过河卒</dc:creator><author>过河卒</author><pubDate>Mon, 31 Mar 2008 07:21:00 GMT</pubDate><guid>http://www.blogjava.net/ponzmd/archive/2008/03/31/189787.html</guid><wfw:comment>http://www.blogjava.net/ponzmd/comments/189787.html</wfw:comment><comments>http://www.blogjava.net/ponzmd/archive/2008/03/31/189787.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ponzmd/comments/commentRss/189787.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ponzmd/services/trackbacks/189787.html</trackback:ping><description><![CDATA[<p>注：原文不知出处，群里转载至此。 <p>仿《大腕》经典对白：  <p>一定要找那最流行的框架，<br>用功能最强大编辑器，<br>做就要做最复杂的系统，<br>轻量级的绝对不行，<br>框架最简单也得是ＳＰＲＩＮＧ，<br>什么ＥＪＢ啊，ＨＩＢＥＲＮＡＴＥ啊，ＳＥＡＭ啊，能用的全都得用上，<br>表现层要可配置、持久层要可替换，<br>程序最好能用一万年，<br>客户一见面，甭管有事没事，<br>都得问人家：您准备换框架不？<br>系统还得能够集群<br>访问量再小也得同时开１０几台服务器<br>一天２４小时在线<br>火星撞地球了都能提供服务<br>服务器上跑得都是weblogic、websphere<br>你要用一jboss，都不好意思跟人家打招呼<br>你说这系统，得做多长时间？<br>（怎么地也得５年吧？）<br>５年？那是一期工程，<br>１０年起，<br>你得揣摩老板的心理，<br>愿意花５年开发一套系统的老板，<br>根本就不在乎再多等５年，<br>什么是软件工程你知道么？<br>软件工程就是，搞什么都不用最好的，用最复杂的<br>所以我们口号就是：<br>不求最好，但求最复杂。</p><img src ="http://www.blogjava.net/ponzmd/aggbug/189787.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ponzmd/" target="_blank">过河卒</a> 2008-03-31 15:21 <a href="http://www.blogjava.net/ponzmd/archive/2008/03/31/189787.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>排序：堆排序算法</title><link>http://www.blogjava.net/ponzmd/archive/2007/10/30/156979.html</link><dc:creator>过河卒</dc:creator><author>过河卒</author><pubDate>Tue, 30 Oct 2007 08:51:00 GMT</pubDate><guid>http://www.blogjava.net/ponzmd/archive/2007/10/30/156979.html</guid><wfw:comment>http://www.blogjava.net/ponzmd/comments/156979.html</wfw:comment><comments>http://www.blogjava.net/ponzmd/archive/2007/10/30/156979.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ponzmd/comments/commentRss/156979.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ponzmd/services/trackbacks/156979.html</trackback:ping><description><![CDATA[<p><strong><font color="#ff8040">这是昨天朋友在面试过程中，遇到的笔试问题，帮忙解决并自我学习之。主要是堆排序里面涉及的基本概念和排序过程。比如什么是堆以及利用堆排序的基本思<br></font></strong><strong><font color="#ff8040">路等。数据结构里面知识基本上算是归还了老师了，希望这个排序能给自己提个醒。</font></strong></p> <p><strong>基本思想：</strong><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 堆排序是一树形选择排序，在排序过程中，将R[1..N]看成是一颗完全二叉树的顺序存储结构，利用完全二叉树中双亲结点和孩子结点之间的内在关系来选择最小的元素。</p> <p><strong>堆的定义:</strong></p> <p> N个元素的序列K1,K2,K3,...,Kn.称为堆，当且仅当该序列满足特性：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ki≤K2i Ki ≤K2i+1(1≤ I≤ [N/2])<br><img height="162" src="http://www.j2medev.com/Article/UploadFiles/200705/20070518075502934.gif" width="559"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 堆实质上是满足如下性质的完全二叉树：树中任一非叶子结点的关键字均大于等于其孩子结点的关键字。例如序列10,15,56,25,30,70就是一个堆，它对应的完全二叉树如上图所示。这种堆中根结点（称为堆顶）的关键字最小，我们把它称为小根堆。反之，若完全二叉树中任一非叶子结点的关键字均大于等于其孩子的关键字，则称之为大根堆。</p> <p><strong>排序过程</strong>：<br><br>堆排序正是利用小根堆（或大根堆）来选取当前无序区中关键字小（或最大）的记录实现排序的。我们不妨利用大根堆来排序。每一趟排序的基本操作是：将当前无序区调整为一个大根堆，选取关键字最大的堆顶记录，将它和无序区中的最后一个记录交换。这样，正好和直接选择排序相反，有序区是在原记录区的尾部形成并逐步向前扩大到整个记录区。 <p><strong>小根堆排序实现：</strong> <p><em>HeapSort.java</em><pre class="csharpcode">package javasort;

<span class="rem">// 参考：http://blog.csdn.net/EmaYoung/archive/2007/09/29/1806228.aspx</span>
<span class="kwrd">public</span> <span class="kwrd">class</span> HeapSort {

    <span class="rem">//调整无序序列为大根堆 s 为数组的起始下标，m为终止下标</span>
    <span class="kwrd">public</span> <span class="kwrd">void</span> HeapAdjust(<span class="kwrd">int</span>[] arr, <span class="kwrd">int</span> s, <span class="kwrd">int</span> m) {
        <span class="kwrd">int</span> temp = arr[s];
        <span class="kwrd">for</span> (<span class="kwrd">int</span> j = 2 * s + 1; j &lt; m; j = j * 2 + 1) {
            <span class="kwrd">if</span> (j + 1 &lt; m &amp;&amp; arr[j] &gt; arr[j + 1]) {
                ++j;
            }
            <span class="kwrd">if</span> (temp &lt; arr[j]) {
                <span class="kwrd">break</span>;
            }
            arr[s] = arr[j];
            s = j;
            arr[s] = temp;
        }
    }

    <span class="rem">//根据大根堆，对堆排序</span>
    <span class="kwrd">public</span> <span class="kwrd">void</span> HeapSorting(<span class="kwrd">int</span>[] arr) {
        <span class="rem">//把顺序表构建成为一个大根堆</span>
        <span class="kwrd">for</span> (<span class="kwrd">int</span> i = arr.length / 2 - 1; i &gt;= 0; --i) {
            HeapAdjust(arr, i, arr.length);
        }

        <span class="kwrd">for</span> (<span class="kwrd">int</span> j = arr.length - 1; j &gt; 0; --j) {
            <span class="kwrd">int</span> temp = arr[0];
            arr[0] = arr[j];
            arr[j] = temp;
            HeapAdjust(arr, 0, j);
        }
    }
}</pre><pre class="csharpcode"><em>Main.java</em></pre><pre class="csharpcode">
package javasort;
<span class="kwrd">public</span> <span class="kwrd">class</span> Main {

    <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">void</span> main(String[] args) {
        <span class="kwrd">int</span>[] arry_int = {49, 38, 65, 97, 76, 13, 27, 55};
        show(<span class="str">"数组排序前"</span>, arry_int);
        System.<span class="kwrd">out</span>.println();
        HeapSort hsort = <span class="kwrd">new</span> HeapSort();
        hsort.HeapSorting(arry_int);
        show(<span class="str">"数组排序后"</span>, arry_int);
    }

    <span class="kwrd">private</span> <span class="kwrd">static</span> <span class="kwrd">void</span> show(String message, <span class="kwrd">int</span>[] array) {
        System.<span class="kwrd">out</span>.println(<span class="str">"&gt;&gt;&gt;"</span> + message + <span class="str">"&lt;&lt;&lt;"</span>);
        <span class="kwrd">for</span> (<span class="kwrd">int</span> i = 0; i &lt; array.length; i++) {
            System.<span class="kwrd">out</span>.print(<span class="str">"  "</span> + array[i]);
        }
    }
}</pre>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<pre class="csharpcode">执行结果：</pre>
<p>&gt;&gt;&gt;数组排序前&lt;&lt;&lt;<br>&nbsp; 49&nbsp; 38&nbsp; 65&nbsp; 97&nbsp; 76&nbsp; 13&nbsp; 27&nbsp; 55<br>&gt;&gt;&gt;数组排序后&lt;&lt;&lt;<br>&nbsp; 97&nbsp; 76&nbsp; 65&nbsp; 55&nbsp; 49&nbsp; 38&nbsp; 27&nbsp; 13
<p>&nbsp;</p>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style><img src ="http://www.blogjava.net/ponzmd/aggbug/156979.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ponzmd/" target="_blank">过河卒</a> 2007-10-30 16:51 <a href="http://www.blogjava.net/ponzmd/archive/2007/10/30/156979.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>金蝶OperaMasks框架的宣传视频</title><link>http://www.blogjava.net/ponzmd/archive/2007/09/24/147895.html</link><dc:creator>过河卒</dc:creator><author>过河卒</author><pubDate>Mon, 24 Sep 2007 13:19:00 GMT</pubDate><guid>http://www.blogjava.net/ponzmd/archive/2007/09/24/147895.html</guid><wfw:comment>http://www.blogjava.net/ponzmd/comments/147895.html</wfw:comment><comments>http://www.blogjava.net/ponzmd/archive/2007/09/24/147895.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/ponzmd/comments/commentRss/147895.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ponzmd/services/trackbacks/147895.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 整个视频采用黑客帝国作为背景，穿插介绍了Web开发的简要历史。后面三分钟对OperaMasks做了些王婆买瓜式的肯定，看起来还不错。<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp; 可以<a target="_blank" href="http://www.operamasks.org/downloads/avi/aom-liveshow/">点击这里观看</a><br />
<br />
<p align="center">
<br />
</p>
<img src ="http://www.blogjava.net/ponzmd/aggbug/147895.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ponzmd/" target="_blank">过河卒</a> 2007-09-24 21:19 <a href="http://www.blogjava.net/ponzmd/archive/2007/09/24/147895.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AXIS1.4 DOC 阅读笔记</title><link>http://www.blogjava.net/ponzmd/archive/2007/09/02/142045.html</link><dc:creator>过河卒</dc:creator><author>过河卒</author><pubDate>Sun, 02 Sep 2007 03:51:00 GMT</pubDate><guid>http://www.blogjava.net/ponzmd/archive/2007/09/02/142045.html</guid><wfw:comment>http://www.blogjava.net/ponzmd/comments/142045.html</wfw:comment><comments>http://www.blogjava.net/ponzmd/archive/2007/09/02/142045.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ponzmd/comments/commentRss/142045.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ponzmd/services/trackbacks/142045.html</trackback:ping><description><![CDATA[<div class="basetop"><span style="font-size: 12pt"><span style="font-size: 10pt">说明：这部分只要是Axis1.4Doc的摘要，只截取了我不明白和感兴趣的部分。可以当作一个快速索引和入门资料来看，如有不明白可直接查看Axis1.4的发布文档。<br />
欢迎转载，但是请注明出处，转载地址：</span></span><a href="http://www.blogjava.net/ponzmd/articles/142045.html">http://www.blogjava.net/ponzmd/articles/142045.html</a></div>
<div class="basetext" id="base">
<ul>
    <li class="col" id="FMFreemind_Link_1832344794FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 167%; color: #000000">AXIS1.4 DOC 阅读笔记</span> </span></span>
    <ul class="subexp"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 150%; color: #0033ff">
        <li class="col" id="FM_FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 150%; color: #0033ff">安装介绍</span> </span></span>
        <ul class="subexp">
            <li class="col" id="FMFreemind_Link_437987139FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 133%; color: #00b439">作为单独WebApplication安装</span> </span></span>
            <ul class="subexp">
                <li class="basic" id="FMFreemind_Link_88186082FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">Step1:拷贝AXIS工程/webapps/axis到相应web服务器的部署目录即可</span> </span></span>
                <li class="basic" id="FMFreemind_Link_954893485FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">Step2:启动web服务器.访问: http://127.0.0.1:8080/axis/ 和 http://localhost:8080/axis/happyaxis.jsp ;如不正常改正错误即可</span> </span></span>
                <li class="basic" id="FMFreemind_Link_1076718199FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">Step3:Test a SOAP Endpoint:http://localhost:8080/axis/services/Version?method=getVersion</span> </span></span>
                <li class="basic" id="FMFreemind_Link_369861454FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">Step4:Test a JWS Endpoint http://localhost:8080/axis/EchoHeaders.jws?method=list .</span> </span></span></li>
            </ul>
            <li class="col" id="FMFreemind_Link_85845748FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 133%; color: #00b439">集成AXIS</span> </span></span>
            <ul class="subexp">
                <li class="basic" id="FMFreemind_Link_686567562FM"><span style="font-size: 117%; color: #990000"><span style="font-size: 12pt"><span style="font-size: 10pt">1.Add axis.jar, wsdl.jar, saaj.jar, jaxrpc.jar and the other dependent libraries to your WAR file. </span></span></span>
                <li class="basic" id="FMFreemind_Link_1120083574FM"><span style="font-size: 117%; color: #990000"><span style="font-size: 12pt"><span style="font-size: 10pt">2.Copy all the Axis Servlet declarations and mappings from axis/WEB-INF/web.xml and add them to your own web.xml </span></span></span>
                <li class="basic" id="FMFreemind_Link_643444289FM"><span style="font-size: 117%; color: #990000"><span style="font-size: 12pt"><span style="font-size: 10pt">3.Build and deploy your webapp. </span></span></span>
                <li class="basic" id="FMFreemind_Link_604457264FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">4.Run the Axis AdminClient against your own webapp, instead of Axis, by changing the URL you invoke it with</span> </span></span></li>
            </ul>
            <li class="col" id="FMFreemind_Link_1203712373FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 133%; color: #00b439">遗留问题(没有配置成功)</span> </span></span>
            <ul class="subexp">
                <li class="basic" id="FMFreemind_Link_63241008FM"><span style="font-size: 12pt"><span style="font-size: 10pt">&nbsp;<img alt="" src="http://www.blogjava.net/CuteSoft_Client/CuteEditor/images/emquestion.gif" align="absMiddle" border="0" /> <span style="font-size: 117%; color: #990000">如何配置使用SOAPMonitor?</span> </span></span></li>
            </ul>
            <li class="col" id="FMFreemind_Link_42340717FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 133%; color: #00b439">注意事项</span> </span></span>
            <ul class="subexp">
                <li class="basic" id="FMFreemind_Link_1890513282FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">配置Classpath一定要加入所有的Jar包，少一个都会错</span> </span></span></li>
            </ul>
            </li>
        </ul>
        </span></span></span>
        <li class="col"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 150%; color: #0033ff">用户向导</span> </span></span>
        <ul class="subexp">
            <li class="col" id="FMFreemind_Link_524609596FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 133%; color: #00b439">什么是AXIS</span> </span></span>
            <ul class="subexp">
                <li class="basic" id="FMFreemind_Link_219235586FM"><span style="font-size: 117%; color: #990000"><span style="font-size: 12pt"><span style="font-size: 10pt">AXIS: Apache EXtensible Interaction System </span></span></span></li>
            </ul>
            <li class="col" id="FMFreemind_Link_184843734FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 133%; color: #00b439">AXIS包括什么?</span> </span></span>
            <ul class="subexp">
                <li class="basic" id="FMFreemind_Link_38320876FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">a SOAP engine -- a framework for constructing SOAP processors such as clients, servers, gateways</span> </span></span>
                <li class="basic" id="FMFreemind_Link_447852422FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">a simple stand-alone server</span> </span></span>
                <li class="basic" id="FMFreemind_Link_1184403192FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">a server which plugs into servlet engines such as Tomcat</span> </span></span>
                <li class="basic" id="FMFreemind_Link_894798058FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">extensive support for the Web Service Description Language (WSDL)</span> </span></span>
                <li class="basic" id="FMFreemind_Link_1955907269FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">emitter tooling that generates Java classes from WSDL</span> </span></span>
                <li class="basic" id="FMFreemind_Link_1251637426FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">some sample programs,anda tool for monitoring TCP/IP packets</span> </span></span></li>
            </ul>
            <li class="col" id="FMFreemind_Link_1604054239FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 133%; color: #00b439">使用AXIS</span> </span></span>
            <ul class="subexp">
                <li class="col" id="FMFreemind_Link_359920401FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">部署WebService</span> </span></span>
                <ul class="subexp">
                    <li class="basic" id="FMFreemind_Link_509269383FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #111111">方式1：JWS：将需要部署的WebService的源文件改扩展名.java为.jws,将其至于工程的根目录下面，发布即告完成。需要注意的是：要部署的文件只能使用默认包。</span> </span></span>
                    <li class="basic" id="FMFreemind_Link_1560056517FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #111111">方式2：WSDD：编写WSDD文件，通过执行org.apache.axis.client.AdminClient来部署。也可以通过此类撤销已部署的WebService服务。</span> </span></span>
                    <li class="col" id="FMFreemind_Link_1640318112FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 100%; color: #111111">配置WSDD，通过org.apache.axis.client.AdminClient来部署</span> </span></span>
                    <ul class="subexp">
                        <li class="basic" id="FMFreemind_Link_385384160FM"><span style="color: #111111"><span style="font-size: 12pt"><span style="font-size: 10pt">WSDD: Web Service Deployment Descriptor </span></span></span>
                        <li class="basic" id="FMFreemind_Link_334139689FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #111111">基本配置：
                        <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">&lt;</span><span style="color: #800000">deployment&nbsp;</span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://xml.apache.org/axis/wsdd/"</span><span style="color: #ff0000">&nbsp;xmlns:java</span><span style="color: #0000ff">="http://xml.apache.org/axis/wsdd/providers/java"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">service&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="MyService"</span><span style="color: #ff0000">&nbsp;provider</span><span style="color: #0000ff">="java:RPC"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="className"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="samples.userguide.example3.MyService"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="allowedMethods"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="*"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">service</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">deployment</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br />
                        <img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
                        </span></span></span>
                        <li class="basic"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #111111">常用配置：配置JavaBean 客户端代码：
                        <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">QName&nbsp;qn&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QName(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">urn:BeanService</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Order</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;);&nbsp;call.registerTypeMapping(Order.</span><span style="color: #0000ff">class</span><span style="color: #000000">,&nbsp;qn,&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;org.apache.axis.encoding.ser.BeanSerializerFactory(Order.</span><span style="color: #0000ff">class</span><span style="color: #000000">,&nbsp;qn),&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;org.apache.axis.encoding.ser.BeanDeserializerFactory(Order.</span><span style="color: #0000ff">class</span><span style="color: #000000">,&nbsp;qn));&nbsp;</span></div>
                        WSDD文件：
                        <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">&lt;</span><span style="color: #800000">beanMapping&nbsp;</span><span style="color: #ff0000">qname</span><span style="color: #0000ff">="myNS:Order"</span><span style="color: #ff0000">&nbsp;xmlns:myNS</span><span style="color: #0000ff">="urn:BeanService"</span><span style="color: #ff0000">&nbsp;languageSpecificType</span><span style="color: #0000ff">="java:samples.userguide.example5.Order"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
                        <img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
                        </span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #111111">扩展配置：参照《Reference Material 》</span> </span></span></li>
                    </ul>
                    </li>
                </ul>
                <li class="col" id="FMFreemind_Link_492500564FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">访问WebService</span> </span></span>
                <ul class="subexp">
                    <li class="col" id="FMFreemind_Link_1922595498FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #111111">编写服务访问客户端，并执行之（必要步骤，example3为例）</span> </span></span>
                    <ul class="subexp">
                        <li class="basic" id="FMFreemind_Link_322174555FM"><span style="color: #111111"><span style="font-size: 12pt"><span style="font-size: 10pt">Step1：获取服务的访问地址：
                        <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">String&nbsp;endpointURL&nbsp;＝&nbsp;&#8220;http:</span><span style="color: #008000">//</span><span style="color: #008000">localhost:8080/axis/services/MyService";&nbsp;</span></div>
                        </span></span></span><span style="color: #111111"><span style="font-size: 12pt"><span style="font-size: 10pt">&nbsp;</span></span></span>
                        <li class="basic"><span style="color: #111111"><span style="font-size: 12pt"><span style="font-size: 10pt">&nbsp;</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #111111">Step2：构建Service 和 Call对象：
                        <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;Service&nbsp;service&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Service();&nbsp;Call&nbsp;call&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(Call)&nbsp;service.createCall();&nbsp;</span></div>
                        </span></span></span>
                        <li class="basic"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #111111">Step3：确定访问目标：
                        <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">call.setTargetEndpointAddress(&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;java.net.URL(endpointURL)&nbsp;);&nbsp;call.setOperationName(&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QName(</span><span style="color: #000000">"</span><span style="color: #000000">http://example3.userguide.samples</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">serviceMethod</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;);&nbsp;</span></div>
                        </span></span></span>
                        <li class="basic"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #111111">Step4：(可选) 配置参数类型：
                        <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;call.addParameter(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">arg1</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;XMLType.XSD_STRING,&nbsp;ParameterMode.IN);&nbsp;call.setReturnType(&nbsp;org.apache.axis.encoding.XMLType.XSD_STRING&nbsp;);&nbsp;</span></div>
                        </span></span></span>
                        <li class="basic"><span style="color: #111111"><span style="font-size: 12pt"><span style="font-size: 10pt">Step5：发起访问，并获取反馈:
                        <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 id="Codehighlighter1_48_61_Open_Image" onclick="this.style.display='none'; Codehighlighter1_48_61_Open_Text.style.display='none'; Codehighlighter1_48_61_Closed_Image.style.display='inline'; Codehighlighter1_48_61_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_48_61_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_48_61_Closed_Text.style.display='none'; Codehighlighter1_48_61_Open_Image.style.display='inline'; Codehighlighter1_48_61_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #000000">String&nbsp;ret&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(String)&nbsp;call.invoke(&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Object[]&nbsp;</span><span id="Codehighlighter1_48_61_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_48_61_Open_Text"><span style="color: #000000">{&nbsp;textToSend&nbsp;}</span></span><span style="color: #000000">&nbsp;);&nbsp;</span></div>
                        </span></span></span>
                        <li class="basic"><span style="color: #111111"><span style="font-size: 12pt"><span style="font-size: 10pt">Step6：处理异常:
                        <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 id="Codehighlighter1_4_83_Open_Image" onclick="this.style.display='none'; Codehighlighter1_4_83_Open_Text.style.display='none'; Codehighlighter1_4_83_Closed_Image.style.display='inline'; Codehighlighter1_4_83_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_4_83_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_4_83_Closed_Text.style.display='none'; Codehighlighter1_4_83_Open_Image.style.display='inline'; Codehighlighter1_4_83_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_4_83_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_4_83_Open_Text"><span style="color: #000000">{</span><span style="color: #008000">//</span><span style="color: #008000">上面那些&nbsp;<img alt="" src="http://www.blogjava.net/Images/dot.gif" /><img alt="" src="http://www.blogjava.net/Images/dot.gif" />&nbsp;}&nbsp;catch&nbsp;(AxisFault&nbsp;fault)&nbsp;{et&nbsp;=&nbsp;"Error&nbsp;:&nbsp;"&nbsp;+&nbsp;fault.toString();}&nbsp;</span></div>
                        </span></span></span></span></li>
                    </ul>
                    <li class="col" id="FMFreemind_Link_530838174FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #111111">通过WSDL来访问WebService（必要步骤，以Example6为例）</span> </span></span>
                    <ul class="subexp">
                        <li class="basic" id="FMFreemind_Link_474250049FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #111111">WSDL： Web Service Description Language Web服务器描述语言是用XML文档来描述Web服务的标准，是Web服务的接口定义语言，由Ariba、Intel、IBM、MS等共同提出，通过WSDL，可描述Web服务的三个基本属性：? 服务做些什么——服务所提供的操作（方法） ?#22914;何访问服务——和服务交互的数据格式以及必要协议 ?#26381;务位于何处——协议相关的地址，如URL</span> </span></span>
                        <li class="col" id="FMFreemind_Link_598397218FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #111111">Step1：获得WSDL文件</span> </span></span>
                        <ul class="subexp">
                            <li class="basic" id="FMFreemind_Link_424496506FM"><span style="color: #111111"><span style="font-size: 12pt"><span style="font-size: 10pt">方式1：?WSDL http://&lt;host&gt;/axis/services/&lt;service-name&gt;?wsdl http://&lt;host&gt;/axis/*.jws?wsdl </span></span></span>
                            <li class="basic" id="FMFreemind_Link_222989763FM"><span style="color: #111111"><span style="font-size: 12pt"><span style="font-size: 10pt">方式2：JAVA2WSDL工具 % java org.apache.axis.wsdl.Java2WSDL -o wp.wsdl -l"http://localhost:8080/axis/services/WidgetPrice" -n "urn:Example6" -p"samples.userguide.example6" "urn:Example6" samples.userguide.example6.WidgetPrice <br />
                            Where: -o indicates the name of the output WSDL file -l indicates the location of the service -n is the target namespace of the WSDL file -p indicates a mapping from the package to a namespace. There may be multiple mappings. the class specified contains the interface of the webservice. </span></span></span></li>
                        </ul>
                        <li class="basic" id="FMFreemind_Link_724296304FM"><span style="color: #111111"><span style="font-size: 12pt"><span style="font-size: 10pt">Step2：通过WSDL2JAVA工具获得辅助类 % java org.apache.axis.wsdl.WSDL2Java -o . -d Session -s -S true -N urn:Example6 samples.userguide.example6 wp.wsdl <br />
                        WidgetPriceSoapBindingImpl.java : Java file containing the default server implementation of the WidgetPrice web service. You will need to modify the *SoapBindingImpl file to add your implementation WidgetPrice.java: 定义了Web服务接口 WidgetPriceService.java: 定义了用于获取Web服务接口的方法。 WidgetPriceServiceLocator.java: 定义了用于获取Web服务接口的方法。 WidgetPriceSoapBindingStub.java:Web服务客户端桩，通过该类与服务器交互。 WidgetPriceSoapBindingSkeleton.java: Server side skeleton. deploy.wsdd: Deployment descriptor undeploy.wsdd: Undeployment descriptor 这几个JAVA类帮我们处理了大部分的逻辑，我们需要的仅仅是把这些类加到我们的项目然后创建一个我们自己的类来调用它们即可 </span></span></span>
                        <li class="basic" id="FMFreemind_Link_1542888374FM"><span style="color: #111111"><span style="font-size: 12pt"><span style="font-size: 10pt">Step3：编写客户端代码: 通过***ServiceLocator构造***Service方法，通过***Service对象获得提供服务的类对象，进而调用提供服务类对象上的方法，提供服务。 </span></span></span></li>
                    </ul>
                    </li>
                </ul>
                <li class="col" id="FMFreemind_Link_1433806996FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">工具使用</span> </span></span>
                <ul class="subexp">
                    <li class="basic" id="FMFreemind_Link_414689882FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #111111">the Axis TCP Monitor :java org.apache.axis.utils.tcpmon [listenPort targetHost targetPort]</span> </span></span>
                    <li class="basic" id="FMFreemind_Link_1327893937FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #111111">the SOAP Monitor :</span> </span></span></li>
                </ul>
                </li>
            </ul>
            </li>
        </ul>
        <li class="col" id="FMFreemind_Link_529128275FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 150%; color: #0033ff">WebService安全</span> </span></span>
        <ul class="subexp">
            <li class="col" id="FMFreemind_Link_1739517844FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 133%; color: #00b439">常见攻击方式</span> </span></span>
            <ul class="subexp">
                <li class="basic" id="FMFreemind_Link_723254327FM"><span style="font-size: 117%; color: #990000"><span style="font-size: 12pt"><span style="font-size: 10pt">Denial of Service to a server </span></span></span>
                <li class="basic" id="FMFreemind_Link_1907584100FM"><span style="font-size: 117%; color: #990000"><span style="font-size: 12pt"><span style="font-size: 10pt">Interception and manipulation of messages </span></span></span>
                <li class="basic" id="FMFreemind_Link_1083565170FM"><span style="font-size: 117%; color: #990000"><span style="font-size: 12pt"><span style="font-size: 10pt">Forged client requests or Forged server responses </span></span></span>
                <li class="basic" id="FMFreemind_Link_1441881808FM"><span style="font-size: 117%; color: #990000"><span style="font-size: 12pt"><span style="font-size: 10pt">attempts to read the server file system/database </span></span></span>
                <li class="basic" id="FMFreemind_Link_74936888FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">Attempts to write to the server file system/database</span> </span></span></li>
            </ul>
            <li class="col" id="FMFreemind_Link_1661070739FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 133%; color: #00b439">判断来访者</span> </span></span>
            <ul class="subexp">
                <li class="basic" id="FMFreemind_Link_44509832FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">AXIS不支持判断请求服务的是谁.可以使用 xmlsec.jar来支援它</span> </span></span>
                <li class="basic" id="FMFreemind_Link_1137287878FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">AXIS推荐使用HTTPS来加强这种安全性</span> </span></span>
                <li class="basic" id="FMFreemind_Link_893828219FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">Axis 不支持HTTP1.1 Digest Authentication,需要the HttpClient libraries配合工作</span> </span></span></li>
            </ul>
            <li class="col" id="FMFreemind_Link_1354794612FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 133%; color: #00b439">可考虑的安全措施</span> </span></span>
            <ul class="subexp">
                <li class="basic" id="FMFreemind_Link_606517706FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">Disguise:不要让人知道你运行了AXIS</span> </span></span>
                <li class="basic" id="FMFreemind_Link_304431075FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">Cut down the build: 仅仅保留你需要的部分</span> </span></span>
                <li class="basic" id="FMFreemind_Link_1897243016FM"><span style="font-size: 117%; color: #990000"><span style="font-size: 12pt"><span style="font-size: 10pt">Rename things:换掉默认的名称,如The AxisServlet, the AdminService, even happyaxis.jsp </span></span></span>
                <li class="basic" id="FMFreemind_Link_273523515FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">Stop AxisServlet listing services :axis.enableListQuery =false</span> </span></span>
                <li class="basic" id="FMFreemind_Link_1567170565FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">Keep stack traces out of the responses :axis.development.system =true</span> </span></span>
                <li class="basic" id="FMFreemind_Link_263718516FM"><span style="font-size: 117%; color: #990000"><span style="font-size: 12pt"><span style="font-size: 10pt">Edit the .wsdd configuration file, as described in the reference, to return a WSDL resource which is simply an empty &lt;wsdl/&gt; tag. </span></span></span>
                <li class="basic" id="FMFreemind_Link_939238934FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">Servlets2.3: use filters for extra authentication</span> </span></span>
                <li class="basic" id="FMFreemind_Link_1372619074FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">Log things</span> </span></span>
                <li class="basic" id="FMFreemind_Link_279527972FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">Run Axis with reduced Java rights</span> </span></span>
                <li class="basic" id="FMFreemind_Link_811710441FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">Run the web server with reduced rights</span> </span></span>
                <li class="basic" id="FMFreemind_Link_1557086543FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">Monitor Load</span> </span></span>
                <li class="basic" id="FMFreemind_Link_589958465FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">Consider 'tripwire' and 'honeypot' endpoints(没明白)</span> </span></span></li>
            </ul>
            </li>
        </ul>
        <li class="col" id="FMFreemind_Link_318713178FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 150%; color: #0033ff">AXIS ANT Task</span> </span></span>
        <ul class="subexp">
            <li class="basic" id="FMFreemind_Link_1045167527FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 133%; color: #00b439">在axis-ant.jar中定义</span> </span></span>
            <li class="col" id="FMFreemind_Link_688780457FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 133%; color: #00b439">主要任务</span> </span></span>
            <ul class="subexp">
                <li class="basic" id="FMFreemind_Link_472129333FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">Creating Java files from WSDL</span> </span></span>
                <li class="basic" id="FMFreemind_Link_264497158FM"><span style="font-size: 117%; color: #990000"><span style="font-size: 12pt"><span style="font-size: 10pt">Creating WSDL files from Java </span></span></span>
                <li class="basic" id="FMFreemind_Link_486583037FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">Talking to the admin service</span> </span></span>
                <li class="basic" id="FMFreemind_Link_1818742513FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 117%; color: #990000">具体配置看文档</span> </span></span></li>
            </ul>
            </li>
        </ul>
        <li class="col" id="FMFreemind_Link_198820573FM"><span style="font-size: 150%; color: #0033ff"><span style="font-size: 12pt"><span style="font-size: 10pt">《Reference Material》 </span></span></span>
        <ul class="subexp">
            <li class="basic" id="FMFreemind_Link_145273933FM"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 133%; color: #00b439">其中注意包括了WSDL2JAVA，JAVA2WSDL的具体使用，以及WSDD的配置信息等技术细节</span> </span></span></li>
        </ul>
        </li>
    </ul>
    </li>
</ul>
</div>
        <img src ="http://www.blogjava.net/ponzmd/aggbug/142045.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ponzmd/" target="_blank">过河卒</a> 2007-09-02 11:51 <a href="http://www.blogjava.net/ponzmd/archive/2007/09/02/142045.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>