﻿<?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-我爱佳娃-随笔分类-web技术</title><link>http://www.blogjava.net/alwayscy/category/23817.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 05 Dec 2007 15:49:48 GMT</lastBuildDate><pubDate>Wed, 05 Dec 2007 15:49:48 GMT</pubDate><ttl>60</ttl><item><title>一种不需要WSDL用CXF（原XFIRE）访问PERL（SOAP::Lite）编写的WEB SERVICE</title><link>http://www.blogjava.net/alwayscy/archive/2007/12/05/165446.html</link><dc:creator>我爱佳娃</dc:creator><author>我爱佳娃</author><pubDate>Wed, 05 Dec 2007 04:00:00 GMT</pubDate><guid>http://www.blogjava.net/alwayscy/archive/2007/12/05/165446.html</guid><wfw:comment>http://www.blogjava.net/alwayscy/comments/165446.html</wfw:comment><comments>http://www.blogjava.net/alwayscy/archive/2007/12/05/165446.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alwayscy/comments/commentRss/165446.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alwayscy/services/trackbacks/165446.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 用PERL编写SOAP服务是相当方便的，但是如果用其它语言来访问它，却不容易，下面介绍一种不需要WSDL描述就能访问它的方法。&nbsp;&nbsp;<a href='http://www.blogjava.net/alwayscy/archive/2007/12/05/165446.html'>阅读全文</a><img src ="http://www.blogjava.net/alwayscy/aggbug/165446.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alwayscy/" target="_blank">我爱佳娃</a> 2007-12-05 12:00 <a href="http://www.blogjava.net/alwayscy/archive/2007/12/05/165446.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cxf的XML中jaxws:endpoint中使用bean引用格式</title><link>http://www.blogjava.net/alwayscy/archive/2007/11/01/157556.html</link><dc:creator>我爱佳娃</dc:creator><author>我爱佳娃</author><pubDate>Thu, 01 Nov 2007 09:38:00 GMT</pubDate><guid>http://www.blogjava.net/alwayscy/archive/2007/11/01/157556.html</guid><wfw:comment>http://www.blogjava.net/alwayscy/comments/157556.html</wfw:comment><comments>http://www.blogjava.net/alwayscy/archive/2007/11/01/157556.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alwayscy/comments/commentRss/157556.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alwayscy/services/trackbacks/157556.html</trackback:ping><description><![CDATA[<p></p> <p>&lt;bean id="nodeSvcImpl" class="com.exchangebit.nms.magic.NodeSvcImpl"&gt;<br>&lt;property name="notifyClient" ref="notifyClient"/&gt;<br>&lt;/bean&gt;</p> <p><br>&lt;jaxws:endpoint <br>id="nodeSvc" <br>implementor="#nodeSvcImpl" <br>address="/NodeSvc"&gt;<br>&lt;/jaxws:endpoint&gt;</p><img src ="http://www.blogjava.net/alwayscy/aggbug/157556.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alwayscy/" target="_blank">我爱佳娃</a> 2007-11-01 17:38 <a href="http://www.blogjava.net/alwayscy/archive/2007/11/01/157556.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在CXF中用JAXB数据绑定支持HashMap类型</title><link>http://www.blogjava.net/alwayscy/archive/2007/10/29/156723.html</link><dc:creator>我爱佳娃</dc:creator><author>我爱佳娃</author><pubDate>Mon, 29 Oct 2007 08:41:00 GMT</pubDate><guid>http://www.blogjava.net/alwayscy/archive/2007/10/29/156723.html</guid><wfw:comment>http://www.blogjava.net/alwayscy/comments/156723.html</wfw:comment><comments>http://www.blogjava.net/alwayscy/archive/2007/10/29/156723.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/alwayscy/comments/commentRss/156723.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alwayscy/services/trackbacks/156723.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: SOAP中不支持HashMap，但可以通过定义XmlAdapter适配器将数组转换成HashMap的方式来支持。本文通过完整例子来说明。<br>有了转换器这个工具，我们可以在SOAP的JAXB绑定里支持各种JAVA的COLLECTION类型，以及自定义类型，打破了SOAP原始支持类型的限制。&nbsp;&nbsp;<a href='http://www.blogjava.net/alwayscy/archive/2007/10/29/156723.html'>阅读全文</a><img src ="http://www.blogjava.net/alwayscy/aggbug/156723.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alwayscy/" target="_blank">我爱佳娃</a> 2007-10-29 16:41 <a href="http://www.blogjava.net/alwayscy/archive/2007/10/29/156723.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CXF：咋总差一点呢？ （续：已解决）</title><link>http://www.blogjava.net/alwayscy/archive/2007/08/23/138820.html</link><dc:creator>我爱佳娃</dc:creator><author>我爱佳娃</author><pubDate>Thu, 23 Aug 2007 06:13:00 GMT</pubDate><guid>http://www.blogjava.net/alwayscy/archive/2007/08/23/138820.html</guid><wfw:comment>http://www.blogjava.net/alwayscy/comments/138820.html</wfw:comment><comments>http://www.blogjava.net/alwayscy/archive/2007/08/23/138820.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/alwayscy/comments/commentRss/138820.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alwayscy/services/trackbacks/138820.html</trackback:ping><description><![CDATA[在<a href="http://www.blogjava.net/alwayscy/archive/2007/08/07/135074.html">上一篇文章</a>中的问题，今天又再试了下，居然解决了，看来把遇到问题放一放是有好处的。<br><br>第一，是要用对CXF的库，在一行代码未变的情况下，只要使用最新的库。看来在最新库里解决了数组问题：<br>2.1-incubator-SNAPSHOT<br>就没问题，如果是用：<br>2.0-incubator<br>就会出现上篇文章的情况。我使用MAVEN2，就写成：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">for&nbsp;cxf</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">dependency</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">groupId</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">org.apache.cxf</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">groupId</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">artifactId</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">cxf-rt-frontend-jaxws</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">artifactId</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">version</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">2.1-incubator-SNAPSHOT</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">version</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;version&gt;2.0-incubator&lt;/version</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">dependency</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">dependency</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">groupId</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">org.apache.cxf</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">groupId</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">artifactId</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">cxf-rt-transports-http</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">artifactId</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">version</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">2.1-incubator-SNAPSHOT</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">version</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">dependency</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">dependency</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">groupId</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">org.apache.cxf</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">groupId</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">artifactId</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">cxf-rt-databinding-aegis</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">artifactId</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">version</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">2.1-incubator-SNAPSHOT</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">version</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">dependency</span><span style="COLOR: #0000ff">&gt;</span></div>
<br><br>第二，对SOAP::Lite的改变，SOAP::Lite不支持doc/literal，但通过阅读<br>"NET-based Web Service Using the SOAP::Lite Perl Library". <br>我的上篇文章有链接，我写的PERL程序在某些情况下依然不行。<br>这次再加了两处改动后就可以了：（注意：CXF里不要使用aegisDatabinding，用默认的即可）<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$soap</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;SOAP</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">Lite<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">&nbsp;uri(</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="FONT-WEIGHT: bold; COLOR: #000000">http://magic.nms.exchangebit.com/</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="COLOR: #000000">)<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">&nbsp;on_action(&nbsp;</span><span style="COLOR: #0000ff">sub</span><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #0000ff">join</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="FONT-WEIGHT: bold; COLOR: #000000">/</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="FONT-WEIGHT: bold; COLOR: #000000">http://www.alfredbr.com</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$_</span><span style="COLOR: #000000">[</span><span style="COLOR: #800000">1</span><span style="COLOR: #000000">]&nbsp;})<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">&nbsp;proxy(</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="FONT-WEIGHT: bold; COLOR: #000000">http://127.0.0.1:8080/ebnms/NotifyService</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="COLOR: #000000">)<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">autotype(</span><span style="COLOR: #800000">0</span><span style="COLOR: #000000">);</span></div>
<br><br>其中的autotype(0)非常重要。另外一处改动是，程序中的根变量名改成"arg0"，即与WSDL中定义一致。<br>实验发现，带不带attr中的xmlns都可以。完整代码如下：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">use</span><span style="COLOR: #000000">&nbsp;SOAP</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">Lite&nbsp;(&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">trace&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;all</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;maptype&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;{}&nbsp;);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$soap</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;SOAP</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">Lite<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">&nbsp;uri(</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="FONT-WEIGHT: bold; COLOR: #000000">http://magic.nms.exchangebit.com/</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="COLOR: #000000">)<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">&nbsp;on_action(&nbsp;</span><span style="COLOR: #0000ff">sub</span><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #0000ff">join</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="FONT-WEIGHT: bold; COLOR: #000000">/</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="FONT-WEIGHT: bold; COLOR: #000000">http://www.alfredbr.com</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$_</span><span style="COLOR: #000000">[</span><span style="COLOR: #800000">1</span><span style="COLOR: #000000">]&nbsp;})<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">&nbsp;proxy(</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="FONT-WEIGHT: bold; COLOR: #000000">http://127.0.0.1:8080/ebnms/NotifyService</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="COLOR: #000000">)<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">autotype(</span><span style="COLOR: #800000">0</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">$soap-&gt;sendAlarmString&nbsp;("good");<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>#$soap-&gt;sendAlarm&nbsp;(SOAP::Data-&gt;name(arg0=&gt;{devName=&gt;"hehe",&nbsp;devIp=&gt;"ip1"}));</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>{</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;call&nbsp;send&nbsp;alarm</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">@params</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;$header,</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SOAP</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">Data</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">name(arg0&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;goodhehe)&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$method</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;SOAP</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">Data</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">name(</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="FONT-WEIGHT: bold; COLOR: #000000">ns1:sendAlarmString</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="COLOR: #000000">)<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">attr({</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">xmlns:ns1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="FONT-WEIGHT: bold; COLOR: #000000">http://magic.nms.exchangebit.com/</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="COLOR: #000000">});<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$result</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$soap</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">call(</span><span style="COLOR: #800080">$method</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">@params</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">\nsend&nbsp;string&nbsp;alarm&nbsp;result:\n</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #800080">$result</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">fault)<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$result</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">faultstring;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$result</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">result;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">\nn</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>}<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>{</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;call&nbsp;send&nbsp;dev&nbsp;alarm</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">@params</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(SOAP</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">Data</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">name(arg0</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">{devName</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">hehe</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;devIp</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">ip1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">}));<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$method</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;SOAP</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">Data</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">name(</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="FONT-WEIGHT: bold; COLOR: #000000">sendAlarm</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;attr({"xmlns:ns1"&nbsp;=&gt;&nbsp;'http://magic.nms.exchangebit.com/'});</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$result</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$soap</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">call(</span><span style="COLOR: #800080">$method</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">@params</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">\nsend&nbsp;string&nbsp;alarm&nbsp;result:\n</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #800080">$result</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">fault)<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$result</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">faultstring;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$result</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">result;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">\n\n</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>}<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>{</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;call&nbsp;send&nbsp;arr&nbsp;alarm</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">@params</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SOAP</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">Data</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">name(arg0&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;[<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{devName</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">hehe1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;devIp</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">ip1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">}</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{devName</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">hehe1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;devIp</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">ip1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">}</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{devName</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">hehe1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;devIp</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">ip1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">}</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{devName</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">hehe1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;devIp</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">ip1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">}</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{devName</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">hehe1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;devIp</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">ip1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">}</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{devName</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">hehe1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;devIp</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">ip1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">}</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{devName</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">hehe1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;devIp</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">ip1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">}</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{devName</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">hehe1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;devIp</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">ip1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">}</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{devName</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">hehe1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;devIp</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">ip1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">}</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{devName</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">hehe1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;devIp</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">ip1</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">}</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{devName</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">hehe2</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;devIp</span><span style="COLOR: #000000">=&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">ip2</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">}])<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$method</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;SOAP</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">Data</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">name(</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="FONT-WEIGHT: bold; COLOR: #000000">sendAlarmArr</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$result</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$soap</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">call(</span><span style="COLOR: #800080">$method</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">@params</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">\nsend&nbsp;string&nbsp;alarm&nbsp;result:\n</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #800080">$result</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">fault)<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$result</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">faultstring;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">@a</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;@{</span><span style="COLOR: #800080">$result</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">result</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">{item}};<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">foreach</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$i</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #800080">@a</span><span style="COLOR: #000000">)&nbsp;{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">ele:&nbsp;$i-&gt;{devName},&nbsp;$i-&gt;{devIp}\n</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">\n\n</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>}</span></div>
<img src ="http://www.blogjava.net/alwayscy/aggbug/138820.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alwayscy/" target="_blank">我爱佳娃</a> 2007-08-23 14:13 <a href="http://www.blogjava.net/alwayscy/archive/2007/08/23/138820.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CXF：咋总差一点呢？</title><link>http://www.blogjava.net/alwayscy/archive/2007/08/07/135074.html</link><dc:creator>我爱佳娃</dc:creator><author>我爱佳娃</author><pubDate>Tue, 07 Aug 2007 13:39:00 GMT</pubDate><guid>http://www.blogjava.net/alwayscy/archive/2007/08/07/135074.html</guid><wfw:comment>http://www.blogjava.net/alwayscy/comments/135074.html</wfw:comment><comments>http://www.blogjava.net/alwayscy/archive/2007/08/07/135074.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alwayscy/comments/commentRss/135074.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alwayscy/services/trackbacks/135074.html</trackback:ping><description><![CDATA[最近想用PERL通过SOAP与JAVA通信，想到了XFIRE，现在叫CXF提供的服务。但总是差一点成功。<br><br>第一步，<br>由于用了SPRING，所以最先看了这篇文章：<a title="Writing a service with Spring" href="http://cwiki.apache.org/CXF20DOC/writing-a-service-with-spring.html"><u><font color=#0000ff>Writing a service with Spring</font></u></a> <br>服务是建成功了，PERL和JAVA是可以正常通信了，详见<a href="http://www.blogjava.net/alwayscy/archive/2007/08/03/134343.html">上篇文章</a><br>可是CXF自己的CLIENT生成代码却访问&#8220;自定义结构数组&#8221;的函数不成功：<br>&nbsp;public List&lt;DeviceValue&gt; sendAlarmArr (List&lt;DeviceValue&gt; arr);<br><br>第二步，<br>左试右试不成功，甚至去试了Axis2，但那个生成的WSDL把上面的结构变成AnyType，估计不对。<br>又回来，看了<a href="http://cwiki.apache.org/CXF20DOC/aegis-databinding.html">Aegis绑定</a>，我还找到将它用到SPRING里的方法：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">beans&nbsp;</span><span style="COLOR: #ff0000">xmlns</span><span style="COLOR: #0000ff">="http://www.springframework.org/schema/beans"</span><span style="COLOR: #ff0000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;xmlns:xsi</span><span style="COLOR: #0000ff">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="COLOR: #ff0000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;xmlns:jaxws</span><span style="COLOR: #0000ff">="http://cxf.apache.org/jaxws"</span><span style="COLOR: #ff0000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;xsi:schemaLocation</span><span style="COLOR: #0000ff">="<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;http://www.springframework.org/schema/beans&nbsp;http://www.springframework.org/schema/beans/spring-beans.xsd<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;http://cxf.apache.org/jaxws&nbsp;http://cxf.apache.org/schemas/jaxws.xsd"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">import&nbsp;</span><span style="COLOR: #ff0000">resource</span><span style="COLOR: #0000ff">="classpath:META-INF/cxf/cxf.xml"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">import&nbsp;</span><span style="COLOR: #ff0000">resource</span><span style="COLOR: #0000ff">="classpath:META-INF/cxf/cxf-extension-soap.xml"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">import&nbsp;</span><span style="COLOR: #ff0000">resource</span><span style="COLOR: #0000ff">="classpath:META-INF/cxf/cxf-servlet.xml"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="serviceClass"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="com.exchangebit.nms.magic.NotifyServiceImpl"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="aegisDatabinding"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="org.apache.cxf.aegis.databinding.AegisDatabinding"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="serviceFactory"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="dataBinding"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="aegisDatabinding"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="serverBeanFactory"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="org.apache.cxf.frontend.ServerFactoryBean"</span><span style="COLOR: #ff0000">&nbsp;init-method</span><span style="COLOR: #0000ff">="create"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="address"</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">="/NotifyService"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="bindingId"</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">="http://schemas.xmlsoap.org/soap/"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="serviceBean"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="serviceClass"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="serviceFactory"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="serviceFactory"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">jaxws:endpoint&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="notifyService"</span><span style="COLOR: #ff0000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;implementor</span><span style="COLOR: #0000ff">="com.exchangebit.nms.magic.NotifyServiceImpl"</span><span style="COLOR: #ff0000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;address</span><span style="COLOR: #0000ff">="/NotifyService"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">jaxws:serviceFactory&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ref&nbsp;bean="serviceFactory"/&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/jaxws:serviceFactory</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">jaxws:endpoint</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">beans</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<br>其实，跟前一种JAX-WS的方式转换非常简单，把其中的注释去掉就是Aegis绑定，注释掉就是JAX-WS。<br>客户端没有在SPRING里试成功，但写代码也相当简单，Aegis真好：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getBean&nbsp;(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">notifyClient</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClientProxyFactoryBean&nbsp;factory&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;ClientProxyFactoryBean();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factory.setServiceClass(NotifyService.</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factory.setAddress(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://127.0.0.1:8080/ebnms/NotifyService</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factory.getServiceFactory().setDataBinding(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;AegisDatabinding());<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NotifyService&nbsp;client&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(NotifyService)&nbsp;factory.create();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DoTest&nbsp;(client);</span></div>
<p><br>这次，到是CXF的SERVER和CLIENT都可以正常通信了。但我不说也知道啦，PERL又出问题了!</p>
<p>&nbsp;</p>
第三步，<br>又进一步搜，才知道Document, Literal, RPC, Encoding对SOAP消息的影响，<a href="http://www-128.ibm.com/developerworks/webservices/library/ws-whichwsdl/">这篇文章</a>(<a href="http://www.ibm.com/developerworks/cn/webservices/ws-whichwsdl/">中文的</a>)相当好!<br>大义是RPC/Encoding将方法名称放入了operation节中，并且消息里含有类型信息，不方便检验。<br>而Document/Literal通过增加WSDL复杂度，将方法名、参数类型全部放入了types一节，方便了处理。<br>而SOAP::Lite只支持RPC/Encoding的方式，但也有办法让它形成Doc/Lit的消息：<a href="http://msdn2.microsoft.com/en-us/library/ms995764.aspx">点这里</a>。<br>但，这种方法只支持JAX-WS的服务，Aegis的PERL就会出错了。<br><br>所以，不管用哪种要么JAVA的CLIENT和SERVER通信有问题，不然就是把PERL拒之门外。我怀疑是不是CXF的JAX-WS的数组处理有问题，不然Aegis为何不出错？另外，Aegis对PERL的消息不够宽容，本已是Doc/Lit格式，只是带有TYPE信息也会出错。<br>不知如何解，先记在此，以后回过头来再研究了。
<img src ="http://www.blogjava.net/alwayscy/aggbug/135074.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alwayscy/" target="_blank">我爱佳娃</a> 2007-08-07 21:39 <a href="http://www.blogjava.net/alwayscy/archive/2007/08/07/135074.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>清晰快捷的XML/SOAP/WSDL学习材料(tutorials)</title><link>http://www.blogjava.net/alwayscy/archive/2007/07/10/129260.html</link><dc:creator>我爱佳娃</dc:creator><author>我爱佳娃</author><pubDate>Tue, 10 Jul 2007 02:25:00 GMT</pubDate><guid>http://www.blogjava.net/alwayscy/archive/2007/07/10/129260.html</guid><wfw:comment>http://www.blogjava.net/alwayscy/comments/129260.html</wfw:comment><comments>http://www.blogjava.net/alwayscy/archive/2007/07/10/129260.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/alwayscy/comments/commentRss/129260.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alwayscy/services/trackbacks/129260.html</trackback:ping><description><![CDATA[<p>这几个学习材料非常短小精悍，可清晰快捷的掌握以下几个概念，方便更深入学习。建议象我一样没接触过或者有疑惑的同学看一下。每个项目10至20分钟就可以看完、看懂：</p> <p>&nbsp;</p> <p>XML tutorial:</p> <p><a title="http://www.w3schools.com/xml/default.asp" href="http://www.w3schools.com/xml/default.asp">http://www.w3schools.com/xml/default.asp</a></p> <p>&nbsp;</p> <p>SOAP tutorial:</p> <p><a href="http://www.w3schools.com/soap/default.asp">http://www.w3schools.com/soap/default.asp</a> <p>&nbsp; <p>WSDL tutorial: <p><a href="http://www.w3schools.com/wsdl/default.asp">http://www.w3schools.com/wsdl/default.asp</a> <p>&nbsp; <p>WEB Service tutorial: <p><a href="http://www.w3schools.com/webservices/default.asp">http://www.w3schools.com/webservices/default.asp</a><img src ="http://www.blogjava.net/alwayscy/aggbug/129260.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alwayscy/" target="_blank">我爱佳娃</a> 2007-07-10 10:25 <a href="http://www.blogjava.net/alwayscy/archive/2007/07/10/129260.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>comet: 服务器推模式通讯</title><link>http://www.blogjava.net/alwayscy/archive/2007/07/03/127931.html</link><dc:creator>我爱佳娃</dc:creator><author>我爱佳娃</author><pubDate>Tue, 03 Jul 2007 10:10:00 GMT</pubDate><guid>http://www.blogjava.net/alwayscy/archive/2007/07/03/127931.html</guid><wfw:comment>http://www.blogjava.net/alwayscy/comments/127931.html</wfw:comment><comments>http://www.blogjava.net/alwayscy/archive/2007/07/03/127931.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alwayscy/comments/commentRss/127931.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alwayscy/services/trackbacks/127931.html</trackback:ping><description><![CDATA[<p>DWR2.0的推技术：<a href="http://wiki.springside.org.cn/display/springside/DWR">这里有介绍</a></p> <p>comet的实现介绍：<a href="http://www.matrix.org.cn/resource/article/2007-01-16/bcc2c490-a502-11db-8440-755941c7293d.html">这里</a></p> <p>其中的原理在于维护HTTP长连接，<a href="http://java.sun.com/j2se/1.5.0/docs/guide/net/http-keepalive.html">这里有介绍</a></p> <p>&nbsp;</p> <p>摘录一部分，说明其原理：</p> <p>Pushlet基于HTTP流，这种技术常常用在多媒体视频、通讯应用中，比如QuickTime。与装载HTTP页面之后马上关闭HTTP连接的做法相反，Pushlet采用HTTP流方式将新数据源源不断地推送到client，再此期间HTTP连接一直保持打开。有关如何在Java中实现这种Keep-alive的长连接请参看Sun提供的<u><a href="http://java.sun.com/j2se/1.5.0/docs/guide/net/http-keepalive.html">《HTTP Persistent Connection》</a></u>和<u><a href="http://www.w3.org/Protocols/rfc2616/rfc2616.html">W3C的《HTTP1.1规范</a></u>》。<br><b>示例1</b><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我们利用HTTP流开发一个JSP页面（因为它易于部署，而且它在web server中也是作为servlet对待的），此页面在一个定时器循环中不断地发送新的HTML内容给client：<pre><br>&lt;% <br>&nbsp;&nbsp;int i = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;try {<br>&nbsp;&nbsp;&nbsp;&nbsp;while (true) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.print("&lt;h1&gt;"+(i++)+"&lt;/h1&gt;");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.flush();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.sleep(3000);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (InterruptedException e) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.print("&lt;h1&gt;"+e+"&lt;/h1&gt;");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; } catch (Exception e) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.print("&lt;h1&gt;"+e+"&lt;/h1&gt;");<br>&nbsp;&nbsp; }<br>%&gt;<br></pre><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在Pushlet源代码中提供了此页面（examples/basics/push-html-stream.jsp）。上面的页面并不是十分有用，因为在我们刷新页面时，新内容机械地、持续不断地被添加到页面中，而不是server端更新的内容。<br><b>示例2</b><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;现在让我们步入Pushlet工作机理中一探究竟。通过运行Pushlet的示例源代码（examples/basics/ push-js-stream.html），我们会看到这个每3秒刷新一次的页面。那么它是如何实现的呢？<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;此示例中包含了三个文件：push-js-stream.html、push-js-stream-pusher.jsp、push-js-stream-display.html。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其中push-js-stream.html是主框架文件，它以HTML Frame的形式包含其它两个页面。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push-js-stream-pusher.jsp是一个JSP，它执行在server端，此文件内容如下：<pre><br>&nbsp;&nbsp;7: &lt;% <br>&nbsp;&nbsp;8:&nbsp;&nbsp; /** Start a line of JavaScript with a function call to parent frame. */<br>&nbsp;&nbsp;9:&nbsp;&nbsp; String jsFunPre = "&lt;script language=JavaScript &gt;parent.push('";<br> 10:&nbsp;&nbsp; <br> 11:&nbsp;&nbsp; /** End the line of JavaScript */<br> 12:&nbsp;&nbsp; String jsFunPost = "')&lt;/script&gt; ";<br> 13:&nbsp;&nbsp; <br> 14:&nbsp;&nbsp; int i = 1;<br> 15:&nbsp;&nbsp; try {<br> 16:&nbsp;&nbsp; <br> 17:&nbsp;&nbsp;&nbsp;&nbsp; // Every three seconds a line of JavaScript is pushed to the client<br> 18:&nbsp;&nbsp;&nbsp;&nbsp; while (true) {<br> 19:&nbsp;&nbsp;&nbsp;&nbsp; <br> 20:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Push a line of JavaScript to the client <br> 21:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.print(jsFunPre+"Page "+(i++)+jsFunPost);<br> 22:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.flush();<br> 23:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br> 24:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Sleep three secs<br> 25:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br> 26:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread.sleep(3000);<br> 27:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (InterruptedException e) {<br> 28:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Let client display exception <br> 29:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.print(jsFunPre+"InterruptedException: "+e+jsFunPost);<br> 30:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br> 31:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br> 32:&nbsp;&nbsp;&nbsp;&nbsp;} catch (Exception e) {<br> 33:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Let client display exception <br> 34:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.print(jsFunPre+"Exception: "+e+jsFunPost);<br> 35:&nbsp;&nbsp;&nbsp;&nbsp;}<br> 36: %&gt; <br></pre><br><b><i>注意在示例1和示例2中使用JSP时都存在一个问题：一些servlet引擎在某个client离开时会“吃掉”IOException，以至于JSP页面将永不抛出此异常。所以在这种情况下，页面循环将会永远执行下去。而这正是Pushlet实现采用servlet的原因之一：可以捕获到IOException。 </i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在上面代码的第21行中可以看到在一个定时器循环（3秒/周期）中打印了一些HTML并将它们输出到client浏览器。请注意，这里推送的并非HTML而是Javascript！这样做的意义何在？<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;它把类似“&lt;script language=JavaScript &gt;parent.push('Page 4')&lt;/script&gt;”的一行代码推送到浏览器；而具有JavaScript引擎的浏览器可以直接执行收到的每一行代码，并调用parent.push()函数。而代码中的Parent便是浏览器页面中所在Frame的Parent，也就是push-js-stream.html。让我们看看都发生了什么？<pre><br>&lt;script LANGUAGE="JavaScript"&gt;<br>var pageStart="&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY BGCOLOR=blue TEXT=white&gt;&lt;H2&gt;Server pushes: &lt;para&gt;";<br>var pageEnd="&lt;/H2&gt;&lt;/BODY&gt;&lt;/HTML&gt;";<br>&nbsp;&nbsp;// Callback function with message from server.<br>&nbsp;&nbsp;// This function is called from within the hidden JSP pushlet frame<br>&nbsp;&nbsp;function push(content) {<br> <br>&nbsp;&nbsp;&nbsp;&nbsp;// Refresh the display frame with the content received<br>&nbsp;&nbsp;&nbsp;&nbsp;window.frames['displayFrame'].document.writeln(pageStart+content+pageEnd);<br>&nbsp;&nbsp;&nbsp;&nbsp;window.frames['displayFrame'].document.close();<br>&nbsp;&nbsp;}<br><br>&lt;/script&gt;<br><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- frame to display the content pushed by the pushlet --&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Hidden frame with the pushlet that pushes lines of JavaScript--&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&lt;/FRAMESET&gt;<br></pre><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可以看到push-js-stream.html中的push()函数被名为pushletFrame的JSP Frame调用：把传入的参数值写入到displayFrame（此Frame为push-js-stream-display.html）。这是动态HTML的一个小技巧：使用document对象的writeln方法刷新某个Frame或者Window的内容。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;于是displayFrame成为了用于显示内容的、真正的视图。displayFrame初始化为黑色背景并显示“wait…”直到来自server的内容被推送过来：<pre><br>&lt;H1&gt;WAIT...&lt;/H1&gt;<br></pre><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这便是Pushlet的基本做法：我们从servlet（或者从示例中的JSP）把JavaScript代码作为HTTP流推送到浏览器。这些代码被浏览器的JavaScript引擎解释并完成一些有趣的工作。于是便轻松地完成了从server端的Java到浏览器中的JavaScript的回调。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;上面的示例展示了Pushlet原理，但这里存在一些等待解决的问题和需要增添的特性。于是我建立了一个小型的server端Pushlet框架（其类结构图表将会展示在下面），添加了一些用在client中的JavaScript库。由于client需要依赖更多的DHTML特性（比如Layers），我们将首先粗略地温习一些<u><a href="http://wiki.matrix.org.cn/Wiki.jsp?page=DHTML">DHTML知识</a></u>。示例代码见examples/dhtml。<img src ="http://www.blogjava.net/alwayscy/aggbug/127931.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alwayscy/" target="_blank">我爱佳娃</a> 2007-07-03 18:10 <a href="http://www.blogjava.net/alwayscy/archive/2007/07/03/127931.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>