只下axis-src-1_4.zip就OK了。
2、解压缩后将其中的“webapps”目录下的“axis”目录整个拷贝到Tomcat安装目录下的“webapps”目录下即可。
3、配置Axis:
Axis基于Java开发,可以部署于多种操作系统,使用前需要配置一系列的系统变量,在此假定你已经在本机上装好了Tomcat 5.0以上的版本,需要配置的系统变量如下表所示:
CATALINA_HOME
E:\Program Files\Apache Software Foundation\Tomcat 5.0
AXIS_HOME
%CATALINA_HOME%\webapps\axis
AXIS_LIB
%AXIS_HOME%\lib
AXISCLASSPATH
%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar; %AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar; %AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar; %AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar
CLASSPATH 中加入:
%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar; %AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar; %AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar; %AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar
以上是看了网上一篇文章是这要配置的。我们可以直接写一个批处理文件把这些变量加入,可以基本省略这一步。后面可以看到
4、测试Axis
安装配置完毕后,应测试一下是否Axis可以正确运行了。
启动Tomcat服务器,在浏览器中访问http://localhost:8080/axis/happyaxis.jsp,如果页面显示有错误,则需要回头检查一下相关配置是否正确,如果浏览页面能正确显示出系统组件、属性等参数配置信息,则表示安装成功。现在可以开始开发你的Web Services应用了。
5、发布WebService
Axis提供了两种服务发布方式,一种是即时发布(Instant Deployment),一种是定制发布(Custom Deployment)。
即时发布只用将源Java后缀改成.jws,然后把此文件放到webapps\axis根目录下就OK。每当用户调用这类服务的时候,Axis会自动进行编译,即使服务器重启了也不必对其做任何处理,使用非常简单快捷。
需要注意的是:JWS的web服务发布是一个很简单的Web服务发布方式,在页面中你不能使用包,而且由于代码是在运行期被编译的,所以在部署之后,你也很难找到错误所在。
即时发布并不总是最好的选择,比如有些应用系统是第三方提供的,我们没有购买源代码,只有.class文件,但我们又希望将这个应用系统的一些功能对外发布成Web服务,使其能够在更大范围内产生作用,这个时候即时发布技术就无能为力了。此外,即时发布技术并不灵活,无法进行更多的服务配置,这使得它并不能满足一些特定系统的需求。
因此,Axis提供了另一种服务发布方式,这就是定制发布。我们项目就是用的定制发布Web Service Deployment Descriptor(WSDD)。
首先创建我们的业务逻辑类,可以直接在E:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\axis\WEB-INF\classes下创建,也可以在别的地方创建好再Copy到此路径下,一定要在此路径才能发布。
再创建发布文件deploy.wsdd,放在E:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\axis\WEB-INF。
现在可以新建一个批处理文件来发布WebService了。
由于先前没有建系统变理所以在批处理文件中将变量都加入了进来。内容如下:
cd E:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\axis\WEB-INF
set classpath=.;E:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\axis\WEB-INF\lib\axis.jar;E:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\axis\WEB-INF\lib\axis-ant.jar;E:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\axis\WEB-INF\lib\commons-discovery-0.2.jar;E:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\axis\WEB-INF\lib\commons-logging-1.0.4.jar;E:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\axis\WEB-INF\lib\jaxrpc.jar;E:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\axis\WEB-INF\lib\log4j-1.2.8.jar;E:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\axis\WEB-INF\lib\saaj.jar;E:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\axis\WEB-INF\lib\wsdl4j-1.5.1.jar;
java org.apache.axis.client.AdminClient deploy.wsdd
路径同deploy.wsdd
这样有个好处就是每次修改过deploy.wsdd文件后重新发布只要运行这个批处理文件就OK了。
现在运行它,如果说没有找到类,那么可能是类路径没有配置好,建议将所有的与axis相关的jar都写到classpath中去。
如果出现以下内容就表明发布成功了:
Processing file deploy.wsdd
<Admin>Doneprocessing</Admin>
定制发布还有种方法就是直接写server-config.wsdd,但是我没那样试过。网上搜搜应该一大堆。
来取消部署的命令:java org.apache.axis.client.AdminClient undeploy.wsdd
你也可以调用: java org.apache.axis.client.AdminClient list 来获得所有的已经部署的服务的列表。在这里你会看到services, handlers, transports等等,注意这个调用只是列出了WEB-INF\server-config.wsdd的文件内容。
一定要注意:编译后的class文件要拷贝到web-inf/classes的目录中,如果该文件中有包存在的话,别忘了还要在classes目录下创建包的目录。
通过访问 http://localhost:8080/axis/servlet/UserManagerService?wsdl可以看到这个服务的WSDL描述文件,这说明UserManagerService服务被成功发布了。你也可以通过访问http://localhost:8080/axis/servlet/AxisServlet查看所有定制发布的服务。
致此WebService开发完成,下面就是测试这个服务了。
我采用的是JAVA测试,测试代码如下:
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import javax.xml.rpc.ParameterMode;
public class AXISTest
{
public static void main( String[] args ) throws Exception
{
//创建service和call对象,这些对象是标准的JAX-RPC对象,这些对象用于存储服务调用的数据(metadata)。
Service service = new Service();
Call call = ( Call ) service.createCall();
//////////访问定制发布的UserManagerService服务
call = ( Call ) service.createCall();
//设置访问点
call.setTargetEndpointAddress( "http://localhost:8080/axis/services/UserManagerService" );
//设置操作名
call.setOperationName( "addUser" );
//设置入口参数
call.addParameter( "op1", XMLType.XSD_DOUBLE, ParameterMode.IN );
//设置返回类型
call.setReturnType( org.apache.axis.Constants.XSD_STRING );
//call.setReturnClass(String.class);//也可这样设置返回类型
MyBean myBean = new MyBean();//此处是一个JavaBean 用来处理XML格式的数据
String userInfo = myBean.getMyBean("user.xml");//从文件中取
String ret=(String)call.invoke(new String[]{userInfo});
//调用服务
System.out.println( " 结果: " + ret + "" );
}
}
编译,运行。OK。
参考资料:http://blog.csdn.net/sunsnow8/archive/2005/01/10/246580.aspx