<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>yuyue</title>
    <description></description>
    <link>http://yuyue.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>关于web网络拓扑图的实现</title>
        <author>yuyue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuyue.javaeye.com">yuyue</a>&nbsp;
          链接：<a href="http://yuyue.javaeye.com/blog/202420" style="color:red;">http://yuyue.javaeye.com/blog/202420</a>&nbsp;
          发表时间: 2008年06月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;我们做的项目中有实时的网络拓扑图这个功能,之前都是c/s的.现在要改成在web上实时的展示网络拓扑图.为实现这个功能我做了一些调研.</p>
<p>&nbsp;</p>
<p>&nbsp;方案1:用js来做.</p>
<p>&nbsp;问题:我们部门的技术人员大多是搞c/s的,对js对不太熟.用js写这个功能实在是有点困难.</p>
<p>&nbsp;</p>
<p>&nbsp;方案2:用applet,flex等</p>
<p>&nbsp;applet跟flex相比,我们写applet相当会简单,但是客户机必须装jre这一点估计客户接受不了.相对来说flex成了主要的考虑对象.</p>
<p>&nbsp;</p>
<p>&nbsp;方案3:用相对比较成熟的产品</p>
<p>&nbsp;在网络拓扑图的有一些收费的产品,但是不到实在做不出来的情况下,实在不想用别人的东西.而且我们现在时间相对比较充足.</p>
<p><br />&nbsp;有这方面经验的朋友,觉的用flex实现怎么样?会有一些什么遇想不到的问题吗?因为是移动企业内部网上运行,所以速度问题不是什么问题.</p>
          <br/>
          <span style="color:red;">
            <a href="http://yuyue.javaeye.com/blog/202420#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>Thu, 12 Jun 2008 11:17:01 +0800</pubDate>
        <link>http://yuyue.javaeye.com/blog/202420</link>
        <guid>http://yuyue.javaeye.com/blog/202420</guid>
      </item>
      <item>
        <title>Spring OpenSessionInView</title>
        <author>yuyue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuyue.javaeye.com">yuyue</a>&nbsp;
          链接：<a href="http://yuyue.javaeye.com/blog/181570" style="color:red;">http://yuyue.javaeye.com/blog/181570</a>&nbsp;
          发表时间: 2008年04月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          项目使用ssh，由spring来统一管理事务。<br /><br /><pre name="code" class="java">
&lt;aop:config>
		&lt;aop ointcut id="allManagerMethod" expression="execution(* com.baoler.manager.*.*(..))"/>
		&lt;aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/>
	&lt;/aop:config>
