转自 http://yangyang.iteye.com/blog/56519
从今天开始我将学习axis的经验以笔记的形式共享给大家希望能对大家的工作有所帮助。<o:p></o:p>
相信大家对webservice有一定的了解我在这里就不再复述webservice的一些基本概念。
axis1.3是soap1.2协议的一个实现框架。在工作中我们可以方便的通过axis进行webservice的开发。
axis1.3是soap1.2协议的一个实现框架。在工作中我们可以方便的通过axis进行webservice的开发。废话少说,我们开始安装axis.<o:p></o:p>
我们可以从axis的官方网站上下载(http://ws.apache.org/axis/).解压缩axis-bin-1_3.zip。在lib中包含axis必须使用的jar包。docs中包含axis的文档,通常使用用户指南就可以解决大部分问题。samples中包含很多webservice的例子,以后会对这些例子进行进一步讲解。webapps文件夹中包含了一个axis web application你可以直接把他部署到tomcat中,然后在这个axis应用上发布你的webservice,发布成功后就可以调用了。build文件夹用来存放用ant编译的axis安装包的classes文件。<o:p></o:p>
第一个步骤:安装axis.( Axis 1.3,tomcat 5.028, jdk 1.42)<o:p></o:p>
copy axis-bin-1_3安装包下webapps文件夹中的axis目录到tomcat的webapps下发布你的axis应用。重新启动tomcat.访问http://localhost:8080/axis 。这时就会出现axis的欢迎画面.进入Validation链接以检查axis所使用的jar包是否全都存在。如果不存在就会显示一下画面:
我们可以根据链接下载axis缺少的jar文件,下载之后copy到tomcat\webapps\myaxis\WEB-INF\lib下即可。一般情况下还会有一些warning消息,里面列出的的选项不是必须存在的jar包。当所有必须的jar文件全部安装完毕,则会出现以下画面。
表示axis已经具备所有需要的jar文件!
<o:p> </o:p>
第二步骤:测试axis。
在测试axis之前我们需要一些准备工作。我们首先要把axis用到的jar包添加到CLASSPATH环境变量中去。如下:
C:\tomcat5\webapps\axis\WEB-INF\lib\axis.jar;
C:\tomcat5\webapps\axis\WEB-INF\lib\jaxrpc.jar;
C:\tomcat5\webapps\axis\WEB-INF\lib\saaj.jar;
C:\tomcat5\webapps\axis\WEB-INF\lib\commons-discovery-0.2.jar;
C:\tomcat5\webapps\axis\WEB-INF\lib\commons-logging-1.0.4.jar;
C:\tomcat5\webapps\axis\WEB-INF\lib\wsdl4j-1.5.1.jar;
C:\tomcat5\webapps\axis\WEB-INF\lib\activation.jar;
C:\tomcat5\webapps\axis\WEB-INF\lib\mail.jar
注意路径是根据自己部属情况而定,上面的只是参考。
我们通过JWS (Java Web Service)文件的方式来发布一个webservice。首先在安装包的axis-bin-1_3\axis-1_3\samples\userguide\example2目录下找到Calculator .java文件,将其改名为Calculator .jws然后copy到tomcat的webapps/axis/下。发布这个webservice。这个webservice提供了两个功能即加减功能。<o:p></o:p>
Webservice code:<o:p></o:p>
public class Calculator {<o:p></o:p>
public int add(int i1, int i2)<o:p></o:p>
{<o:p></o:p>
return i1 + i2; <o:p></o:p>
}<o:p></o:p>
<o:p> </o:p>
<o:p> </o:p>
public int subtract(int i1, int i2)<o:p></o:p>
{<o:p></o:p>
return i1 - i2;<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
Client code:<o:p></o:p>
package samples.userguide.example2 ;<o:p></o:p>
<o:p> </o:p>
import org.apache.axis.client.Call;<o:p></o:p>
import org.apache.axis.client.Service;<o:p></o:p>
import org.apache.axis.encoding.XMLType;<o:p></o:p>
import org.apache.axis.utils.Options;<o:p></o:p>
<o:p> </o:p>
import javax.xml.rpc.ParameterMode;<o:p></o:p>
<o:p> </o:p>
public class CalcClient<o:p></o:p>
{<o:p></o:p>
public static void main(String [] args) throws Exception {<o:p></o:p>
Options options = new Options(args);<o:p></o:p>
<o:p></o:p>
String endpoint = "http://localhost:" + options.getPort() +<o:p></o:p>
"/axis/Calculator.jws";<o:p></o:p>
<o:p></o:p>
args = options.getRemainingArgs();<o:p></o:p>
<o:p></o:p>
if (args == null || args.length != 3) {<o:p></o:p>
System.err.println("Usage: CalcClient arg1 arg2");<o:p></o:p>
return;<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
String method = args[0];<o:p></o:p>
if (!(method.equals("add") || method.equals("subtract"))) {<o:p></o:p>
System.err.println("Usage: CalcClient arg1 arg2");<o:p></o:p>
return;<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
Integer i1 = new Integer(args[1]);<o:p></o:p>
Integer i2 = new Integer(args[2]);<o:p></o:p>
<o:p> </o:p>
Service service = new Service();<o:p></o:p>
Call call = (Call) service.createCall();<o:p></o:p>
<o:p> </o:p>
call.setTargetEndpointAddress( new java.net.URL(endpoint) );<o:p></o:p>
call.setOperationName( method );<o:p></o:p>
call.addParameter( "op1", XMLType.XSD_INT, ParameterMode.IN );<o:p></o:p>
call.addParameter( "op2", XMLType.XSD_INT, ParameterMode.IN );<o:p></o:p>
call.setReturnType( XMLType.XSD_INT );<o:p></o:p>
<o:p> </o:p>
Integer ret = (Integer) call.invoke( new Object [] { i1, i2 });<o:p></o:p>
<o:p></o:p>
System.out.println("Got result : " + ret);<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
<o:p> </o:p>
下面我们来进行调用。首先进入客户端源代码所在位置,也可以将源代码所在目录添加到classpath中 (C:\Documents and Settings\y41yang\Desktop\software\axis-bin-1_3\axis-1_3;):<o:p></o:p> 然后输入 java samples.userguide.example2.CalcClient -p8080 add 2 5 这时如果结果为Got result : 7 则说明axis安装成功!如果失败了请检查classpath设置, 是否将所有用到的jar文件加入classpath中。 到这里axis就已经安装成功了! 后面我会进一步详细讲解有关通过wsdd部署webservice的方式。 由于时间比较仓促有很多的解释不清地方,如果有什么不明白可以给我回复,我会尽快答复!
<v:shapetype id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f" coordsize="21600,21600" o:spt="75"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" o:connecttype="rect" gradientshapeok="t"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id="_x0000_i1025" style="WIDTH: 510pt; HEIGHT: 265.5pt" type="#_x0000_t75"><v:imagedata o:title="installsuccess" src="file:///C:\DOCUME~1\y41yang\LOCALS~1\Temp\msohtml1\03\clip_image001.png"></v:imagedata></v:shape>
<o:p></o:p>