﻿<?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-Martin's Home-文章分类-WebService</title><link>http://www.blogjava.net/martinyuan/category/28663.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 09 Jan 2008 17:21:04 GMT</lastBuildDate><pubDate>Wed, 09 Jan 2008 17:21:04 GMT</pubDate><ttl>60</ttl><item><title>Axis 开发WebService</title><link>http://www.blogjava.net/martinyuan/articles/173698.html</link><dc:creator>Martin Yuan</dc:creator><author>Martin Yuan</author><pubDate>Tue, 08 Jan 2008 09:17:00 GMT</pubDate><guid>http://www.blogjava.net/martinyuan/articles/173698.html</guid><wfw:comment>http://www.blogjava.net/martinyuan/comments/173698.html</wfw:comment><comments>http://www.blogjava.net/martinyuan/articles/173698.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/martinyuan/comments/commentRss/173698.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/martinyuan/services/trackbacks/173698.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">网上关于应用axis（一个开源的soap引擎）开发web services的文档非常多，可做自己学习过程的参考。<br />下文是自己在使用axis开发web services的过程中做的一些总结。<br /><br />一、环境准备<br /><font color="#6e00aa">1</font>、从axis网站下载相关内容：http<font color="#333399">:</font><font color="#008000">//apache.justdn.org/ws/axis/1_3/</font><br /><font color="#6e00aa">2</font>、解压后，参考webapps\axis，为了使你的web应用axis开发web service，需要做的事情如下<font color="#333399">:</font><br />     a. 将webapps\axis\WEB<font color="#333399">-</font>INF\lib下的相关jar包拷贝到你自己web应用的lib目录下。另外需要activation.jar、 mail.jar两个支持包。<br />     b.修改web.xml，加载axis的servlet。<br /><font color="#333399">&lt;</font>listener<font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font>listener<font color="#333399">-</font><font color="#0000ff"><strong>class</strong></font><font color="#333399">&gt;</font>org.apache.axis.transport.http.AxisHTTPSessionListener<font color="#333399">&lt;</font><font color="#333399">/</font>listener<font color="#333399">-</font><font color="#0000ff"><strong>class</strong></font><font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font><font color="#333399">/</font>listener<font color="#333399">&gt;</font><br /><br /><font color="#333399">&lt;</font>servlet<font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font>servlet<font color="#333399">-</font>name<font color="#333399">&gt;</font>AxisServlet<font color="#333399">&lt;</font><font color="#333399">/</font>servlet<font color="#333399">-</font>name<font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font>display<font color="#333399">-</font>name<font color="#333399">&gt;</font>Apache<font color="#333399">-</font>Axis Servlet<font color="#333399">&lt;</font><font color="#333399">/</font>display<font color="#333399">-</font>name<font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font>servlet<font color="#333399">-</font><font color="#0000ff"><strong>class</strong></font><font color="#333399">&gt;</font><br />org.apache.axis.transport.http.AxisServlet<br /><font color="#333399">&lt;</font><font color="#333399">/</font>servlet<font color="#333399">-</font><font color="#0000ff"><strong>class</strong></font><font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font><font color="#333399">/</font>servlet<font color="#333399">&gt;</font><br /><br /><font color="#333399">&lt;</font>servlet<font color="#333399">-</font>mapping<font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font>servlet<font color="#333399">-</font>name<font color="#333399">&gt;</font>AxisServlet<font color="#333399">&lt;</font><font color="#333399">/</font>servlet<font color="#333399">-</font>name<font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font>url<font color="#333399">-</font>pattern<font color="#333399">&gt;</font><font color="#333399">/</font>servlet<font color="#333399">/</font>AxisServlet<font color="#333399">&lt;</font><font color="#333399">/</font>url<font color="#333399">-</font>pattern<font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font><font color="#333399">/</font>servlet<font color="#333399">-</font>mapping<font color="#333399">&gt;</font><br /><br /><font color="#333399">&lt;</font>servlet<font color="#333399">-</font>mapping<font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font>servlet<font color="#333399">-</font>name<font color="#333399">&gt;</font>AxisServlet<font color="#333399">&lt;</font><font color="#333399">/</font>servlet<font color="#333399">-</font>name<font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font>url<font color="#333399">-</font>pattern<font color="#333399">&gt;</font><font color="#333399">*</font>.jws<font color="#333399">&lt;</font><font color="#333399">/</font>url<font color="#333399">-</font>pattern<font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font><font color="#333399">/</font>servlet<font color="#333399">-</font>mapping<font color="#333399">&gt;</font><br /><br /><font color="#333399">&lt;</font>servlet<font color="#333399">-</font>mapping<font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font>servlet<font color="#333399">-</font>name<font color="#333399">&gt;</font>AxisServlet<font color="#333399">&lt;</font><font color="#333399">/</font>servlet<font color="#333399">-</font>name<font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font>url<font color="#333399">-</font>pattern<font color="#333399">&gt;</font><font color="#333399">/</font>services<font color="#333399">/*</font><font color="#333399">&lt;</font><font color="#333399">/</font>url<font color="#333399">-</font>pattern<font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font><font color="#333399">/</font>servlet<font color="#333399">-</font>mapping<font color="#333399">&gt;</font><br /><br />二、开发service<br />服务器端的service为普通的java类：com.hnisi.axis.BookOrder<br /><br /><font color="#0000ff"><strong>public</strong></font><font color="#0000ff"><strong>class</strong></font> BookOrder {<br /><font color="#0000ff"><strong>public</strong></font> String getName(String name) {<br />System.out.println(<font color="#ff00bf">"start execute ..."</font>);<br /><font color="#0000ff"><strong>return</strong></font><font color="#ff00bf">"book name: "</font><font color="#333399">+</font> name;<br />}<br /><br /><font color="#0000ff"><strong>public</strong></font> Book setPrice(Book book){<br />book.setPrice(<font color="#6e00aa">10</font>);<br /><font color="#0000ff"><strong>return</strong></font> book;<br />}<br />}<br /><br />com.hnisi.axis.Book为简单的值对象，包含两个属性name,price。<br /><br />三、发布service<br /><font color="#6e00aa">1</font>、手工修改server<font color="#333399">-</font>config.wsdd文件（在已有server<font color="#333399">-</font>config.wsdd文件的情况下）<br />添加service：<br /><br /><font color="#333399">&lt;</font>service name<font color="#333399">=</font><font color="#ff00bf">"BookOrder"</font> provider<font color="#333399">=</font><font color="#ff00bf">"java:RPC"</font><font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font>parameter name<font color="#333399">=</font><font color="#ff00bf">"allowedMethods"</font> value<font color="#333399">=</font><font color="#ff00bf">"*"</font><font color="#333399">/</font><font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font>parameter name<font color="#333399">=</font><font color="#ff00bf">"className"</font> value<font color="#333399">=</font><font color="#ff00bf">"com.hnisi.axis.BookOrder"</font><font color="#333399">/</font><font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font><font color="#333399">/</font>service<font color="#333399">&gt;</font><br /><br />allowedMethods是调用的服务的方法，如果有多个方法的话可以用空格分开,当用<font color="#333399">*</font>的时候表示全部。<br /><br /><font color="#6e00aa">2</font>、写deploy.wsdd文件，使用axis提供的AdminClient工具，自动生成server<font color="#333399">-</font>config.wsdd。deploy.wsdd文件如下：<br /><br /><font color="#333399">&lt;</font>deployment xmlns<font color="#333399">=</font><font color="#ff00bf">"http://xml.apache.org/axis/wsdd/"</font><br />xmlns<font color="#333399">:</font>java<font color="#333399">=</font><font color="#ff00bf">"http://xml.apache.org/axis/wsdd/providers/java"</font><font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font>service name<font color="#333399">=</font><font color="#ff00bf">"BookOrder"</font> provider<font color="#333399">=</font><font color="#ff00bf">"java:RPC"</font><font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font>parameter name<font color="#333399">=</font><font color="#ff00bf">"className"</font> value<font color="#333399">=</font><font color="#ff00bf">"com.hnisi.axis.BookOrder"</font><font color="#333399">/</font><font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font>parameter name<font color="#333399">=</font><font color="#ff00bf">"allowedMethods"</font> value<font color="#333399">=</font><font color="#ff00bf">"*"</font><font color="#333399">/</font><font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font><font color="#333399">/</font>service<font color="#333399">&gt;</font><br /><font color="#333399">&lt;</font><font color="#333399">/</font>deployment<font color="#333399">&gt;</font><br /><br />deploy.wsdd文件位于<font color="#333399">/</font>web<font color="#333399">-</font>inf目录下。<br />使用AdminClient发布该service，在<font color="#333399">/</font>web<font color="#333399">-</font>inf目录下新建deploy.bat文件<font color="#333399">:</font><br /><br />set LIB_HOME<font color="#333399">=</font>.<font color="#333399">/</font>lib<br />set CPATH<font color="#333399">=</font>.;<font color="#333399">%</font>LIB_HOME<font color="#333399">%</font>\axis.jar;<font color="#333399">%</font>LIB_HOME<font color="#333399">%</font>\jaxrpc.jar;<font color="#333399">%</font>LIB_HOME<font color="#333399">%</font>\commons<font color="#333399">-</font>logging<font color="#333399">-</font><font color="#6e00aa">1</font>.<font color="#6e00aa">0</font>.<font color="#6e00aa">2</font>.jar;<font color="#333399">%</font>LIB_HOME<font color="#333399">%</font>\commons<font color="#333399">-</font>discovery<font color="#333399">-</font><font color="#6e00aa">0</font>.<font color="#6e00aa">2</font>.jar;<font color="#333399">%</font>LIB_HOME<font color="#333399">%</font>\saaj.jar;<font color="#333399">%</font>LIB_HOME<font color="#333399">%</font>\activation.jar;<font color="#333399">%</font>LIB_HOME<font color="#333399">%</font>\mail.jar<br />java <font color="#333399">-</font>classpath <font color="#333399">%</font>CPATH<font color="#333399">%</font> org.apache.axis.client.AdminClient <font color="#333399">-</font>lhttp<font color="#333399">:</font><font color="#008000">//localhost:8080/test/services/AdminService deploy.wsdd</font><br />pause<br /><br />执行deploy.bat，会生成server<font color="#333399">-</font>config.wsdd文件。成功生成的几个必要条件：<br />a. axis相关jar包存在于<font color="#333399">/</font>web<font color="#333399">-</font>inf<font color="#333399">/</font>lib下<br />b. 你的tomcat必须启动，同时留意deploy.bat文件的第三行<font color="#ff00bf">"http://localhost:8080/test/services/AdminService"</font>,根据具体情况修改。<br />否则会报<font color="#ff00bf">"java.net.ConnectException: Connection refused: connect"</font>异常。<br /><br />综合上述，在第一次发布service的情况下，需用方式<font color="#6e00aa">2</font>生成server<font color="#333399">-</font>config.wsdd，后续开发过程中，使用方式<font color="#6e00aa">1</font>直接修改server<font color="#333399">-</font>config.wsdd文件。<br /><br />发布后，执行http<font color="#333399">:</font><font color="#008000">//localhost:8080/test/services，能看到当前web应用的所有web service.</font><br />http<font color="#333399">:</font><font color="#008000">//localhost:8080/test/services/BookOrder?wsdl 为ServerService对应WSDL.</font><br />还可以通过IE浏览器直接调用服务，方法是在服务URL后加<font color="#ff00bf">"method=xxx"</font>，其中xxx是要调用的方法名称<font color="#333399">:</font><br />http<font color="#333399">:</font><font color="#008000">//localhost:8080/test/services/BookOrder?method=getName&amp;name=HH</font><br /><br />四、调用service<br />有两种方式可以调用service。<br /><font color="#6e00aa">1</font>、使用org.apache.axis.client.Call直接调用<br /><br /><font color="#0000ff"><strong>package</strong></font> com.hnisi.axis;<br /><br /><font color="#0000ff"><strong>import</strong></font> org.apache.axis.client.Call;<br /><font color="#0000ff"><strong>import</strong></font> org.apache.axis.client.Service;<br /><br /><font color="#0000ff"><strong>public</strong></font><font color="#0000ff"><strong>class</strong></font> CallService {<br /><font color="#0000ff"><strong>public</strong></font><font color="#0000ff"><strong>static</strong></font><font color="#0000ff"><strong>void</strong></font> main(String[] args) {<br /><font color="#0000ff"><strong>try</strong></font> {<br />String endpoint <font color="#333399">=</font><font color="#ff00bf">"http://localhost:8080/test/services/BookOrder"</font>; <br />Service service <font color="#333399">=</font><font color="#0000ff"><strong>new</strong></font> Service();<br />Call call <font color="#333399">=</font> (Call) service.createCall();<br /><br />call.setTargetEndpointAddress( <font color="#0000ff"><strong>new</strong></font> java.net.URL(endpoint) );<br />call.setOperationName(<font color="#ff00bf">"getName"</font> );<br /><br />String ret <font color="#333399">=</font> (String) call.invoke(<font color="#0000ff"><strong>new</strong></font> Object[] {<font color="#ff00bf">"yehailong"</font>});<br />System.out.println(<font color="#ff00bf">"return value is "</font><font color="#333399">+</font> obj[<font color="#6e00aa">0</font>]);<br />} <font color="#0000ff"><strong>catch</strong></font> (Exception ex) {<br />ex.printStackTrace();<br />}<br />}<br />}<br /><br /><font color="#6e00aa">2</font>、根据wsdl生成客户端java代码<br />在<font color="#333399">/</font>web<font color="#333399">-</font>inf目录下新建make.bat文件<font color="#333399">:</font><br /><br />set LIB_HOME<font color="#333399">=</font>.<font color="#333399">/</font>lib<br />set CPATH<font color="#333399">=</font>.;<font color="#333399">%</font>LIB_HOME<font color="#333399">%</font>\axis.jar;<font color="#333399">%</font>LIB_HOME<font color="#333399">%</font>\jaxrpc.jar;<font color="#333399">%</font>LIB_HOME<font color="#333399">%</font>\commons<font color="#333399">-</font>logging<font color="#333399">-</font><font color="#6e00aa">1</font>.<font color="#6e00aa">0</font>.<font color="#6e00aa">2</font>.jar;<font color="#333399">%</font>LIB_HOME<font color="#333399">%</font>\commons<font color="#333399">-</font>discovery<font color="#333399">-</font><font color="#6e00aa">0</font>.<font color="#6e00aa">2</font>.jar;<font color="#333399">%</font>LIB_HOME<font color="#333399">%</font>\saaj.jar;<font color="#333399">%</font>LIB_HOME<font color="#333399">%</font>\activation.jar;<font color="#333399">%</font>LIB_HOME<font color="#333399">%</font>\mail.jar;<font color="#333399">%</font>LIB_HOME<font color="#333399">%</font>\wsdl4j<font color="#333399">-</font><font color="#6e00aa">1</font>.<font color="#6e00aa">5</font>.<font color="#6e00aa">1</font>.jar;<font color="#333399">%</font>LIB_HOME<font color="#333399">%</font>\log4j<font color="#333399">-</font><font color="#6e00aa">1</font>.<font color="#6e00aa">2</font>.<font color="#6e00aa">6</font>.jar;.<font color="#333399">/</font>classes<br /><br />java <font color="#333399">-</font>classpath <font color="#333399">%</font>CPATH<font color="#333399">%</font> org.apache.axis.wsdl.WSDL2Java <font color="#333399">-</font>p com.hnisi.axis.client  http<font color="#333399">:</font><font color="#008000">//192.168.3.42:8080/test/services/BookOrder?wsdl</font><br /><br />pause<br /><br /><br />生成java代码在包com.hnisi.axis.client下面，封装了调用的接口。<br /><br />然后，使用以上生成的java代码,编写调用service的测试类com.hnisi.axis.client.CallService<font color="#333399">:</font><br /><br /><font color="#0000ff"><strong>package</strong></font> com.hnisi.axis.client;<br /><br /><font color="#0000ff"><strong>public</strong></font><font color="#0000ff"><strong>class</strong></font> CallService {<br /><font color="#0000ff"><strong>public</strong></font><font color="#0000ff"><strong>static</strong></font><font color="#0000ff"><strong>void</strong></font> main(String[] args) {<br /><font color="#0000ff"><strong>try</strong></font> {<br />BookOrderService service <font color="#333399">=</font><font color="#0000ff"><strong>new</strong></font> BookOrderServiceLocator();<br />BookOrder_PortType client <font color="#333399">=</font> service.getBookOrder();<br />String retValue <font color="#333399">=</font> client.getName(<font color="#ff00bf">"zhangsan"</font>);<br />System.out.println(retValue);<br />} <font color="#0000ff"><strong>catch</strong></font> (Exception e) {<br />System.err.println(<font color="#ff00bf">"Execution failed. Exception: "</font><font color="#333399">+</font> e);<br />}<br />}<br />}<br /><br />五、对象的序列化和返序列化<br />在以上代码的基础上，试图调用BookOrder的setPrice服务，会报这样的异常：<br />faultString<font color="#333399">:</font> java.io.IOException<font color="#333399">:</font> No serializer found <font color="#0000ff"><strong>for</strong></font><font color="#0000ff"><strong>class</strong></font> com.hnisi.axis.Book in registry<br /><br />由于SOAP中值的类型就是XML Schema中的基本类型，默认只支持简单类型和数组。所以在进行对象传递的过程中，需要进行序列化和反序列化。<br />Axis为提供了大量的序列化<font color="#333399">/</font>反序列化器，能够基本满足大部分应用：<br /><font color="#6e00aa">1</font>、基本类型，如<font color="#0000ff"><strong>int</strong></font>、<font color="#0000ff"><strong>double</strong></font>等，转换成基本对象类型java.lang.Integer、java.lang.Double。<br /><font color="#6e00aa">2</font>、常用集合对象的转换<br />java.util.List <font color="#333399">==</font><font color="#333399">&gt;</font> java.lang.Object[]<br />java.util.Vector  <font color="#333399">==</font><font color="#333399">&gt;</font> java.util.Vector<br /><font color="#6e00aa">3</font>、普通JavaBean（简单值对象）的序列化和反序列化<br />首先，在web service部署端，修改server<font color="#333399">-</font>config.wsdd文件，在具体的service配置，增加如下代码：<br /><font color="#333399">&lt;</font>beanMapping languageSpecificType<font color="#333399">=</font><font color="#ff00bf">"java:com.hnisi.axis.Book"</font> qname<font color="#333399">=</font><font color="#ff00bf">"ns1:Book"</font><br />         xmlns<font color="#333399">:</font>ns1<font color="#333399">=</font><font color="#ff00bf">"urn:BeanService"</font><font color="#333399">/</font><font color="#333399">&gt;</font><br />languageSpecificType属性指定JavaBean类文件位置,qname属性指定JavaBean类的名字。当然，一个service可以绑定多个bean对象。<br /><br />其次，在客户端，完成对象的注册。<br />对于调用方法一中，需要新增如下代码以完成注册：<br />QName qn <font color="#333399">=</font><font color="#0000ff"><strong>new</strong></font> QName(<font color="#ff00bf">"urn:BeanService"</font>,<font color="#ff00bf">"Book"</font>); <br />call.registerTypeMapping(Book.<font color="#0000ff"><strong>class</strong></font>, qn,<br /><font color="#0000ff"><strong>new</strong></font> BeanSerializerFactory(Book.<font color="#0000ff"><strong>class</strong></font>, qn),<br />                    <font color="#0000ff"><strong>new</strong></font> BeanDeserializerFactory(Book.<font color="#0000ff"><strong>class</strong></font>, qn));<br />而对于调用方法二，重新根据wsdl生成java代码，已完成必要的对象注册过程，CallService中可以直接传递Book对象了。<br /><font color="#6e00aa">4</font>、复杂java对象的序列化<br />需要自行开发一个序列化<font color="#333399">/</font>反序列化器，请参考http<font color="#333399">:</font><font color="#008000">//kb.csdn.net/java/Articles/200506/73d6aea4-0d38-4e21-a188-473790c9ef57.html</font><br /><br />六、axis和spring的集成<br />spring容器管理的业务层服务bean，可以做为web service发布。整合的方法有两种：<br /><font color="#6e00aa">1</font>、直接发布<br />将spring容器中预定义的service直接做为web service对外发布。<br />为此，web服务的提供类必须有spring管理，在调用web服务时需要从web应用环境（ServletContext）中去获取服务类的bean实例。<br />具体的实现原理请参考http<font color="#333399">:</font><font color="#008000">//blog.csdn.net/liumyong/archive/2004/12/09/210043.aspx</font><br /><font color="#6e00aa">2</font>、间接发布<br />spring业务层servcie不直接做为web service对外发布，提供一个中间的接口（类）来调用spring service。<br />对外发布成web service的接口需要从Axis的contextAxis得到Spring的contextSpring：<br />        HttpServlet servlet <font color="#333399">=</font> (HttpServlet) MessageContext.getCurrentContext().getProperty(HTTPConstants.MC_HTTP_SERVLET);<br />        ApplicationContext context <font color="#333399">=</font> WebApplicationContextUtils.getWebApplicationContext(servlet.getServletContext());<br /><br />以上两种方式各有优缺点：<br />方式<font color="#6e00aa">1</font>：<br />需要继承扩展axis的相关代码，重载实现org.apache.axis.transport.http.AxisServlet，并提供一个SpringBeanProvider类来处理web service bean与spring service bean的关联。<br />优点是，spring service直接做为web service发布，直接配置，无需任何附加中间接口。<br />方式<font color="#6e00aa">2</font>：<br />需要为每个web service提供一个中间接口来调用spring service。<br />在单一的spring service不能满足web服务需求时，可使用中间接口类综合调用多个spring service，然后集中做为一个web service发布出去。<br /><br />综合上述，在实际的开发过程中，结合具体的应用灵活采取<br /><br />七、Document<font color="#333399">/</font>Literal 样式 <br />前文所使用的都是RPC<font color="#333399">/</font>ENCODED样式发布service，axis根据一定的规则完成JAVA对象和XML文件的转化，即序列化和反序列化过程。<br />采用此方式，发布和调用的过程都很简单，服务发布方和调用方都是直接面向JAVA对象，而其缺点也相当明显<font color="#333399">:</font><br />客户端需要使用服务器端的辅助JAVA对象(尽管这些JAVA代码可以自动根据WSDL生成)，服务提供者和客户之间的紧密耦合，任何对接口的更改都会导致服务和客户间联系的中断。<br /><br />Document样式和上面的RPC样式最主要的不同就是，前者中客户在一个规范的XML文档中向服务器发送服务参数，而代替了后者中的一组离散的方法的参数值。这使得Document样式比RPC样式有更加松散的耦合关系。<br />Web服务提供者处理规范的XML文档，执行操作并向客户端作出响应，返回的也是一个规范的XML文档。在服务器对象（参数，方法调用等）和XML数据值之间并没有一种直接的映射关系。应用程序负责映射XML数据值。<br />Document样式中SOAP消息在它的SOAP体中包含了一个或者更多的XML文档。协议并没有约束文档需要如何组织构成；这完全是在程序级处理的。另外，Document样式web服务遵循异步处理范例。<br /><br /><font color="#008000">//TODO 给出document方式的实例</font><br /><br />八、安全性问题<br />参考《实现安全的AXIS Web服务》。<br /><br />九、开发工具<br /><font color="#6e00aa">1</font>、ant支持<br />Axis为支持Ant构建，提供了一个axis<font color="#333399">-</font>ant.jar文件。<br />该文件包含三个可选任务(task)的定义和实现：axis<font color="#333399">-</font>wsdl2java，axis<font color="#333399">-</font>java2wsdl和axis<font color="#333399">-</font>admin。<br />可以在项目的build.xml文件中引入如上三个任务<br /><font color="#333399">&lt;</font>taskdef resource<font color="#333399">=</font><font color="#ff00bf">"axis-tasks.properties"</font> classpathref<font color="#333399">=</font><font color="#ff00bf">"lib.class.path"</font><font color="#333399">/</font><font color="#333399">&gt;</font><br />确保axis<font color="#333399">-</font>ant.jar文件在你的build path中。<br />axis<font color="#333399">-</font>wsdl2java<font color="#333399">:</font> 由wsdl（本地wsdl文件或internet输出）生成客户端java代码。<br />axis<font color="#333399">-</font>java2wsdl<font color="#333399">:</font> 由服务接口类java代码生成对应的wsdl描述文件。<br />axis<font color="#333399">-</font>admin<font color="#333399">:</font>   服务的发布＆取消发布管理。<br />各task的具体属性配置请参考axis包\docs\ant。<br /><br /><font color="#6e00aa">2</font>、eclipse wtp<br />纯eclipse开发环境没有开发web service的功能，使用wtp<font color="#333399">-</font>all<font color="#333399">-</font>in<font color="#333399">-</font>one<font color="#333399">-</font>sdk<font color="#333399">-</font><font color="#6e00aa">1</font>.<font color="#6e00aa">0</font>开发环境能方便地发布web service。<br />右键点击服务接口文件，选择webServices，有以下功能：生成web Service等。<br />右键点击wsdl文件，选择webServices，有以下功能：发布wsdl文件，生成客户端代码等。<br />在第一次生成web service时，会自动下载axis相关jar包并完成构建(web.xml自动修改，加载AxisServlet)，无需任何人工干预。<br />同时eclipse提供了友好的界面操作，如测试的时候，提供界面让你输入参数，而不必该改程序。<br /><br />以上操作在一个新建的web project中顺利实现.<br />当在已存在的eecmis工程中，做以上web service生成操作，无法在当前web应用集成发布web service，会自动发布到一个独立的web应用（默认名WebServiceProject）。<br />在系统实际部署时，可以将这两个web应用打成ear包一起部署。</font>
		</p>
		<br />
		<br />
		<p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=611747</p>
		<br />
