﻿<?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-无敌田斗-文章分类-axis</title><link>http://www.blogjava.net/baoyaer/category/19998.html</link><description>java</description><language>zh-cn</language><lastBuildDate>Sat, 16 Jun 2007 23:23:55 GMT</lastBuildDate><pubDate>Sat, 16 Jun 2007 23:23:55 GMT</pubDate><ttl>60</ttl><item><title>使用Handler来增强Web服务的功能 </title><link>http://www.blogjava.net/baoyaer/articles/124227.html</link><dc:creator>大田斗</dc:creator><author>大田斗</author><pubDate>Thu, 14 Jun 2007 01:28:00 GMT</pubDate><guid>http://www.blogjava.net/baoyaer/articles/124227.html</guid><wfw:comment>http://www.blogjava.net/baoyaer/comments/124227.html</wfw:comment><comments>http://www.blogjava.net/baoyaer/articles/124227.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baoyaer/comments/commentRss/124227.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baoyaer/services/trackbacks/124227.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原文作者：&nbsp;陈亚强原文链接：http://www.ibm.com/developerworks/cn/webservices/ws-handler/index.html高级软件工程师,&nbsp;北京华园天一科技有限公司&nbsp;2003&nbsp;年&nbsp;8&nbsp;月&nbsp;一、Handler的基本概念J2EE&nbsp;Web&nbsp;服务中的Handler...&nbsp;&nbsp;<a href='http://www.blogjava.net/baoyaer/articles/124227.html'>阅读全文</a><img src ="http://www.blogjava.net/baoyaer/aggbug/124227.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baoyaer/" target="_blank">大田斗</a> 2007-06-14 09:28 <a href="http://www.blogjava.net/baoyaer/articles/124227.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsp 调用webservice 实例 </title><link>http://www.blogjava.net/baoyaer/articles/116489.html</link><dc:creator>大田斗</dc:creator><author>大田斗</author><pubDate>Thu, 10 May 2007 06:46:00 GMT</pubDate><guid>http://www.blogjava.net/baoyaer/articles/116489.html</guid><wfw:comment>http://www.blogjava.net/baoyaer/comments/116489.html</wfw:comment><comments>http://www.blogjava.net/baoyaer/articles/116489.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baoyaer/comments/commentRss/116489.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baoyaer/services/trackbacks/116489.html</trackback:ping><description><![CDATA[<p>1.&nbsp; Download axis-1_1-src.tar<o:p></o:p> </p>
<p>http://ws.apache.org/axis/<o:p></o:p></p>
<p><a href="http://ws.apache.org/axis/download.cgi">http://ws.apache.org/axis/download.cgi</a><o:p></o:p></p>
<p>&#160;</p>
<p>2.&nbsp; unpack to d:/axis-1_1</p>
<p>3.配置系统环境变量<br><br>Windows:<br>set AXIS_HOME=D:\opensource\axis\axis-1_1<br>set AXIS_LIB=%AXIS_HOME%\lib<br>set AXISCLASSPATH=%AXIS_LIB%\axis.jar;<br>%AXIS_LIB%\commons-discovery.jar;<br>%AXIS_LIB%\commons-logging.jar;<br>%AXIS_LIB%\jaxrpc.jar;<br>%AXIS_LIB%\saajjar;<br>%AXIS_LIB%\log4j-1.2.8.jar;<br>%AXIS_LIB%\saaj.jar;<br>%AXIS_LIB%\wsdl4j.jar;<br><br></p>
<h2><a href="http://www-users.itlabs.umn.edu/classes/Fall-2003/csci5131/www_files/labs/lab4/wsdl2java_tutorial.html" target=_blank>How to use WSDL2Java</a></h2>
<p>&#160;</p>
<div><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>Given&nbsp;a&nbsp;WSDL&nbsp;file&nbsp;of&nbsp;a&nbsp;web&nbsp;service&nbsp;you&nbsp;can&nbsp;manually&nbsp;code&nbsp;a&nbsp;client&nbsp;based&nbsp;on&nbsp;your&nbsp;understanding&nbsp;of&nbsp;WSDL&nbsp;document&nbsp;or&nbsp;you&nbsp;can&nbsp;use&nbsp;a&nbsp;tool&nbsp;to&nbsp;do&nbsp;that&nbsp;for&nbsp;you.&nbsp;This&nbsp;is&nbsp;very&nbsp;handy&nbsp;when&nbsp;WSDL&nbsp;is&nbsp;very&nbsp;complex.&nbsp;Axis&nbsp;provides&nbsp;such&nbsp;tool.&nbsp;Here&nbsp;is&nbsp;the&nbsp;command&nbsp;that&nbsp;you&nbsp;can&nbsp;run&nbsp;on&nbsp;GoogleSeach.wsdl.&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>java&nbsp;org.apache.axis.wsdl.WSDL2Java&nbsp;--verbose&nbsp;GoogleSearch.wsdl<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>Make&nbsp;sure&nbsp;that&nbsp;you&nbsp;have&nbsp;axis.jar&nbsp;file&nbsp;in&nbsp;your&nbsp;classpath&nbsp;while&nbsp;executing&nbsp;this&nbsp;command,&nbsp;as&nbsp;that&nbsp;is&nbsp;where&nbsp;org.apache.axis.wsdl.WSDL2Java&nbsp;resides.&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>You&nbsp;will&nbsp;find&nbsp;a&nbsp;number&nbsp;of&nbsp;.java&nbsp;files&nbsp;generated&nbsp;in&nbsp;a&nbsp;subdirectory&nbsp;named&nbsp;GoogleSearch.&nbsp;These&nbsp;are&nbsp;the&nbsp;stub&nbsp;files&nbsp;or&nbsp;wrapper&nbsp;classes.&nbsp;The&nbsp;wrapper&nbsp;classes&nbsp;allow&nbsp;you&nbsp;to&nbsp;code&nbsp;in&nbsp;java&nbsp;data&nbsp;types&nbsp;and&nbsp;convert&nbsp;them&nbsp;transparently&nbsp;to&nbsp;XML.<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></div>
<br>
<p>在网上google 一个有效的wsdl:<br>http://www.webservicex.com/stockquote.asmx?WSDL<br></p>
<p>生成java 类：<br>D:\projects\test\webservice\src&gt;java org.apache.axis.wsdl.WSDL2Java --verbose http://www.webservicex.com/stockquote.asmx?WSDL<br><br>Parsing XML file:&nbsp; http://www.webservicex.com/stockquote.asmx?WSDL<br>Generating NET\webserviceX\www\StockQuote.java<br>Generating NET\webserviceX\www\StockQuoteLocator.java<br>Generating NET\webserviceX\www\StockQuoteSoap.java<br>Generating NET\webserviceX\www\StockQuoteSoapStub.java<br><br><span style="FONT-WEIGHT: bold">建立工程写 java test</span><br><br></p>
<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">import</span><span style="COLOR: #000000">&nbsp;NET.webserviceX.www.StockQuoteLocator;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;NET.webserviceX.www.StockQuoteSoap;<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 id=Codehighlighter1_91_123_Open_Image onclick="this.style.display='none'; Codehighlighter1_91_123_Open_Text.style.display='none'; Codehighlighter1_91_123_Closed_Image.style.display='inline'; Codehighlighter1_91_123_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_91_123_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_91_123_Closed_Text.style.display='none'; Codehighlighter1_91_123_Open_Image.style.display='inline'; Codehighlighter1_91_123_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_91_123_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</span><span id=Codehighlighter1_91_123_Open_Text><span style="COLOR: #008000">/**</span><span style="COLOR: #008000">//**<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;*&nbsp;</span><span style="COLOR: #808080">@author</span><span style="COLOR: #008000">&nbsp;andy.zhang<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_143_482_Open_Image onclick="this.style.display='none'; Codehighlighter1_143_482_Open_Text.style.display='none'; Codehighlighter1_143_482_Closed_Image.style.display='inline'; Codehighlighter1_143_482_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_143_482_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_143_482_Closed_Text.style.display='none'; Codehighlighter1_143_482_Open_Image.style.display='inline'; Codehighlighter1_143_482_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Test&nbsp;</span><span id=Codehighlighter1_143_482_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_143_482_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_186_480_Open_Image onclick="this.style.display='none'; Codehighlighter1_186_480_Open_Text.style.display='none'; Codehighlighter1_186_480_Closed_Image.style.display='inline'; Codehighlighter1_186_480_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_186_480_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_186_480_Closed_Text.style.display='none'; Codehighlighter1_186_480_Open_Image.style.display='inline'; Codehighlighter1_186_480_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;main(String[]&nbsp;arg)</span><span id=Codehighlighter1_186_480_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_186_480_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StockQuoteLocator&nbsp;binding</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;StockQuoteLocator();<br><img id=Codehighlighter1_262_430_Open_Image onclick="this.style.display='none'; Codehighlighter1_262_430_Open_Text.style.display='none'; Codehighlighter1_262_430_Closed_Image.style.display='inline'; Codehighlighter1_262_430_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_262_430_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_262_430_Closed_Text.style.display='none'; Codehighlighter1_262_430_Open_Image.style.display='inline'; Codehighlighter1_262_430_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_262_430_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_262_430_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StockQuoteSoap&nbsp;port</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">binding.getStockQuoteSoap();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;str</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">port.getQuote(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">IBM</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(str);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_461_474_Open_Image onclick="this.style.display='none'; Codehighlighter1_461_474_Open_Text.style.display='none'; Codehighlighter1_461_474_Closed_Image.style.display='inline'; Codehighlighter1_461_474_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_461_474_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_461_474_Closed_Text.style.display='none'; Codehighlighter1_461_474_Open_Image.style.display='inline'; Codehighlighter1_461_474_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(Exception&nbsp;e)</span><span id=Codehighlighter1_461_474_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_461_474_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></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>
<p><br><font face=宋体>运行测试：<br>D:\projects\test\webservice\classes&gt;java -classpath %classpath%;.;NET.webservice<br>X.www.*; Test</font><br></p>
<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">StockQuotes</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">Stock</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">Symbol</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">IBM</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Symbol</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">Last</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">92.37</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Last</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&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;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Date</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">3/4/2005</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Date</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">Time</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">4:00pm</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Time</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">Change</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">-0.04</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Change</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">Open</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">92.94</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Open</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">High</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">93.18</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">High</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">Low</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">92.36</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Low</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">Volume</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">4754000</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Volume</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">MktCap</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">150.8B</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">MktCap</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">PreviousClose</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">92.41</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">PreviousClose</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">PercentageChange</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">-0.04%</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">PercentageChange</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">AnnRange</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">81.90&nbsp;-&nbsp;99.10</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">AnnRange</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">Earns</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">4.94</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Earns</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">P-E</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">18.71</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">P-E</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">Name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">INTL&nbsp;BUSINESS&nbsp;MAC</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Name</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">Stock</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">StockQuotes</span><span style="COLOR: #0000ff">&gt;</span></div>
D:\projects\test\webservice\classes&gt;<br>成功了。：）<br><br>
<p class=MsoNormal style="TEXT-INDENT: 21pt"><span style="FONT-FAMILY: 宋体">这样，就完成了对</span><span lang=EN-US>.NET WebService</span><span style="FONT-FAMILY: 宋体">端的调用。</span></p>
<p class=MsoNormal style="TEXT-INDENT: 21pt"><span style="FONT-FAMILY: 宋体">(data filetype:mdb)<br></span><span style="FONT-FAMILY: 宋体"></span></p>
<br>
<p><strong></strong><br><br><br><br><br>&nbsp;</p>
<p><br><br>&nbsp;</p>
<img src ="http://www.blogjava.net/baoyaer/aggbug/116489.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baoyaer/" target="_blank">大田斗</a> 2007-05-10 14:46 <a href="http://www.blogjava.net/baoyaer/articles/116489.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用axis发布webservices相关内容索引</title><link>http://www.blogjava.net/baoyaer/articles/116476.html</link><dc:creator>大田斗</dc:creator><author>大田斗</author><pubDate>Thu, 10 May 2007 06:25:00 GMT</pubDate><guid>http://www.blogjava.net/baoyaer/articles/116476.html</guid><wfw:comment>http://www.blogjava.net/baoyaer/comments/116476.html</wfw:comment><comments>http://www.blogjava.net/baoyaer/articles/116476.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baoyaer/comments/commentRss/116476.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baoyaer/services/trackbacks/116476.html</trackback:ping><description><![CDATA[用axis发布webservices相关内容索引<br><br><a href="http://blog.csdn.net/lyj_china/archive/2006/04/13/662125.aspx"><u><font color=#800080>用axis发布webservices（一）</font></u></a><br>前两年就开始用axis做过一些webservcies的东西，现在希望对一些没怎么接触过的人有些帮助，主要是一个简单的例子。 <br><br><a href="http://blog.csdn.net/lyj_china/archive/2006/04/13/662138.aspx"><u><font color=#800080>用axis发布webservices（二）</font></u></a><br>主要介绍一些基本的webservices的基本概念和描述<br><br><a href="http://blog.csdn.net/lyj_china/archive/2006/04/14/663087.aspx"><u><font color=#0000ff>用axis发布webservices（三）</font></u></a><br>主要介绍在axis的webservics中如何传入对象类型或返回对象类型的操作，以及怎样获得访问者的ip地址<br><br><a href="http://blog.csdn.net/lyj_china/archive/2006/04/18/667484.aspx"><u><font color=#0000ff>用axis发布webservices（四）</font></u></a><br>一篇不错的文章，主要关于axis webservices访问权限及安全访问控制方面的内容，且我都试验成功过。<br><br><a href="http://blog.csdn.net/lyj_china/archive/2006/04/18/667538.aspx"><u><font color=#0000ff>用axis发布webservices（五）</font></u></a><br>用WS-Security 实现axis webservices加密的方法
<img src ="http://www.blogjava.net/baoyaer/aggbug/116476.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baoyaer/" target="_blank">大田斗</a> 2007-05-10 14:25 <a href="http://www.blogjava.net/baoyaer/articles/116476.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WSDL  规则解释</title><link>http://www.blogjava.net/baoyaer/articles/116413.html</link><dc:creator>大田斗</dc:creator><author>大田斗</author><pubDate>Thu, 10 May 2007 02:50:00 GMT</pubDate><guid>http://www.blogjava.net/baoyaer/articles/116413.html</guid><wfw:comment>http://www.blogjava.net/baoyaer/comments/116413.html</wfw:comment><comments>http://www.blogjava.net/baoyaer/articles/116413.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baoyaer/comments/commentRss/116413.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baoyaer/services/trackbacks/116413.html</trackback:ping><description><![CDATA[WSDL文档可以分为两部分。<span style="COLOR: red">顶部分由抽象定义组成</span>，而底部分则由具体描述组成。抽象部分以独立于平台和语言的方式定义SOAP消息，它们并不包含任何随机器或语言而变的元素。这就定义了一系列服务，截然不同的网站都可以实现。随网站而异的东西如序列化便归入底部分，因为它包含具体的定义。<br>l 抽象定义<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Types<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;独立与机器和语言的类型定义
<p>　　Messages<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包括函数参数（输入与输出分开）或文档描述</p>
<p>　　PortTypes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 引用消息部分中消息定义来描述函数签名（操作名、输入参数、输出参数）</p>
<p>2 具体定义<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bindings<br>　　　　&nbsp;&nbsp; PortTypes部分的每一操作在此绑定实现</p>
<p>　　Services<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　确定每一绑定的端口地址<br><br><br><br>下面的图中，箭头连接符代表文档不同栏之间的关系。点和箭头代表了引用或使用关系。双箭头代表"修改"关系。3-D的箭头代表了包含关系。这样，各Messages栏使用Types栏的定义，PortTypes栏使用Messages栏的定义；Bindings栏引用了PortTypes栏，Services栏引用Bindings栏，PortTypes和Bindings栏包含了operation元素，而Services栏包含了port元素。PortTypes栏里的operation元素由Bindings栏里的operation元素进一步修改或描述。<br><img height=723 alt="" src="http://www.blogjava.net/images/blogjava_net/baoyaer/canImageupload/jt-2001-10-12-image001.gif" width=507 border=0><br><br><br><br>首先看看一段简单的JAVA代码,我们用它作为WSDL的服务实现代码:<br><br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_17_80_Open_Image onclick="this.style.display='none'; Codehighlighter1_17_80_Open_Text.style.display='none'; Codehighlighter1_17_80_Closed_Image.style.display='inline'; Codehighlighter1_17_80_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_17_80_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_17_80_Closed_Text.style.display='none'; Codehighlighter1_17_80_Open_Image.style.display='inline'; Codehighlighter1_17_80_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Test</span><span id=Codehighlighter1_17_80_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_17_80_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_49_78_Open_Image onclick="this.style.display='none'; Codehighlighter1_49_78_Open_Text.style.display='none'; Codehighlighter1_49_78_Closed_Image.style.display='inline'; Codehighlighter1_49_78_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_49_78_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_49_78_Closed_Text.style.display='none'; Codehighlighter1_49_78_Open_Image.style.display='inline'; Codehighlighter1_49_78_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;String&nbsp;echo(String&nbsp;u)</span><span id=Codehighlighter1_49_78_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_49_78_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Hello&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;u;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<br><br>看看它导出的文件：<br>
<p>&nbsp;</p>
<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;//第一行申明该文档是XML。尽管这并不是必需的，但它有助于XML解析器决定是否解析WSDL文件或只是报错。第二行是WSDL文档的根元素：&lt;definitions&gt;。一些属性附属于根元素，就像&lt;schema&gt;子元素对于&lt;types&gt;元素。<br></span><span style="COLOR: #0000ff"><br>&nbsp;&nbsp;&nbsp; &lt;?</span><span style="COLOR: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"&nbsp;</span><span style="COLOR: #0000ff">?&gt;</span><span style="COLOR: #000000">&nbsp;<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">wsdl:definitions&nbsp;</span><span style="COLOR: #ff0000">targetNamespace</span><span style="COLOR: #0000ff">="http://localhost/axis/Test2.jws"<br></span><span style="COLOR: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;xmlns:wsdl</span><span style="COLOR: #0000ff">="http://schemas.xmlsoap.org/wsdl/"</span><span style="COLOR: #ff0000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:xsd</span><span style="COLOR: #0000ff">="http://www.w3.org/2001/XMLSchema"</span><span style="COLOR: #ff0000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:soapenc</span><span style="COLOR: #0000ff">="http://schemas.xmlsoap.org/soap/encoding/"</span><span style="COLOR: #ff0000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:wsdlsoap</span><span style="COLOR: #0000ff">="http://schemas.xmlsoap.org/wsdl/soap/"<br></span><span style="COLOR: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;xmlns:apachesoap</span><span style="COLOR: #0000ff">="http://xml.apache.org/xml-soap"</span><span style="COLOR: #ff0000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:intf</span><span style="COLOR: #0000ff">="http://localhost/axis/Test2.jws"</span><span style="COLOR: #ff0000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:impl</span><span style="COLOR: #0000ff">="http://localhost/axis/Test2.jws"</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: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>WSDL&nbsp;created&nbsp;by&nbsp;Apache&nbsp;Axis&nbsp;version:&nbsp;1.4<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>Built&nbsp;on&nbsp;Apr&nbsp;22,&nbsp;2006&nbsp;(06:55:48&nbsp;PDT)<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;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000">&nbsp;<br><br>
<p><span style="COLOR: red">定义好操作（或方法）以后，现在需要指定将向它们发送和从它们返回的参数。在 WSDL 术语中，所有参数称为&#8220;消息&#8221;。认为您是在递送消息而结果得到返回的消息是有用的。方法调用是这样一种操作：它准备返回&#8220;消息&#8221;来响应进入的消息。</span></p>
<br><br>&lt;message&gt;元素包含了Messages栏。如果我们把操作看作函数，&lt;message&gt;元素定义了那个函数的参数。&lt;message&gt;元素中的每个&lt;part&gt;子元素都和某个参数相符。输入参数在&lt;message&gt;元素中定义，与输出参数相隔离--输出参数有自己的&lt;message&gt;元素。兼作输入、输出的参数在输入输出的&lt;message&gt;元素中有它们相应的&lt;part&gt;元素。输出&lt;message&gt;元素以"Response"结尾，就像以前所用的"fooResponse"。每个&lt;part&gt;元素都有名字和类型属性，就像函数的参数有参数名和参数类型。<br><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">wsdl:message&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="echoResponse"</span><span style="COLOR: #0000ff">&gt;&nbsp;&nbsp; <font color=#000000>//返回的消息</font></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">wsdl:part&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="echoReturn"</span><span style="COLOR: #ff0000">&nbsp;type</span><span style="COLOR: #0000ff">="xsd:string"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">wsdl:message</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">wsdl:message&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="echoRequest"</span><span style="COLOR: #0000ff">&gt;&nbsp;&nbsp;<font color=#000000>//请求的消息</font></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">wsdl:part&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="u"</span><span style="COLOR: #ff0000">&nbsp;type</span><span style="COLOR: #0000ff">="xsd:string"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">wsdl:message</span><span style="COLOR: #0000ff">&gt;<br></span><span style="COLOR: #000000"><br><font face="Courier New">&lt;definitions&gt;</font> 元素包含一个或多个 <code>&lt;portType&gt;</code> 元素，实际上，每个元素都是您希望表示的一系列 <code>operation</code> 。或者，您也可以将单个 portType 元素看作是将各种方法组成类的一个逻辑分组。例如，如果您的供应链管理解决方案需要在客户和供应商之间进行交互，您最可能做的是分别定义与他们交互的功能性；也就是说，您将为用户和供应商各定义一个 portType。应该将每个 portType 称为 <em>服务</em>，因此整个 WSDL 文件将成为一个服务集合。 <br><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">wsdl:portType&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="Test2"</span><span style="COLOR: #0000ff">&gt;&nbsp;&nbsp; <font color=#000000>//一个portType可以看成一个类</font></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">wsdl:operation&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="echo"</span><span style="COLOR: #ff0000">&nbsp;parameterOrder</span><span style="COLOR: #0000ff">="u"</span><span style="COLOR: #0000ff">&gt;&nbsp;&nbsp; <font color=#000000>//一个operation就是一个方法</font></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">wsdl:input&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="echoRequest"</span><span style="COLOR: #ff0000">&nbsp;message</span><span style="COLOR: #0000ff">="impl:echoRequest"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp; //输入消息<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">wsdl:output&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="echoResponse"</span><span style="COLOR: #ff0000">&nbsp;message</span><span style="COLOR: #0000ff">="impl:echoResponse"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000">&nbsp; //返回消息<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">wsdl:operation</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;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">wsdl:portTyp&gt;</span></div>
<br><strong><font face=Arial>消息传递和传输:</font></strong><br>我以一种抽象方式定义了操作和消息，而不考虑实现的细节。实际上，WSDL 的任务是定义或描述 Web 服务，然后提供一个对外部框架的引用来定义 WSDL 用户将如何实现这些服务。可以将这个框架当作 WSDL 抽象定义和它们的实现之间的&#8220;<span style="COLOR: red">绑定（ <code>binding</code> ）&#8221;。<br></span><br>
<p>当前，最流行的绑定（ <code>binding</code> ）技术是使用<span style="COLOR: red">简单对象访问协议</span>（SOAP）。WSDL 将指定能够访问 Web 服务实际实现的 SOAP 服务器，<span style="COLOR: red">并且从那时起 SOAP 的整个任务就是将用户从 WSDL 文件带到它的实现</span>。<br><br><br><br></p>
<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">WSDL 编写的第三个步骤是描述将 SOAP 与 WSDL 文件绑定到一起的过程。您将把 <code>&lt;binding&gt;</code> 元素包括到 <code>&lt;definitions&gt;</code> 元素内。这个 binding 元素应该有 <code>name</code> 和 <code>type</code> 属性。 <code>name</code> 将标识这个绑定而 <code>type</code> 将标识您希望与这个绑定相关联的 portType（一组操作）。<br><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">wsdl:binding&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="Test2SoapBinding"</span><span style="COLOR: #ff0000">&nbsp;type</span><span style="COLOR: #0000ff">="impl:Test2"</span><span style="COLOR: #0000ff">&gt;<br></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;<font face="Courier New">&lt;wsdlsoap:binding/&gt;</font> 元素。该元素的用途是声明将把 SOAP 作为绑定和传输服务使用<br>
<p><code>&nbsp;&nbsp;&lt;wsdlsoap:binding&gt;</code> 元素有两个属性：style 和 transport。style 是一个可选属性，它描述该绑定内操作的性质。transport 属性指定 HTTP 作为该绑定将使用的级别较低的传输服务。SOAP 客户机将从 WSDL 文件中读取 SOAP 结构并与另一端的 SOAP 服务器协调.<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">wsdlsoap:binding&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="rpc"</span><span style="COLOR: #ff0000">&nbsp;transport</span><span style="COLOR: #0000ff">="http://schemas.xmlsoap.org/soap/http"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br>&nbsp;WSDL <code>&lt;operation&gt;</code> 元素，分别表示具体的操作。每个 <code>&lt;operation&gt;</code> 元素提供各自操作的绑定细节。因此，我提供了另一个 <code>extensibility</code> 元素，即 <code>&lt;wsdlsoap:operation/&gt;</code> （仍然是一个空元素，与它发生的那个操作相关）。该 <code>&lt;soap:operation/&gt;</code> 元素有一个 soapAction 属性，SOAP 客户机将使用该属性创建 SOAP 请求。 <br><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;//下面将WSDL描述与具体实现进行绑定,这里采用SOAP方式<br><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">wsdl:operation&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="echo"</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;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">wsdlsoap:operation&nbsp;</span><span style="COLOR: #ff0000">soapAction</span><span style="COLOR: #0000ff">=""</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000">&nbsp;<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">wsdl:input&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="echoRequest"</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;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">wsdlsoap:body&nbsp;</span><span style="COLOR: #ff0000">use</span><span style="COLOR: #0000ff">="encoded"</span><span style="COLOR: #ff0000">&nbsp;encodingStyle</span><span style="COLOR: #0000ff">="http://schemas.xmlsoap.org/soap/encoding/"</span><span style="COLOR: #ff0000">&nbsp;namespace</span><span style="COLOR: #0000ff">="http://DefaultNamespace"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">wsdl:input</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">wsdl:output&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="echoResponse"</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;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">wsdlsoap:body&nbsp;</span><span style="COLOR: #ff0000">use</span><span style="COLOR: #0000ff">="encoded"</span><span style="COLOR: #ff0000">&nbsp;encodingStyle</span><span style="COLOR: #0000ff">="http://schemas.xmlsoap.org/soap/encoding/"</span><span style="COLOR: #ff0000">&nbsp;namespace</span><span style="COLOR: #0000ff">="http://localhost/axis/Test2.jws"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">wsdl:output</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;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">wsdl:operation</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;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">wsdl:binding</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>//下面将发布的服务与前面的SOAP绑定进行关联<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">wsdl:service&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="Test2Service"</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">wsdl:port&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="Test2"</span><span style="COLOR: #ff0000">&nbsp;binding</span><span style="COLOR: #0000ff">="impl:Test2SoapBinding"</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;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">wsdlsoap:address&nbsp;</span><span style="COLOR: #ff0000">location</span><span style="COLOR: #0000ff">="http://localhost/axis/Test2.jws"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">wsdl:port</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;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">wsdl:service</span><span style="COLOR: #0000ff">&gt;</span></p>
</div>
<p><br><br>&nbsp;每个namespace属性都声明了一个缩略语，用在文档中。例如"xmlns:xsd"就为 http://www.w3.org/2001/XMLSchema定义了一个缩略语（xsd）。这就允许对该namespace的引用只需简单的在名字前加上前缀就可以了，如："xsd:int"中的"xsd"就是合法的类型名。普通范围规则可运用于缩略前缀。也就是说，前缀所定义的元素只在元素中有效。<br><br>　　Namespace派什么用？namespace的作用是要避免命名冲突。如果我建立一项Web Service，其中的WSDL文件包含一个名为"foo"的元素，而你想要使用我的服务与另一项服务连接作为补充，这样的话另一项服务的WSDL文件就不能包含名为"foo"的元素。两个服务器程序只有在它们在两个事例中表示完全相同的东西时，才可以取相同的名字。如果有了表示区别的namespace，我的网络服务里的"foo"就可以表示完全不同于另一个网络服务里"foo"的含义。在你的客户端里，你只要加以限制就可以引用我的"foo"。<br><br>　　见下例：http://www.infotects.com/fooService#foo 就是完全限制的名字，相当于"carlos:foo"，如果我声明了carlos作为http://www.infotects.com/fooService的快捷方式。请注意namespace中的URL是用来确定它们的唯一性的，同时也便于定位。URL所指向的地方不必是实际存在的网络地址，也可以使用GUID来代替或补充URL。例如，GUID"335DB901-D44A-11D4-A96E-0080AD76435D"就是一个合法的namespace指派。<br><br>　　targetNamespace属性声明了一个namespace，元素中所有的声明的名字都列于其内。在WSDL示例中，&lt;definitions&gt;的targetNamespace 是<a href="http://tempuri.org/wsdl"><u><font color=#0000ff>http://tempuri.org/wsdl</font></u></a>。这意味着所有在WSDL文档中声明的名字都属于这个namespace。&lt;schema&gt;元素有自己的targetNamespace属性，其值为 <a href="http://tempuri.org/xsd"><u><font color=#0000ff>http://tempuri.org/xsd</font></u></a> ，在&lt;schma&gt;元素中定义的所有名字都属于这个namespace而不是main的target namespace。</p>
<p>　　&lt;schema&gt;元素的以下这行声明了默认的namespace。Schema中所有有效的名字都属于这个namespace。</p>
<img src ="http://www.blogjava.net/baoyaer/aggbug/116413.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baoyaer/" target="_blank">大田斗</a> 2007-05-10 10:50 <a href="http://www.blogjava.net/baoyaer/articles/116413.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>axis学习笔记</title><link>http://www.blogjava.net/baoyaer/articles/116219.html</link><dc:creator>大田斗</dc:creator><author>大田斗</author><pubDate>Wed, 09 May 2007 08:42:00 GMT</pubDate><guid>http://www.blogjava.net/baoyaer/articles/116219.html</guid><wfw:comment>http://www.blogjava.net/baoyaer/comments/116219.html</wfw:comment><comments>http://www.blogjava.net/baoyaer/articles/116219.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baoyaer/comments/commentRss/116219.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baoyaer/services/trackbacks/116219.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.下载axis,解压后把webapps中的axis文件夹copy到web服务器中的webappa下，这样就可以浏览了。Axis支持三种web &nbsp;service的部署和开发，分别为：&nbsp;&nbsp;1、Dynamic &nbsp;Invocation &nbsp;Interface &nbsp;( &nbsp;DII)&nbsp;&nbsp;2、Stubs方式&nbsp;&nbs...&nbsp;&nbsp;<a href='http://www.blogjava.net/baoyaer/articles/116219.html'>阅读全文</a><img src ="http://www.blogjava.net/baoyaer/aggbug/116219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baoyaer/" target="_blank">大田斗</a> 2007-05-09 16:42 <a href="http://www.blogjava.net/baoyaer/articles/116219.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用Axis 1.1 for Java进行Web Services开发</title><link>http://www.blogjava.net/baoyaer/articles/99393.html</link><dc:creator>大田斗</dc:creator><author>大田斗</author><pubDate>Mon, 12 Feb 2007 03:13:00 GMT</pubDate><guid>http://www.blogjava.net/baoyaer/articles/99393.html</guid><wfw:comment>http://www.blogjava.net/baoyaer/comments/99393.html</wfw:comment><comments>http://www.blogjava.net/baoyaer/articles/99393.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baoyaer/comments/commentRss/99393.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baoyaer/services/trackbacks/99393.html</trackback:ping><description><![CDATA[
		<br />　　<br />　　下面的所有几乎来自Axis1.1的文档。但不完全来自文档，本人做了部分修改，这些修改完全出自国内读者的需要。<br />　　<br />　　<b>什么是SOAP？</b><br />　　<br />　　SOAP是一个基于XML的用于应用程序之间通信数据编码的传输协议。最初由微软和Userland Software提出，随着不断地完善和改进，SOAP很快被业界广泛应用，目前完全发布版本是1.1。在其发展过程中，W3C XML标准工作小组积极促成SOAP成为一个真正的开放标准。在写作此文档之时，SOAP1.2草案已经发布，1.2对1.1中相对混乱的部分做了改进。<br />　　<br />　　SOAP被广泛作为新一代跨平台、跨语言分布计算Web Services的重要部分。<br />　　<br />　　这里太肤浅的说明，请参阅我的整理《一步一步学习SOAP》。<br />　　<br />　　<b>什么是Axis?</b><br />　　<br />　　Axis本质上就是一个SOAP引擎，提供创建服务器端、客户端和网关SOAP操作的基本框架。Axis目前版本是为Java编写的，不过为C++的版本正在开发中。<br />　　<br />　　但Axis并不完全是一个SOAP引擎，它还包括：<br />　　<br />　　是一个独立的SOAP服务器。<br />　　<br />　　是一个嵌入Servlet引擎（例如Tomcat）的服务器。<br />　　<br />　　支持WSDL。<br />　　<br />　　提供转化WSDL为Java类的工具。<br />　　<br />　　提供例子程序。<br />　　<br />　　提供TCP/IP数据包监视工具。<br />　　<br />　　Axis是第三代Apache SOAP，从2000年起，SOAP v2开发小组开始讨论如何让Axis更加灵活、可配置，以及能够处理SOAP和来自W3C的各种XML标准。通过不断地讨论和代码编写，Axis目前取得了如下成果：<br />　　<br />　　速度提高。 Axis通过基于事件的SAX对XML文档进行处理，从而在速度和效率上比Apache SOAP有所提高。<br />　　<br />　　灵活性提高。<br />　　<br />　　稳定性提高。<br />　　<br />　　提供面向组件的部署。<br />　　<br />　　提供一个简洁的传输抽象框架。其核心引擎完全于传输方式独立。从而使基于何种协议传输的选择更加灵活。<br />　　<br />　　支持WSDL。包括到处WSDL和客户代理生成等。<br />　　<br />　　<b>在目前发行1.1版本中有什么东西？</b><br />　　<br />　　SOAP1.1/1.2引擎。<br />　　<br />　　灵活的配置和部署系统。<br />　　<br />　　支持及时自动生成SOAP服务（JWS）。<br />　　<br />　　支持所有的基本数据类型，为自定义串行操作提供类型映射系统。<br />　　<br />　　JavaBean的自动串行操作，包括将自定义属性类型映射到XML的属性和元素。<br />　　<br />　　RPC和基于消息的SOAP服务提供者。<br />　　<br />　　从部署好的服务自动生成WSDL。<br />　　<br />　　WSDL2Java工具可以从WSDL描述文件中产生相应的客户和服务器端SOAP操作框架。<br />　　<br />　　初步提供安全扩展，能够与Servlet2.2安全集成。<br />　　<br />　　通过HTTP Cookie和与传输无关的SOAP头信息提供会话跟踪。<br />　　<br />　　初步支持带附件的SOAP消息。<br />　　<br />　　在EJB方面提供把EJB作为Web服务的访问途经。<br />　　<br />　　基于Servlet的HTTP传输。<br />　　<br />　　基于JMS的传输。<br />　　<br />　　独立的服务器（但需要HTTP 服务器和Servlet容器支持）。<br />　　<br />　　提供客户端、服务器端相关应用程序的样例。<br />　　<br />　　Axis的运行需要如下组件包<br />　　<br />　　axis.jar<br />　　<br />　　jaxrpc.jar<br />　　<br />　　saaj.jar<br />　　<br />　　commons-logging.jar<br />　　<br />　　commons-discovery.jar<br />　　<br />　　wsdl4j.jar<br />　　<br />　　符合JAXP-1.1的XML处理器。<br />　　<br />　　一步一步开始用Axis进行Web Services操作<br />　　<br />　　下面给出一段简单的调用Web Services方法的客户端代码（由于原文档中直接用导入包的方式初学者不易了解那个类在那个包中，所以下面我做了一些简单的修改，希望能给学习者清晰的思路）：<br />　　<br />　　public class TestClient {<br />　　<br />　　public static void main(String[] args) {<br />　　<br />　　try{<br />　　<br />　　String endpoint="http://localhost:8080/axis/SayHello.jws?wsdl";// 调用的web服务的url地址，这里是一个http请求，希望得到的结果是wsdl文档。<br />　　<br />　　org.apache.axis.client.Service service=new org.apache.axis.client.Service();//建立请求服务框架实例。<br />　　<br />　　/*<br />　　<br />　　* org.apache.axis.client.Service实现JAX-RPC's javax.xml.rpc.Services接口<br />　　<br />　　* 该接口充当产生下面提到的org.apache.axis.client.Call实例<br />　　<br />　　* 的角色。<br />　　<br />　　*/<br />　　<br />　　org.apache.axis.client.Call call=(org.apache.axis.client.Call)service.createCall();//从框架中生成一个维护调用的实例。<br />　　<br />　　/*<br />　　<br />　　* org.apache.axis.client.Call实现了JAX-RPC's javax.xml.rpc.Call接口。<br />　　<br />　　*/<br />　　<br />　　call.setTargetEndpointAddress(new java.net.URL(endpoint));<br />　　<br />　　call.setOperationName(new javax.xml.namespace.QName("http://www.edu-edu.com.cn/luopc/ws","echoString"));//设置需要调用的函数名称<br />　　<br />　　String result=(String)call.invoke(new Object[]{"hello!"});<br />　　<br />　　System.out.println(result);<br />　　<br />　　}catch(Exception e){<br />　　<br />　　System.err.println(e.toString());<br />　　<br />　　}<br />　　<br />　　}<br />　　<br />　　}<br />　　<br />　　上面的代码可能和原文档中不同，并且在名称空间、函数多态上会给用户造成糊涂。不过别急，我在翻译手册的同时会加入很多解释的代码，如果哪位纯粹看不懂可以通过邮件获取帮助：luopc@edu-edu.com.cn ，邮件主题必须是我提供的文档名称。<br />　　<br />　　通过上面的调用代码，最终生成向服务器请求SOAP信息包，具体XML内容如下：<br />　　<br />　　&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"　　　 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"　　　 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;　&lt;SOAP-ENV:Body&gt; &lt;ns1:echoString xmlns:ns1="http://www.edu-edu.com.cn/luopc/ws"&gt;　 &lt;arg0 xsi:type="xsd:string"&gt;Hello!&lt;/arg0&gt; &lt;/ns1:echoString&gt;　&lt;/SOAP-ENV:Body&gt;&lt;/SOAP-ENV:Envelope&gt;<br />　　<br />　　这里我不再多少，细心的朋友请从代码中找相应的对应信息来进行自己的逻辑理解。至于SOAP协议在我以后的翻译文档中会加入进去。<br />　　<br />　　从上面的代码中我们在调用的时候输入了参数new Object[]{“hello!”}。然后从生成的SOAP请求包中可以看到自动序列化成&lt;arg0 xsi:type="xsd:string"&gt;Hello!&lt;/arg0&gt;。你可以看到参数名称为arg0，类型为xsd:string。其实在Axis客户端我们可以直接通过具体的方法来设置每一个参数名称、类型以及返回值类型。如下代码：<br />　　<br />　　call.addParameter("testParam",　　org.apache.axis.Constants.XSD_STRING,　 javax.xml.rpc.ParameterMode.IN);call.setReturnType(org.apache.axis.Constants.XSD_STRING);<br />　　<br />　　加入上面的代码之后生成如下的SOAP信息：<br />　　<br />　　&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"　　　 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"　　　 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;　&lt;SOAP-ENV:Body&gt; &lt;ns1:echoString xmlns:ns1="http://www.edu-edu.com.cn/luopc/ws"&gt;　 &lt;testParam xsi:type="xsd:string"&gt;Hello!&lt;/testParam&gt; &lt;/ns1:echoString&gt;　&lt;/SOAP-ENV:Body&gt;&lt;/SOAP-ENV:Envelope&gt;<br />　　<br />　　可以作简单的对比。<br />　　<br />　　也许你会疑惑设置参数名称和不设置参数名称有什么区别的疑问。这里作简单的解释：<br />　　<br />　　1. 为什么要call.setReturnType(org.apache.axis.Constants.XSD_STRING)？<br />　　<br />　　上面你可以调用或者可以不调用，但当返回结果中没有标明数据类型时Axis就不知道如何进行数据类型转换。当然如果返回类型你很清楚并且返回应答SOAP的结果中表明了相应的数据类型你便可以不进行上面的函数调用。<br />　　<br />　　2. 为什么要设置参数名称和类型？<br />　　<br />　　好了，下在你知道了如何调用Web Services了，下面告诉你如何写作和发布Web Services。<br />　　<br />　　通过Axis发布Web Services<br />　　<br />　　这里写作一个简单的类，然后一步一步进行发布。希望用户能够从中理出一些思路来。我在其他的关于Web Services的文章中会专门针对Web Services的通用发布方法。虽然Web Services牵涉到很多复杂的知识，但请大家不要感觉到这些操作简单，也许你已经有很多疑问，没关系，记下你的疑问，不断的投试。<br />　　<br />　　public class SayHello {　　public String echoString(String hello){　　　　return hello;　　}}<br />　　<br />　　哈哈，这个类是不是太简单了。<br />　　<br />　　一步一步来。<br />　　<br />　　Axis提供两种将Java类发布成Web Services的途径，即即时快速自动发布和通过配置文件进行发布。我们首先从最容易部署的入手。<br />　　<br />　　JWS----即时部署<br />　　<br />　　简单说就是将自己写的Java类源文件按一定的规则Copy到特定的目录下便可自行被Axis部署。具体步骤如下：<br />　　<br />　　将上面写的SayHello.java复制到axis目录下。<br />　　<br />　　改名为SayHello.jws。<br />　　<br />　　注意：在你写的类中不能有具体包的信息，因为这正是Axis即时部署不支持的。<br />　　<br />　　运行我们前面写的客户端进行测试，运行结果是hello!。<br />　<br />       目前你是否有如下的问题？<br /><br />       如果类中用多态的函数将如何处理？<br />   <br />      其实很简单，我们知道在每次发出调用请求之前代理程序在后台会直接请求你给的URL，这里是http://localhost:8080/axis/SayHello.jws?wsdl，其实这一请求返回来的是WSDL描述文件，通过具体的描述文件的内容和你输入的参数的类型比较，最终确定发送什么请求。细节上的解释需要用户阅读SOAP的具体内容。我也会提供相应的权威文当翻译的。<br /><br />      Axis的客户端默认就是通过HTTP协议传输吗？<br /><br />      如何将自己定义的类型进行映射？<br />      <br />      通过WSDD自定义部署<br /><br />      上面的自动部署相当简单，但当你需要<br />      <br />         映射自己的类型时<br />         不需要暴露源代码时<br />         需要自己的路径和包管理时<br />         对用户操作Web Services的事件进行相应时<br /><br />      就需要通过WSDD来自定义部署。<br />      <br />      前面新特性中提到过，Axis是一个很灵活的可配置系统，但在配置之前你得懂得Axis Web Services描述文档（WSDD）的格式和意义。这里有一个简单的例子（deploy.wsdd）：<br />    <pre class="overflow">   &lt;deployment xmlns="http://xml.apache.org/axis/wsdd/"<br />       xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"&gt;<br />     &lt;service name="SayHello2" provider="java:RPC"&gt;<br />      &lt;parameter name="className" value="luopc.ws.SayHello"/&gt;<br />      &lt;parameter name="allowedMethods" value="*"/&gt;<br />     &lt;/service&gt;<br />    &lt;/deployment&gt;</pre><br />      很简短的描述就会自定义对特定类以Web Services的形式发布。上面的每一个service项都会意味着开通一个相应的可被WSDL文件引用的服务。其内部描述信息将会描述从请求-处理请求-应答需要的所有核心信息。这里provider=”java:RPC”对应着相应的服务类为org.apache.axis.providers.java.RPCProvider。其实你可以通过多种方式提供相应的服务。在关于Axis的架构文章中将会详细解释这些内容。<br /><br />      上面的各个参数我不再解释，我想大家一看就明白。<br />      <br />      下面让我们在上面的简单配置上开始一步一步的进行各种高级配置：<br />      <br />      服务存活范围<br />      <br />      Axis提供Session、Request和Application三种可选范围配置。具体配置标记为：<br /><pre class="overflow">&lt;service name="MyService"...&gt;<br />  &lt;parameter name="scope" value="value"/&gt;<br />  ...<br />&lt;/service&gt;</pre><br />一旦你完成上面的文件。可以写一个脚本批处理文件来完成部署。批处理文件如下：<br /><pre class="overflow">java -classpath F:\resource\tools\axis-1_1\lib\axis.jar;F:\resource\tools\axis-1_1\lib\commons-discovery.jar;F:\resource\tools\axis-1_1\lib\jaxrpc.jar;F:\resource\tools\axis-1_1\lib\commons-logging.jar;F:\resource\tools\axis-1_1\lib\log4j-1.2.8.jar;F:\resource\tools\axis-1_1\lib\wsdl4j.jar;F:\resource\tools\axis-1_1\lib\j2ee.jar org.apache.axis.client.AdminClient sayHelloD.wsdd。</pre><br />      上面的一些jar文件都是Axis运行需要的组件，所以必须添加到环境中。上面的目录是我的机器里的目录，你可以按自己的目录进行。<br />   <br />      如果部署成功，会输出&lt;Admin&gt;Done processing&lt;/Admin&gt;信息。<br />但本人这里再强调几个：<br />         你首先要将你编译好的类放到axis/web-inf/classes/下面。<br />         可以通过<a href="http://localhost:8080/axis/services/SayHello2">http://localhost:8080/axis/services/SayHello2</a>来调用。<br />         你可以从我的配置文件中发现了包的概念。<br />         可以用相应的xml文件进行卸载已部署的服务。<br />        <br />       卸载方法如下：<br />         编写如下XML文档<br /><pre class="overflow">&lt;undeployment xmlns="http://xml.apache.org/axis/wsdd/"&gt;<br /> &lt;service name="MyService"/&gt;<br />&lt;/undeployment&gt;</pre><br />      把上面的批处理文件中的sayHelloD.wsdd换成该文件便可。<br /><br />      继续关注高级部署<br /><br />      如果你想知道自己的某个Web Services被调用多少次，你应该怎么做呢？<br />Axis提供了相应的跟踪机制。<br /><br />      首先你应该编写一个满足一定接口的事件处理类。<br />      <br />      在配置文件中添加事件处理器信息。<br /><br />     我们先看看配置文件中的信息：<br /><pre class="overflow">&lt;deployment xmlns="http://xml.apache.org/axis/wsdd/"<br />   xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"&gt;<br />  &lt;!-- define the logging handler configuration --&gt;<br /> &lt;handler name="track" type="java:samples.userguide.example4.LogHandler"&gt;<br />  &lt;parameter name="parameter1" value="访问该services"/&gt;<br /> &lt;/handler&gt;<br /> &lt;!-- define the service, using the log handler we just defined --&gt;<br /> &lt;service name="SayHello2" provider="java:RPC"&gt;<br />  &lt;requestFlow&gt;<br />   &lt;handler type="track"/&gt;<br />  &lt;/requestFlow&gt;<br />  &lt;parameter name="className" value="luopc.ws.SayHello"/&gt;<br />  &lt;parameter name="allowedMethods" value="*"/&gt;<br /> &lt;/service&gt;<br />&lt;/deployment&gt;</pre><br />      上面的绿色部分起到核心的配置信息提供。<br /><br />      下面提供一个事件处理类，同样来自原文档，但为了更清晰我同样将所有的类前面加上了包名称。<br />package luopc.ws;<br /><br />/**<br />* @author luopc<br />*/<br />public class EventHandler extends org.apache.axis.handlers.BasicHandler{<br />    public void invoke(org.apache.axis.MessageContext mtxt){<br />        String param=(String)getOption("parameter1");<br />        System.out.println(param);<br />    }<br /><br />    public static void main(String[] args) {<br />    }<br />}<br /><br />      就这样，我们对请求跟踪了。嘻嘻。<br /><br />      可以远程进行管理（不推荐）<br /><br />      前面就提到服务类型的问题，在Axis有四种类型的服务，分别为RPC、Document、Wrapped和Message。 <br />　　<font color="#0000ff"><strong>Axis下 WebService 的调用问题<br /></strong></font><font color="#000000">人按照网上例子制作一个Sample，遇到一个问题，当用JAVA编写的客户端调用返回值类型是int的函数时能正确得到返回值，但是调用返回值类型是String的函数时，不能正确得到返回值。以下为服务器端程序源代码：<br />　　<br />　　/**<br />　　* 此处插入类型描述。<br />　　* 创建日期：(2005-10-27 10:32:48)<br />　　* @author：Administrator<br />　　*/<br />　　import java.util.*;<br />　　<br />　　public class ZxjTest {<br />　　protected String name="gaga";<br />　　protected int age=20;<br />　　protected int sex=22;<br />　　protected List items=new ArrayList();<br />　　/**<br />　　* ZxjTest 构造子注解。<br />　　*/<br />　　public ZxjTest() {<br />　　super();<br />　　}<br />　　public String getName()<br />　　{<br />　　return name;<br />　　}<br />　　public int getAge()<br />　　{<br />　　return age;<br />　　}<br />　　public int getSex()<br />　　{<br />　　return sex;<br />　　}<br />　　public List getItems()<br />　　{<br />　　return items;<br />　　}<br />　　}<br />　　<br />　　客户端调用的源代码：<br />　　String endpoint = "http://myserver:7001/ZxjTest.jws";<br />　　Service service = new Service();<br />　　Call call = (Call) service.createCall();<br />　　call.setTargetEndpointAddress(new java.net.URL(endpoint));<br />　　call.setOperationName("getName");<br />　　String ret = (String) call.invoke(new Object[] {});<br />　　<br />　　出错的就是最后一句。如果这一句改成调用返回值是Int的函数，就不会出错。请问，这是Axis的配置的问题吗？如果是，该如何改？<br />　　<br />　　应该不大可能是Axis的配置的问题，你调用的是<br />　　<br />　　public String getName()<br />　　{<br />　　return name;<br />　　}<br />　　<br />　　因此返回的是String，这个是没有错误的！<br />　　<br />　　你的程序我在自己机器上运行的很好！不管调用哪个方法，都一样输出。你可以把String ret = (String) call.invoke(new Object[] {});改成Object ret = (Object)call.invoke(new Object[] {});这样的话你就不用去类型转换了！<br />　　<br />　　或者如果你要类型转换的话，也可以这样做：<br />　　<br />　　1，如果调用返回类型是string的方法 那么最后一句应该为<br />　　<br />　　String ret = (String) call.invoke(new Object[] {});<br />　　<br />　　2，如果调用返回类型是int的方法，那么最后一句应该为<br />　　<br />　　Integer ret = (Integer)call.invoke(new Object[] {});<br />　　<br />　　还有要注意的是在利用客户端进行测试的时候，确保服务器已经启动，否则会出错。如果你是采用http://myserver:7001/ZxjTest.jws的话，你的web-inf下确保没有<br />　　<br />　　server-config.wsdd，否则也会出错。<br />　　<br />　　还有一个很简单的错误，可能仅仅只是WebLogic配置的问题。最好重建一个应用并重新配置。</font><img src ="http://www.blogjava.net/baoyaer/aggbug/99393.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baoyaer/" target="_blank">大田斗</a> 2007-02-12 11:13 <a href="http://www.blogjava.net/baoyaer/articles/99393.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>