</pre><br />以前的做的方法是在<br />manager包下建一下接口，然后在manager下建一个impl文件夹，把实现类放在impl下。就可以由spring来管理事务了。现在改成在manager下新建某个模块文件夹，在这个文件夹下面写接口，然后在impl下在新建文件夹放实现类。spring 无法进行事务管理了。<br />expression="execution(* com.baoler.manager.*.*(..))"<br />这个表达式应该怎么改写，才能达到可以管理manager下，以及manager下面n级的事务呢？
          <br/>
          <span style="color:red;">
            <a href="http://yuyue.javaeye.com/blog/181570#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>Fri, 11 Apr 2008 10:07:05 +0800</pubDate>
        <link>http://yuyue.javaeye.com/blog/181570</link>
        <guid>http://yuyue.javaeye.com/blog/181570</guid>
      </item>
      <item>
        <title>怎样在项目启动时得到Spring管理的对象</title>
        <author>yuyue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuyue.javaeye.com">yuyue</a>&nbsp;
          链接：<a href="http://yuyue.javaeye.com/blog/178381" style="color:red;">http://yuyue.javaeye.com/blog/178381</a>&nbsp;
          发表时间: 2008年04月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          有个项目是用ssh框架的，所有的dao,service都交给spring管理，项目使用的也是openSessioninView这种方式来管理<br />hibernate的session.现在我想在项目一启动的时候加载数据库的东西，我是准备在一个servlet里面来调dao,service这些东西来操作数据库，可是好像这样不行，得spring管理的bean的时候总是报null，估计是spring还没有加载，这样的问题，应该怎么解决啊？我是把这个Servlet的加载设为1。项目一启动就加载这个Servlet了。
          <br/>
          <span style="color:red;">
            <a href="http://yuyue.javaeye.com/blog/178381#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, 01 Apr 2008 13:39:27 +0800</pubDate>
        <link>http://yuyue.javaeye.com/blog/178381</link>
        <guid>http://yuyue.javaeye.com/blog/178381</guid>
      </item>
      <item>
        <title>在线支付功能！</title>
        <author>yuyue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuyue.javaeye.com">yuyue</a>&nbsp;
          链接：<a href="http://yuyue.javaeye.com/blog/148158" style="color:red;">http://yuyue.javaeye.com/blog/148158</a>&nbsp;
          发表时间: 2007年12月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          做一个电子商务网站，提供的在线支付功能是怎么做啊？
          <br/>
          <span style="color:red;">
            <a href="http://yuyue.javaeye.com/blog/148158#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>Thu, 13 Dec 2007 18:14:44 +0800</pubDate>
        <link>http://yuyue.javaeye.com/blog/148158</link>
        <guid>http://yuyue.javaeye.com/blog/148158</guid>
      </item>
      <item>
        <title>多个用户读写xml的问题！</title>
        <author>yuyue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuyue.javaeye.com">yuyue</a>&nbsp;
          链接：<a href="http://yuyue.javaeye.com/blog/148040" style="color:red;">http://yuyue.javaeye.com/blog/148040</a>&nbsp;
          发表时间: 2007年12月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近做的一个项目客户要求不能使用数据库，而数据大多是从一个路由器自带的系统采集的。但是还必须要保存一些数据，所以使用xml来保存。<br />     现有两个xml文件。 city.xml  cityrouter.xml<br />   city.xml放的是城市跟省的一个关系xml文件。一个数据定死的xml文件。<br />   cityrouter.xml是存放路由器的主健跟城市主健的一个xml<br />  现在的一个功能就是，对采集上来的路由器设置所属城市，这个时候就要先读city.xml。然后在把用户先的路由器跟城市写进cityrouter.xml 。读写用的都是一个类。<br />   如果一个用户去操作的话没有问题，但是在两个用户同时做一个操作的时候，居然city.xml被替成了cityrouter.xml的内容。<br />   这个问题，我想不能是怎么回事了，我的程序没有使用线程，xml里面好像也没有事务的概念。请高人给支个招！
          <br/>
          <span style="color:red;">
            <a href="http://yuyue.javaeye.com/blog/148040#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>Thu, 13 Dec 2007 10:58:55 +0800</pubDate>
        <link>http://yuyue.javaeye.com/blog/148040</link>
        <guid>http://yuyue.javaeye.com/blog/148040</guid>
      </item>
      <item>
        <title>生成静态页面的评论怎么加？</title>
        <author>yuyue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuyue.javaeye.com">yuyue</a>&nbsp;
          链接：<a href="http://yuyue.javaeye.com/blog/147537" style="color:red;">http://yuyue.javaeye.com/blog/147537</a>&nbsp;
          发表时间: 2007年12月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          前段时间问了一个关于门户网站怎么取各种表中的数据的问题，在这里在次谢谢robbin的回答，让我解决了一个一直想不明白的问题。<br />  这几天又在想一个问题，我做一个信息发布系统，所有的新闻信息都准备发布成静态页。但是新闻支持评论。那怎么给静态页加上动态评论呢？我想了两种方法，一种是用ajax。在html页上直接用ajax来动态的取。另一种就是像robbin说的解决生成首页问题那样。静态的新闻跟动态的评论组合在一个jsp里面。不知道还有没有什么更好的解决方法。希望有经验者解惑！
          <br/>
          <span style="color:red;">
            <a href="http://yuyue.javaeye.com/blog/147537#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, 11 Dec 2007 13:26:43 +0800</pubDate>
        <link>http://yuyue.javaeye.com/blog/147537</link>
        <guid>http://yuyue.javaeye.com/blog/147537</guid>
      </item>
      <item>
        <title>网站的退出问题！</title>
        <author>yuyue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuyue.javaeye.com">yuyue</a>&nbsp;
          链接：<a href="http://yuyue.javaeye.com/blog/145818" style="color:red;">http://yuyue.javaeye.com/blog/145818</a>&nbsp;
          发表时间: 2007年12月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          用户登陆的校验是放到一个servlet里面的，项目用到frame，所以地址栏的地址一直是这个servlet的地址。当点击退出以后，我把程序转向登陆页。但是地址栏是没有变化的，在次刷新又进去系统了。这个问题我实在不清楚应该怎么弄了，我想改变地址栏的地址，http://localhost:8080/webGUI/forwardCnm<br />但是无论是转发，重定向，还是js的location地址栏始终没有变化。就在这个地址栏上刷新还能得到用户名和密码。实在是搞不清楚怎么回事了，望有精验的前辈给个解决方案！
          <br/>
          <span style="color:red;">
            <a href="http://yuyue.javaeye.com/blog/145818#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, 04 Dec 2007 12:13:40 +0800</pubDate>
        <link>http://yuyue.javaeye.com/blog/145818</link>
        <guid>http://yuyue.javaeye.com/blog/145818</guid>
      </item>
      <item>
        <title>Hibernate的集合映射 </title>
        <author>yuyue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuyue.javaeye.com">yuyue</a>&nbsp;
          链接：<a href="http://yuyue.javaeye.com/blog/139792" style="color:red;">http://yuyue.javaeye.com/blog/139792</a>&nbsp;
          发表时间: 2007年11月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="code_title"></div>