<img src ="http://www.blogjava.net/martinyuan/aggbug/173698.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/martinyuan/" target="_blank">Martin Yuan</a> 2008-01-08 17:17 <a href="http://www.blogjava.net/martinyuan/articles/173698.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WebService客户端生成方法</title><link>http://www.blogjava.net/martinyuan/articles/172822.html</link><dc:creator>Martin Yuan</dc:creator><author>Martin Yuan</author><pubDate>Fri, 04 Jan 2008 11:51:00 GMT</pubDate><guid>http://www.blogjava.net/martinyuan/articles/172822.html</guid><description><![CDATA[<span style="color: #ff0000">以下通过ant工具生成XFire客户端代码</span><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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">project&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">struts-hibernate-eg</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;basedir</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">.</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">default</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">help</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">path&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">build.classpath</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">fileset&nbsp;file</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">lib/*.jar</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">path</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;</span><span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;Help&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">target&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">help</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">echo&nbsp;message</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">BASEDIR:${basedir}</span><span style="color: #000000">"</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">echo&nbsp;message</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">targer:&nbsp;help</span><span style="color: #000000">"</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">echo&nbsp;message</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">usage:&nbsp;ant&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">target</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;</span><span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;Wsgen&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">target&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">GetClient</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">taskdef&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">wsgen</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;classname</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">org.codehaus.xfire.gen.WsGenTask</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;classpathref</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">build.classpath</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">wsgen&nbsp;outputDirectory</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">bin</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;wsdl</span><span style="color: #000000">=</span><span style="color: #000000"><a href="http://192.0168.2.5:8000/test/test.asmx?wsdl">http://192.0168.2.5:8000/test/test.asmx?wsdl</a></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">package</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">com.martin</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">target</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">project</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<span style="color: #ff0000">以下通过ant工具生成Axis客户端代码<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"><span style="color: #008080">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&lt;</span><span style="color: #000000">target&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">generate-axis-client-code</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;unless</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">axis-uptodate</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">echo&nbsp;message</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">====----&nbsp;==================================----======</span><span style="color: #000000">"</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">echo&nbsp;message</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">====----&nbsp;generating&nbsp;axis&nbsp;client&nbsp;classes&nbsp;for&nbsp;devel&nbsp;----======</span><span style="color: #000000">"</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">echo&nbsp;message</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">====----&nbsp;==================================&nbsp;----======</span><span style="color: #000000">"</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">mkdir&nbsp;dir</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">${gen-source-java-dir}</span><span style="color: #000000">"</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">java&nbsp;classname</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">org.apache.axis.wsdl.WSDL2Java</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;fork</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">true</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">arg&nbsp;line</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">-p&nbsp;com.atlassian.uwc.soapclient&nbsp;--output&nbsp;$</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img id="Codehighlighter1_503_523_Open_Image" onclick="this.style.display='none'; Codehighlighter1_503_523_Open_Text.style.display='none'; Codehighlighter1_503_523_Closed_Image.style.display='inline'; Codehighlighter1_503_523_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_503_523_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_503_523_Closed_Text.style.display='none'; Codehighlighter1_503_523_Open_Image.style.display='inline'; Codehighlighter1_503_523_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_503_523_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"  alt="" /></span><span id="Codehighlighter1_503_523_Open_Text"><span style="color: #000000">{gen</span><span style="color: #000000">-</span><span style="color: #000000">source</span><span style="color: #000000">-</span><span style="color: #000000">java</span><span style="color: #000000">-</span><span style="color: #000000">dir}</span></span><span style="color: #000000">&nbsp;$</span><span id="Codehighlighter1_526_545_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"  alt="" /></span><span id="Codehighlighter1_526_545_Open_Text"><span style="color: #000000">{module.uwc.basedir}</span></span><span style="color: #000000">/</span><span style="color: #000000">confluenceservice</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;v1.wsdl</span><span style="color: #000000">"</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">classpath</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">path&nbsp;refid</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">uwc.module.classpath</span><span style="color: #000000">"</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">classpath</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">java</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">touch&nbsp;file</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">${gen-axis-code-marker-file}</span><span style="color: #000000">"</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">target</span><span style="color: #000000">&gt;</span></div>
</span><span style="color: #ff0000">以下通过Bat脚本生成Axis客户端代码</span><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"><span style="color: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">set&nbsp;LIB_HOME</span><span style="color: #000000">=</span><span style="color: #000000">./lib<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />set&nbsp;CPATH</span><span style="color: #000000">=</span><span style="color: #000000">.</span><span style="color: #008000">;</span><span style="color: #008000">%LIB_HOME%\axis.jar;%LIB_HOME%\jaxrpc.jar;%LIB_HOME%\commons-logging-1.0.4.jar;%LIB_HOME%\commons-discovery-0.2.jar;%LIB_HOME%\saaj.jar;%LIB_HOME%\activation-1.1.jar;%LIB_HOME%\mail-1.4.jar;%LIB_HOME%\wsdl4j-1.5.1.jar;%LIB_HOME%\log4j-1.2.14.jar;./classes;./../../build/classes</span><span style="color: #008000"><br />
</span><span style="color: #008080">3</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java&nbsp;-classpath&nbsp;%CPATH%&nbsp;org.apache.axis.wsdl.WSDL2Java&nbsp;-p&nbsp;com.test.axis.client&nbsp;&nbsp;http://www.test.com/send/test.asmx?WSDL<br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />pause</span></div>
 <img src ="http://www.blogjava.net/martinyuan/aggbug/172822.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/martinyuan/" target="_blank">Martin Yuan</a> 2008-01-04 19:51 <a href="http://www.blogjava.net/martinyuan/articles/172822.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>