﻿<?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-摆渡人，外婆桥！-随笔分类-WebService</title><link>http://www.blogjava.net/swingboat/category/7382.html</link><description>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;----只要路选对了，就不怕有多远！</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 11:59:02 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 11:59:02 GMT</pubDate><ttl>60</ttl><item><title>AXIS学习（1）</title><link>http://www.blogjava.net/swingboat/archive/2006/02/13/30477.html</link><dc:creator>swingboat</dc:creator><author>swingboat</author><pubDate>Mon, 13 Feb 2006 09:11:00 GMT</pubDate><guid>http://www.blogjava.net/swingboat/archive/2006/02/13/30477.html</guid><wfw:comment>http://www.blogjava.net/swingboat/comments/30477.html</wfw:comment><comments>http://www.blogjava.net/swingboat/archive/2006/02/13/30477.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/swingboat/comments/commentRss/30477.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/swingboat/services/trackbacks/30477.html</trackback:ping><description><![CDATA[<P>1.axis服务器包的校验。<BR>&nbsp; 到<A href="http://ws.apache.org/">http://ws.apache.org/</A>下载axis后，解压，拷贝axis到tomcat的webapps目录下。启动tomcat，运行<A href="http://localhost:8080/axis">http://localhost:8080/axis</A><BR>&nbsp; 点击“validation”，程序会检测少的包，并提示下载路径。我目前包含的包如下：<BR>&nbsp;&nbsp;&nbsp; axis.jar;&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; <BR>&nbsp;axis-ant.jar;&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; <BR>&nbsp;axis-schema.jar;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;commons-discovery-0.2.jar;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;commons-httpclient-3.0-rc2.jar;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;commons-logging-1.0.4.jar;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;jaxrpc.jar;&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; <BR>&nbsp;log4j-1.2.8.jar;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;saaj.jar;&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; <BR>&nbsp;wsdl4j-1.5.1.jar;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;activation.jar;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;mail.jar&nbsp;&nbsp;&nbsp;&nbsp; <BR><BR>2.环境变量的配置<BR>&nbsp; 其实运行axis是不用配置环境变量的。但有的时候需要利用axis提供的一些工具，产生一些文件，需要应用很多包，利用ClassPath就比较方便了。<BR>&nbsp; AXIS_HOME:<BR>&nbsp; AXIS_LIB:<BR>&nbsp; AXISCLASSPATH: <BR>&nbsp;<BR>3.把axis集成&nbsp;到项目中<BR>&nbsp; a、把上面所提到的包拷贝到项目相应的lib目录中<BR>&nbsp; b、修改web.xml文件，增加所需的servlet配置<BR>&nbsp; &lt;servlet&gt;<BR>&nbsp;&nbsp;&lt;servlet-name&gt;AxisServlet&lt;/servlet-name&gt;<BR>&nbsp;&nbsp;&lt;servlet-class&gt;org.apache.axis.transport.http.AxisServlet&lt;/servlet-class&gt;<BR>&nbsp;&lt;/servlet&gt;</P>
<P>&nbsp;&lt;servlet&gt;<BR>&nbsp;&nbsp;&lt;servlet-name&gt;AdminServlet&lt;/servlet-name&gt;<BR>&nbsp;&nbsp;&lt;servlet-class&gt;org.apache.axis.transport.http.AdminServlet&lt;/servlet-class&gt;<BR>&nbsp;&nbsp;&lt;load-on-startup&gt;100&lt;/load-on-startup&gt;<BR>&nbsp;&lt;/servlet&gt;</P>
<P>&nbsp;&lt;servlet&gt;<BR>&nbsp;&nbsp;&lt;servlet-name&gt;SOAPMonitorService&lt;/servlet-name&gt;<BR>&nbsp;&nbsp;&lt;servlet-class&gt;org.apache.axis.monitor.SOAPMonitorService&lt;/servlet-class&gt;<BR>&nbsp;&nbsp;&lt;init-param&gt;<BR>&nbsp;&nbsp;&nbsp;&lt;param-name&gt;SOAPMonitorPort&lt;/param-name&gt;<BR>&nbsp;&nbsp;&nbsp;&lt;param-value&gt;5001&lt;/param-value&gt;<BR>&nbsp;&nbsp;&lt;/init-param&gt;<BR>&nbsp;&nbsp;&lt;load-on-startup&gt;100&lt;/load-on-startup&gt;<BR>&nbsp;&lt;/servlet&gt;</P>
<P>&nbsp;&lt;servlet-mapping&gt;<BR>&nbsp;&nbsp;&lt;servlet-name&gt;AxisServlet&lt;/servlet-name&gt;<BR>&nbsp;&nbsp;&lt;url-pattern&gt;/servlet/AxisServlet&lt;/url-pattern&gt;<BR>&nbsp;&lt;/servlet-mapping&gt;</P>
<P>&nbsp;&lt;servlet-mapping&gt;<BR>&nbsp;&nbsp;&lt;servlet-name&gt;AxisServlet&lt;/servlet-name&gt;<BR>&nbsp;&nbsp;&lt;url-pattern&gt;*.jws&lt;/url-pattern&gt;<BR>&nbsp;&lt;/servlet-mapping&gt;</P>
<P>&nbsp;&lt;servlet-mapping&gt;<BR>&nbsp;&nbsp;&lt;servlet-name&gt;AxisServlet&lt;/servlet-name&gt;<BR>&nbsp;&nbsp;&lt;url-pattern&gt;/services/*&lt;/url-pattern&gt;<BR>&nbsp;&lt;/servlet-mapping&gt;</P>
<P>&nbsp;&lt;servlet-mapping&gt;<BR>&nbsp;&nbsp;&lt;servlet-name&gt;SOAPMonitorService&lt;/servlet-name&gt;<BR>&nbsp;&nbsp;&lt;url-pattern&gt;/SOAPMonitor&lt;/url-pattern&gt;<BR>&nbsp;&lt;/servlet-mapping&gt;</P>
<P>&nbsp;&lt;session-config&gt;<BR>&nbsp;&nbsp;&lt;session-timeout&gt;5&lt;/session-timeout&gt;<BR>&nbsp;&lt;/session-config&gt;</P>
<P>&nbsp;&lt;mime-mapping&gt;<BR>&nbsp;&nbsp;&lt;extension&gt;wsdl&lt;/extension&gt;<BR>&nbsp;&nbsp;&lt;mime-type&gt;text/xml&lt;/mime-type&gt;<BR>&nbsp;&lt;/mime-mapping&gt;</P>
<P>&nbsp;&lt;mime-mapping&gt;<BR>&nbsp;&nbsp;&lt;extension&gt;xsd&lt;/extension&gt;<BR>&nbsp;&nbsp;&lt;mime-type&gt;text/xml&lt;/mime-type&gt;<BR>&nbsp;&lt;/mime-mapping&gt;<BR>&nbsp;&nbsp; <BR>4.服务发布（jws文件发布和定制发布）<BR>&nbsp; a、jws文件发布<BR>&nbsp; 在web应用程序目录下，新建一个jws文件，例如：Hello.jws文件（其实就是个java文件，不包含包名）。&nbsp; <BR>&nbsp; public class Hello {<BR>&nbsp;public String hello(String name){<BR>&nbsp;&nbsp;if(name==null){<BR>&nbsp;&nbsp;&nbsp;name="";<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;return "Hi,你好 "+name+",欢迎来到Web服务世界！";<BR>&nbsp;}<BR>&nbsp; }<BR>&nbsp; 这样就可以直接查看hello服务相应的wsdl了：<A href="http://localhost:8080/testaxis/hello.jws?wsdl">http://localhost:8080/testaxis/hello.jws?wsdl</A><BR>&nbsp; <BR>&nbsp; b.定制发布。<BR>&nbsp; 定制发布，依赖一个server-confif.wsdd文件。<BR>&nbsp; 在web-inf目录下新建一个deploy.wsdd文件，设置发布的服务，例如：<BR>&nbsp; &lt;deployment xmlns="<A href="http://xml.apache.org/axis/wsdd/">http://xml.apache.org/axis/wsdd/</A>"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:java="<A href="http://xml.apache.org/axis/wsdd/providers/java">http://xml.apache.org/axis/wsdd/providers/java</A>"&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;service name="city" provider="java:RPC"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter name="className" value="yhp.test.axis.service.CityService"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter name="allowedMethods" value="*"/&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/service&gt;<BR>&nbsp; &lt;/deployment&gt;<BR>&nbsp; <BR>&nbsp; 利用axis提供的工具，就可以生成server-confif.wsdd文件了：<BR>&nbsp; java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd<BR>&nbsp; 在运行过程中发现：如果没有把axis自带的应用发布到服务器上，运行时会提示404的错误,未发现axis/servlet/AxisServlet。</P>
<P>5.客户端调用<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String endpoint = "<A href="http://localhost">http://localhost</A>:" + "8080"<BR>&nbsp;&nbsp;&nbsp;&nbsp;+ "/testaxis/services/city";&nbsp; //以定制发布方式，如果是jws文件，则endpoint为相应的jws文件</P>
<P>&nbsp;&nbsp;Service service = new Service();<BR>&nbsp;&nbsp;Call call = (Call) service.createCall();<BR>&nbsp;&nbsp;call.setTargetEndpointAddress(new java.net.URL(endpoint));<BR>&nbsp;&nbsp;call.setOperationName("getZip");</P>
<P>&nbsp;&nbsp;String res = (String) call.invoke(new Object[] {""});//object数组为远程方法的参数&nbsp;</P>
<P>&nbsp;&nbsp;System.out.println(res);<BR>&nbsp;&nbsp;<BR>6.生成客户端stub相关类<BR>&nbsp;&nbsp; Axis提供了工具生成客户端stub相关的类，即通过wsdl产生stub。<BR>&nbsp;&nbsp; java -cp %AXISCLASSPATH% org.apache.axis.wsdl.WSDL2Java <A href="http://localhost:8080/testaxis/services/city?wsdl">http://localhost:8080/testaxis/services/city?wsdl</A> <BR>&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; </P><img src ="http://www.blogjava.net/swingboat/aggbug/30477.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/swingboat/" target="_blank">swingboat</a> 2006-02-13 17:11 <a href="http://www.blogjava.net/swingboat/archive/2006/02/13/30477.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>