<span><span><span><span><span><span><span><span>&nbsp;&nbsp; Hibernate中将集合分为四类：
<p>1、bag类：元素无序，可重复</p>
<p>2、set类：元素无序，不可重复</p>
<p>3、list类：元素有序，可重复</p>
<p>4、array类：数组</p>
<p>5、map类：映射关系</p>
<p>除bag类集合外，其它集合均可在Java API中找到对应接口。</p>
<p>Bag一般使用list来映射</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span><span class="string">&quot;unitNames&quot;</span><span>&nbsp;table=</span><span class="string">&quot;unit&quot;</span><span>&nbsp;lazy=</span><span class="string">&quot;false&quot;</span><span>&nbsp;order-by=</span><span class="string">&quot;unit_id&nbsp;desc&quot;</span><span>&gt; &nbsp;&nbsp;</span></span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;building_id&quot;</span><span>/&gt; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">&quot;unit_name&quot;</span><span>&nbsp;type=</span><span class="string">&quot;string&quot;</span><span>/&gt; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>Set集合在使用上与bag大至相同：</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>&lt;set&nbsp;name=</span><span class="string">&quot;names&quot;</span><span>&nbsp;table=</span><span class="string">&quot;person_names&quot;</span><span>&gt; &nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&nbsp;column=</span><span class="string">&quot;person_id&quot;</span><span>/&gt; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;element&nbsp;column=</span><span class="string">&quot;person_name&quot;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type=</span><span class="string">&quot;string&quot;</span><span>/&gt; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;/set&gt; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;list&nbsp;name=</span><span class="string">&quot;unitNames&quot;</span><span>&nbsp;table=</span><span class="string">&quot;unit&quot;</span><span>&nbsp;lazy=</span><span class="string">&quot;false&quot;</span><span>&nbsp;&gt; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&nbsp;column=</span><span class="string">&quot;building_id&quot;</span><span>/&gt; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;index&nbsp;column=</span><span class="string">&quot;unit_id&quot;</span><span>&nbsp;/&gt; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;element&nbsp;column=</span><span class="string">&quot;unit_name&quot;</span><span>&nbsp;type=</span><span class="string">&quot;string&quot;</span><span>/&gt; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;/list&gt; &nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;list&nbsp;name=</span><span class="string">&quot;carComponents&ldquo;&nbsp;table=&quot;</span><span>CarComponents</span><span class="string">&quot;&gt; </span>&nbsp;</li>
    <li class="alt"><span><span class="string"></span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&nbsp;column=&quot;</span><span>carId</span><span class="string">&quot;/&gt; </span>&nbsp;</span></li>
    <li class="alt"><span><span class="string"></span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;list-index&nbsp;column=&quot;</span><span>sortOrder</span><span class="string">&quot;/&gt; </span>&nbsp;</span></li>
    <li class="alt"><span><span class="string"></span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;composite-element&nbsp;class=&quot;</span><span>CarComponent</span><span class="string">&quot;&gt; </span>&nbsp;</span></li>
    <li class="alt"><span><span class="string"></span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name=&quot;</span><span>price</span><span class="string">&quot;/&gt; </span>&nbsp;</span></li>
    <li class="alt"><span><span class="string"></span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name=&quot;</span><span>type</span><span class="string">&quot;/&gt; </span>&nbsp;</span></li>
    <li class="alt"><span><span class="string"></span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name=&quot;</span><span>serialNumber</span><span class="string">&quot;&nbsp;column=&quot;</span><span>serialNum</span><span class="string">&quot;/&gt; </span>&nbsp;</span></li>
    <li class="alt"><span><span class="string"></span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/composite-element&gt; </span>&nbsp;</span></li>
    <li class="alt"><span><span class="string"></span>&nbsp;</span></li>
    <li class=""><span><span class="string">&lt;/list&gt; </span>&nbsp;</span></li>
    <li class="alt"><span><span class="string"></span>&nbsp;</span></li>
    <li class=""><span><span class="string">&lt;map&nbsp;name=&quot;</span><span>unit</span><span class="string">&quot;&nbsp;table=&quot;</span><span>unit</span><span class="string">&quot;&gt; </span>&nbsp;</span></li>
    <li class="alt"><span><span class="string"></span>&nbsp;</span></li>
    <li class=""><span><span class="string">&lt;key&nbsp;column=&quot;</span><span>building_id</span><span class="string">&quot;&gt;&lt;/key&gt; </span>&nbsp;</span></li>
    <li class="alt"><span><span class="string"></span>&nbsp;</span></li>
    <li class=""><span><span class="string">&lt;map-key&nbsp;column=&quot;</span><span>id</span><span class="string">&quot;&nbsp;type=&quot;</span><span class="keyword">int</span><span class="string">&quot;&nbsp;/&gt; </span>&nbsp;</span></li>
    <li class="alt"><span><span class="string"></span>&nbsp;</span></li>
    <li class=""><span><span class="string">&lt;element&nbsp;type=&quot;</span><span>string</span><span class="string">&quot;&nbsp;column=&quot;</span><span>unit&quot;&gt;&lt;/element&gt; &nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;/map&gt; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<span><span><span><span><span><span><span><span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
          <br/>
          <span style="color:red;">
            <a href="http://yuyue.javaeye.com/blog/139792#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>Sun, 11 Nov 2007 19:28:48 +0800</pubDate>
        <link>http://yuyue.javaeye.com/blog/139792</link>
        <guid>http://yuyue.javaeye.com/blog/139792</guid>
      </item>
      <item>
        <title>边想边学WebService</title>
        <author>yuyue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuyue.javaeye.com">yuyue</a>&nbsp;
          链接：<a href="http://yuyue.javaeye.com/blog/138363" style="color:red;">http://yuyue.javaeye.com/blog/138363</a>&nbsp;
          发表时间: 2007年11月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          　<strong>　<span style="color: blue">WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求，轻量级的独立的通讯技术。</span>　</strong><br />　　第一次看到这么一个概念，有点不知其意。经过各方面知识的拓展。现在通过自己的经验来分析一下。Webservice是一种可以接收从Internet其他系统中传递过来的请求。先说请求：初学时就知道一个get请求和一个post请求，这都是http协议的。而网络协议多多，请求类型也很多，近期接触一个项目用到的就是soap请求。Soap-simple object access protocol简单对象访问协议，这个就是发送一个xml./http请求，得到的数据也都是xml形式。我们的需求就是用web程序去某c/s构架的系统中采集数据，这个系统提供一系统的北向接口，我们就可以通过soap得到该系统的一些数据。这也算是系统之间的简单交互了。但是，我们做的这个针对性特别强，我们要采集这个系统的数据，就必须使用这个系统提供的接口。那么webservice 一定是一套通用的接口。也就是说，你的系统想提花这样的接口就得按webservice的标准去提供，别的系统想用你系统的数据，就得按webservice提供的取法去取。<br /><br />――――――这是学习前的一点猜想，下面带着这些猜想去看看webservice到底能干什么！<br />　　在网上查了点资料。看到webservice更为实质性描述了。<strong>Web Service是单一的、构件化的程序功能实体，能够通过网络，特别是万维网来描述、发布、定位及调用。Web Service的体系结构描述了三个角色（服务提供者、服务请求者和服务中介者）及三个操作（发布、查找和绑定）。</strong>这个跟我想的没多大的差异，三个角色，三个操作。我本来想着是两个角色，一个提供的，一个取的。两个，其实还有一个中介者。服务提供者不用想了，服务请求者也不用想，服务中介者不太清楚。三个操作。发布，这是服务提供者要做的，查找，这是请求者要做的，绑定，难道是中介者要做的吗？兴趣越来越浓，go on!<br />仔细看了一下在仔细想一下：中介者就出来了，如果像我上面的那种针对性很强的需求来说，根本用不上中介者这个概念。因为我就要到这一个系统上面去采数据。就我们两个就够了，你在这里，我在这，我跟你要，你给我！这就够了，但是想想现在要面对的是整个万维网。服务提供者多多，我怎么知道你在哪里，我得找到你才到跟你要东西啊！所以这个中介者就出来了，像租房的中介一个样！首先服务者在中介那里注册一下想提供哪些服务。请求者去中介者请求，中介查找到对应的服务提供者，ok，两个绑定一下。<br />刚刚又看到这么几句：<br /> <br />当开发人员开发新的应用时，可以登录服务中介者所提供UDDI搜索引擎的Web界面，并在UDDI注册表中查找自己所需要的Web Service，并通过UDDI注册表中的连接找到Web Service的调用细节，具体调用细节采用WSDL描述。开发人员可以使用开发工具或通过手工方式还原该调用细节，然后在自己的应用程序中根据WSDL的描述开发Web Service的客户端调用程序——这样开发出的应用就可以通过SOAP调用指定的Web Service了。如果Web Service应用仅在特定组织机构中使用，服务调用者完全可以通过其他途径获取Web Service的WSDL就可以移除系统架构中的服务中介者了。<br />看来跟我想的一样了，不知道去哪里找的时候就去中介找，在中介找到具体的地址以后，自己去连接这个服务，向这个服务发请求得数据。但是如果本身自己就知道这个服务的话，那么直接连，省去了，查找这一步。在想了一例子，比如想得到有关天气预报的一些信息，不知道去哪取，就应该先去中介找一下，看看哪有提供此项服务的，找到地址以后，直接发请求，取数据！理解的对不对还得接着学！<br />　　　　　　――――――――――――――概念更加清析了一层。但是，webservice到底怎么用还是不知道。<br />现在知道这么一个概念还不清楚具体要他干什么。我假设一个需求：javaeye网站是用ruby做的。但是全文查找想用lucence，但是lucence又是java写的，它用不了，那么我另开一个java小系统专门提供查找这项服务。不管你什么语言，你按标准的请求方式给我一个xml请求或是别的请求，我也给你一个你能看懂的数据。应该是用xml来传递。这就应该是webService主要的用武之地了吧？这是假设的，是不是这样，我还得往下看！<br />在往下看就到技术了。想实现这么一个需求，都要用到什么技术？<br />在Web Service的世界里，发布服务用UDDI（Universal Description, Discovery and Integration：统一描述、发现和集成）；查找服务使用UDDI和WSDL（Web Services Description Language ：Web Service描述语言）；而绑定服务使用WSDL和SOAP<br />现在知道技术有什么了，在上网查一下，有专门写webservice的框架，其他的就一点不知道了，看了一下，有两个框架比较惹眼，一个是axit 2,一个xfire.用哪个好？<br />Denis Robert 是这样说的：<br />No question about it, stick with XFire. You’ll be<br /> happy about it. My only gripe with XFire is the docs, <br />which are woefully incomplete. Hopefully that will <br />change with time. For the time being, you have to <br />plow through the source for any complex service. <br />But architecturally, it’s really sound.<br /><br />Axis2 is a nightmare. Even with XFire’s incomplete <br />docs, I was able to go through the source to figure <br />out what I needed. Axis2 is such a jumble of code that<br /> doing the same thing would take weeks, not hours.<br /><br />Also, compared to Axis2, XFire’s docs are positively<br /> brilliant! Not only are Axis2’s docs fragmentary <br />at best, half of it doesn’t correpond to the current <br />version.<br /><br />XFire looks like it’s going in the right direction, <br />and Dan Diephouse (the lead) seems like he’s on top<br /> of the project.<br /><br />You also have to take JAX-WS into account. Whether or <br />not it’s all it’s cracked up to be is another <br />discussion, but it nevertheless is the official standard.<br /> The Axis2 team have made clear that they have<br /> no intention of supporting it. JAX-RPC was horrible, <br />but it was at least common ground, and was the API<br /> used by most enterprise users. Same will end up happening <br />with JAX-WS and JAXB 2. Websphere users will<br />end up using that, and knowing it’s out there will <br />make interop a lot easier. XFire has taken a “can’t <br />beat ‘em, join ‘em” approach here.<br /><br />The way I see it, the Axis team dropped the ball on <br />this one, and the new kid has taken the lead. <br />It’s the circle of life…<br />看来应该选择Xfire。不过，看见网上用axit 的也不少，不多说了，分别做一个例子感觉一下！<br />有点操之过急了，还得把开发webservice的三剑客介绍一下。<br />最主要应该就是<br />Soap.这个东西，如果你的需要webservice了，就应该接触过soap了，soap可以在多种协议下通过xml传输和请求数据的一个东西，比较简单，举一个例子：<br />&lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><br /> &lt;soapenv:Header><br />  &lt;header soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xmlns="xmlapi_1.0"><br />   &lt;security><br />    &lt;user xsi:type="xsd:string">admin&lt;/user><br />    &lt;password xsi:type="xsd:string">c36b885125105c462d34774140eec076&lt;/password><br />   &lt;/security><br />   &lt;requestID xsi:type="xsd:string">SAMOCollect@CM@1184849580000@116.79.255.67&lt;/requestID><br />  &lt;/header><br /> &lt;/soapenv:Header><br />&lt;soapenv:Body><br />&lt;find xmlns="xmlapi_1.0"><br /> &lt;fullClassName>security.User&lt;/fullClassName><br />   &lt;resultFilter><br />    &lt;attribute>name&lt;/attribute><br />    &lt;attribute>objectFullName&lt;/attribute><br />    &lt;attribute>userName&lt;/attribute><br />    &lt;attribute>password&lt;/attribute><br />	&lt;attribute>state&lt;/attribute><br />	&lt;attribute>userGroup&lt;/attribute><br />	&lt;attribute>userGroupDisplayName&lt;/attribute>	<br />    &lt;children/><br />  &lt;/resultFilter><br />&lt;/find><br />&lt;/soapenv:Body><br />&lt;/soapenv:Envelope><br />上面是我发的一个soap请求，请求方式为&lt;find xmlns="xmlapi_1.0">叫find请求，请求的数据是，securiy.User下面的那些属性。  &lt;security><br />    &lt;user xsi:type="xsd:string">admin&lt;/user><br />    &lt;password xsi:type="xsd:string">c36b885125105c462d34774140eec076&lt;/password><br />   &lt;/security><br />   &lt;requestID xsi:type="xsd:string">SAMOCollect@CM@1184849580000@116.79.255.67&lt;/requestID><br />  &lt;/header>这是一个请求头。<br />比如，你想去 A系统请求他提供的一些数据。就像例子中的User对象的一些数据，你在请求头上要写上你要登陆A系统的用户名，密码以及一个requestId。以http的形式发过去，A系统就给你返回结果了：<br />&lt;SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">&lt;SOAP:Header>&lt;header xmlns="xmlapi_1.0">&lt;requestID>SAMOCollect@CM@1184849580000@116.79.255.67&lt;/requestID>&lt;requestTime>Oct 28, 2007 3:06:19 PM&lt;/requestTime>&lt;responseTime>Oct 28, 2007 3:06:19 PM&lt;/responseTime>&lt;/header>&lt;/SOAP:Header>&lt;SOAP:Body>&lt;findResponse xmlns="xmlapi_1.0">&lt;result>&lt;security.User>&lt;password>c36b885125105c462d34774140eec076&lt;/password>&lt;userName>admin&lt;/userName>&lt;userGroup>securityManager:userGroup-admin&lt;/userGroup>&lt;state>active&lt;/state>&lt;userGroupDisplayName>admin&lt;/userGroupDisplayName>&lt;objectFullName>securityManager:user-admin&lt;/objectFullName>&lt;name>user-admin&lt;/name>&lt;/security.User>…………<br />就是这么一个以xml形式传送的N个User对象。<br />简单对象传输的概念也就出来了。以xml的形式传递数据，估计不管什么语言写系统都应该可以做到吧？这个webservice也应该是以这种方式来在不同系统之间传递数据的吧？<br />我也不清楚。还得学啊！<br />WSDL——Web Service描述语言<br />随着通信协议和消息格式在Web中的标准化，以某种格式化的方法描述通信变得越来越重要，其实现的可能性也越来越大。用WSDL定义的一套XML语法描述的网络服务方式满足了这种需求。WSDL把网络服务定义成一个能交换消息的通信端点集。WSDL为分布式系统提供了“在线帮助”。<br />一个WSDL文档将服务定义为一个网络端点或端口（End Point）的集合。在WSDL里，端点及消息的抽象定义与它们具体的网络实现和参数格式绑定是分离的。这样就可以重用这些抽象定义：消息——需要交换数据的抽象描述；端口类型——操作的抽象集合。针对一个特定端口类型的具体协议和数据格式规范构成一个可重用的绑定。一个端口定义成网络地址和可重用绑定的连接，端口的集合定义为服务。因此，一个完整的WSDL在定义网络服务时包含如下的元素：<br />— 类型：使用某种类型系统（如XSD）定义数据类型；<br />— 消息：通信数据抽象的带类型的定义；<br />— 操作：服务所支持动作的抽象描述；<br />— 端口类型：一个操作的抽象集合，该操作由一个或多个端点支持；<br />— 绑定：针对一个特定端口类型的具体协议规范和数据格式规范；<br />— 端口：一个单一的端点，定义成一个绑定和一个网络地址的连接；<br />—	服务：相关端点的集合。<br />UDDI——统一描述、发现和集成<br />UDDI是一套Web Service信息注册标准规范，Web Service信息注册中心通过实现这套规范开放Web Service注册、查询的服务。<br />UDDI的核心组件是UDDI业务注册，它使用一个XML文档来描述企业及其提供的Web Service。从概念上来说，UDDI业务注册所提供的信息包含三个部分：<br />— 白页（White Page）：包括地址、联系方法和企业标识；<br />— 黄页（Yellow page）：包括基于标准分类法的行业类别；<br />— 绿页（Green Page）：包括该企业所提供的Web Service的技术信息，其形式可能是一些指向文件地址或URL的指示器，而这些文件地址或URL是为服务发现机制服务的。<br />所有UDDI信息注册信息都存储在UDDI信息注册中心。通过使用UDDI提供的注册服务，企业可以注册那些希望被别的企业发现的Web Service。企业可以通过UDDI商业注册中心的Web界面，或使用实现了“UDDI Programmer’s API标准”的工具，将信息加入到UDDI的信息注册中心。UDDI的注册信息在逻辑上是集中的，在物理上是分布式的，由多个根节点组成，相互之间按一定复制规则进行数据同步。当一个企业在UDDI商业注册中心的一个实例中实施注册后，其注册信息会被自动复制到其他UDDI根节点，于是就能被任何希望使用这些Web Service的人所发现。<br />上面两个概念应该是在说，你这个xml请求文件不能乱写，得有规范，这样才可以让所有系统都认识。这就是那个wsdl。关于那个注册的，还没有此类需求，不好讲。遇上以后在想想。<br />有了这些知识在准备用框架开发webservice就痛快多了。关于用框架开发webservice的例子网上一大把。不过，框架不如思想重要。在学习的时候在把思想整理一下！
          <br/>
          <span style="color:red;">
            <a href="http://yuyue.javaeye.com/blog/138363#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, 06 Nov 2007 14:24:00 +0800</pubDate>
        <link>http://yuyue.javaeye.com/blog/138363</link>
        <guid>http://yuyue.javaeye.com/blog/138363</guid>
      </item>
  </channel>
</rss>