`
javawebsoa
  • 浏览: 428779 次
社区版块
存档分类
最新评论

axis 开发 web service 实战(选自JavaResearch)

 
阅读更多

<!-- end of article title -->
axis开发webservice实战
lianghyan 原创
<!--start of article content -->

一、axis安装
1.环境
J2SESDK1.3or1.4:我使用1.4.2
ServletContainer:我使用Tomcat5.0
2.到http://ws.apache.org/axis/网站下载axis安装包
3.解压缩安装包,将AXIS_UNZIP_PATH/axis-version/webapps下的axis包拷贝到TOMCAT_HOME/webapps/下,
以下约定AXIS_HOME为该TOMCAT_HOME/webapps/axis目录
4.启动tomcat,访问http://localhost:8080/axis检查安装是否成功
5.以上步骤执行成功,可以开发webservice例子了

axis支持三种webservice的部署和开发,分别为:
1。DynamicInvocationInterface(DII)
2。Stubs方式
3。DynamicProxy方式

以下逐一讲述webservice在axis上的部署和开发,设置classpath
setCLASSPATH=.;%AXIS_HOME%/lib/axis.jar;%AXIS_HOME%/lib/axis-ant.jar;%AXIS_HOME%/lib/commons-discovery-0.2.jar;%AXIS_HOME%/lib/commons-logging-1.0.4.jar;%AXIS_HOME%/lib/jaxrpc.jar;%AXIS_HOME%/lib/saaj.jar;%AXIS_HOME%/lib/wsdl4j-1.5.1.jar;%AXIS_HOME%/lib/log4j-1.2.8.jar;E:/thirdparty/activation/activation.jar;E:/thirdparty/activation/mail.jar



二、编写DII(DynamicInvocationInterface)方式web服务
1.编写服务端程序HelloClient
publicclassHelloClient{
publicStringgetName(Stringname)
{
return"hello"+name;
}
}

2.将源码拷贝到AXIS_HOME下,重命名为HelloClient.jws
3.访问连接http://localhost:8080/axis/HelloClient.jws?wsdl,页面显示axis自动生成的wsdl
4.编写访问服务的客户端TestHelloClient.java

importorg.apache.axis.client.Call;
importorg.apache.axis.client.Service;
importjavax.xml.namespace.QName;
importjavax.xml.rpc.ServiceException;
importjava.net.MalformedURLException;
importjava.rmi.RemoteException;

publicclassSayHelloClient2{
publicstaticvoidmain(String[]args){
try{
Stringendpoint="http://localhost:8080/axis/HelloClient.jws";

Serviceservice=newService();
Callcall=null;

call=(Call)service.createCall();

call.setOperationName(newQName(
"http://localhost:8080/axis/HelloClient.jws","getName"));
call.setTargetEndpointAddress(newjava.net.URL(endpoint));

Stringret=(String)call.invoke(newObject[]{"zhangsan"});
System.out.println("returnvalueis"+ret);
}catch(Exceptionex){
ex.printStackTrace();
}
}
}
三、编写DynamicProxy方式访问服务
1.编写部署服务端程序,同上边DII方式,本次仍使用上边部署的HelloClient
2.编写代理接口
publicinterfaceHelloClientInterfaceextendsjava.rmi.Remote{
publicStringgetName(Stringname)throwsjava.rmi.RemoteException;
}
3.编写并执行客户端程序TestHelloClient.java

importjavax.xml.rpc.Service;
importjavax.xml.rpc.ServiceFactory;
importjava.net.URL;
importjavax.xml.namespace.QName;

publicclassTestHelloClient{
publicstaticvoidmain(String[]args){
try
{
StringwsdlUrl="http://localhost:8080/axis/HelloClient.jws?wsdl";
StringnameSpaceUri="http://localhost:8080/axis/HelloClient.jws";
StringserviceName="HelloClientService";
StringportName="HelloClient";

ServiceFactoryserviceFactory=ServiceFactory.newInstance();
ServiceafService=serviceFactory.createService(newURL(wsdlUrl),
newQName(nameSpaceUri,serviceName));
HelloClientInterfaceproxy=(HelloClientInterface)
afService.getPort(newQName(
nameSpaceUri,portName),HelloClientInterface.class);
System.out.println("returnvalueis"+proxy.getName("john"));
}catch(Exceptionex)
{
ex.printStackTrace();
}
}
}

四、编写wsdd发布web服务,编写stubclient访问web服务

1.编写服务端程序server,SayHello.java,编译server.SayHello.java
packageserver;
publicclassSayHello{
publicStringgetName(Stringname)
{
return"hello"+name;
}
}
2.编写LogHandler.java
importorg.apache.axis.AxisFault;
importorg.apache.axis.Handler;
importorg.apache.axis.MessageContext;
importorg.apache.axis.handlers.BasicHandler;

importjava.util.Date;

publicclassLogHandlerextendsBasicHandler{
publicvoidinvoke(MessageContextmsgContext)throwsAxisFault
{
/**Loganaccesseachtimewegetinvoked.
*/
try{
HandlerserviceHandler=msgContext.getService();

IntegernumAccesses=
(Integer)serviceHandler.getOption("accesses");
if(numAccesses==null)
numAccesses=newInteger(0);

numAccesses=newInteger(numAccesses.intValue()+1);

Datedate=newDate();
Stringresult=date+":service"+
msgContext.getTargetService()+
"accessed"+numAccesses+"time(s).";
serviceHandler.setOption("accesses",numAccesses);

System.out.println(result);
}catch(Exceptione){
throwAxisFault.makeFault(e);
}
}
}
3..编写wsdd文件
deploy.wsdd
<deploymentxmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

<handlername="print"type="java:LogHandler"/>
<servicename="sayhello"provider="java:RPC">
<requestFlow>
<handlertype="print"/>
</requestFlow>
<parametername="className"value="server.SayHello"/>
<parametername="allowedMethods"value="*"/>
</service>
</deployment>

3.将编译后的文件拷贝到AXIS_HOME/WEB-INF/classes下,如:D:/tomcat/webapps/axis/WEB-INF/classes
4.发布服务:
javaorg.apache.axis.client.AdminClientdeploy.wsdd
5.生成clientstub文件
a:方式1
将SayHello.java拷贝到AXIS_HOME/下,重命名为SayHello.jws,执行下面的命令生存clientstub
javaorg.apache.axis.wsdl.WSDL2Java-pclienthttp://localhost:8080/axis/services/SayHello.jws?wsdl
b:方式2
执行如下命令生成SayHello.wsdl
javaorg.apache.axis.wsdl.Java2WSDL-oSayHello.wsdl-lhttp://localhost:8080/axis/services/SayHello-nsayhelloserver.SayHello
执行如下命令生成clientstub
javaorg.apache.axis.wsdl.WSDL2JavaSayHello.wsdl-pclient
生成的stubclient文件列表为:
1。SayHello.java
2。SayHelloService.java。
3。SayHelloServiceLocator.java
4。SayHelloSoapBindingStub.java
6.编写客户端程序,编译并执行
publicclassSayHelloClient{
publicstaticvoidmain(String[]args){
try{

SayHelloServiceservice=newclient.
SayHelloServiceLocator();
client.SayHello_PortTypeclient=service.getSayHello();
StringretValue=client.getName("zhangsan");
System.out.println(retValue);


}catch(Exceptione){
System.err.println("Executionfailed.Exception:"+e);
}
}
}
分享到:
评论

相关推荐

    Axis开发Web Service实例

    ### Axis开发Web Service实例详解 #### 一、概述 在探讨如何使用Apache Axis来开发Web Service之前,我们首先需要了解一些基本概念。 **Web Service**是一种标准的技术框架,用于实现不同平台之间的应用通信。它...

    axis开发web service程序

    ### Axis 开发 Web Service 程序详解 #### 一、Web Service 概念与应用场景 Web Service 是一种跨编程语言和操作系统平台的远程调用技术。它允许不同语言编写的程序通过网络进行通信和数据交换。Web Service 的...

    AXIS开发Web Service.docx

    AXIS 是 Apache 开源项目提供的一款强大的 Web Service 引擎,用于开发和部署 Web Service。在本文中,我们将深入探讨如何使用 AXIS 在 Tomcat 6.0.26 上进行配置,并详细介绍三种部署和调用 Web Service 的方法:...

    使用Axis开发Web Service程序

    ### 使用Axis开发Web Service程序 #### 一、概述 随着互联网技术的发展,Web Service作为一种标准的、基于XML的网络服务形式,在实现不同平台之间数据交换和应用集成方面扮演着重要角色。Axis作为Apache组织下的一...

    Axis开发Web Service的实例

    ### Axis开发Web Service的实例详解 #### 一、概述 在现代软件开发中,Web服务是一种重要的技术,它允许不同应用程序之间通过网络进行通信。Apache Axis是实现Web服务的一个流行框架,它支持SOAP协议,并提供了...

    用axis2开发web service

    【用Axis2开发Web Service】是本文的核心主题,轴心技术是Java开发Web服务的一种框架,相较于Axis1,其过程更为简洁。以下是关于使用Axis2开发Web Service的详细步骤和知识点: 1. **实验环境搭建**: - 首先确保...

    JAVA高级开发:使用Axis开发Web Service

    为了更多喜爱开发的程序员也能迅速了解Web Service的开发,我这里整理了一些通过Axis开发Web Service的一些要点,希望能让不熟悉Web Service的开发人员能够迅速掌握Web Service。

    MyEclipse下开发Web Service(Axis)

    ### MyEclipse下开发Web Service(Axis):深入解析与实践指南 #### 一、环境配置与准备 在深入探讨如何使用Apache Axis在MyEclipse环境下构建Web Services之前,首要任务是确保拥有一个完整的开发环境。这包括但不...

    Axis开发Web Service程序教程

    【标题】: "Axis开发Web Service程序教程" 【描述】: "本文旨在引导读者通过AXIS框架体验Web服务的开发流程,适合已有Web服务基础的Java、XML开发者学习。" 【标签】: "axis webservice soap java" 【内容】: ...

    Axis2 Web Service 开发教程

    【Axis2 Web Service 开发教程】是一份详细指导开发者如何使用Apache Axis2框架创建和部署Web服务的教学资料。Apache Axis2是Java世界中一个强大的Web服务引擎,它提供了高效的性能和灵活的架构,使得Web服务的开发...

    axis开发web_service程序_学习笔记

    【标题】:Axis开发Web Service程序学习笔记 【概述】: Web Service是一种允许不同系统间进行交互的技术,它使得应用程序可以透明地调用互联网上的服务,而无需关注具体实现细节。这种技术的关键在于公开服务接口...

    基于AXIS2实现Web Service开发

    基于AXIS2实现Web Service开发是一项常见的任务,尤其在企业级应用中,Web Service作为不同系统间通信的重要桥梁。AXIS2是Apache软件基金会提供的一个轻量级、高性能的Web Service框架,它提供了完整的Web Service...

    Axis 开发Web Service(学习笔记)

    **Axis开发Web Service学习笔记** 在信息技术领域,Web服务是一种基于开放标准的互联网通信协议,允许不同的应用程序之间进行互操作。而Axis是Apache软件基金会的一个开源项目,它提供了一个强大的工具集,用于创建...

    基于Tomcat5.0和Axis2开发Web Service应用实例

    【标题】基于Tomcat5.0和Axis2开发Web Service应用实例 在Web服务的世界里,Axis2是一个高效且强大的工具,它允许开发者创建、部署和使用SOAP Web服务。本教程将详细介绍如何利用Apache Tomcat 5.0作为应用服务器,...

    基于axis 的web service 开发v0.3

    基于axis 的web service 开发v0.3

    基于Axis的Web Service客户端调用

    【标题】基于Axis的Web Service客户端调用 在IT领域,Web Service是一种通过网络进行通信的标准协议,它允许不同系统间的应用程序互相交换数据。而Apache Axis是Java平台上的一个开源工具,专门用于创建和部署Web ...

    axis2 web service完整教学

    【Apache Axis2 Web Service 教程】 Apache Axis2 是一个流行的开源Web服务框架,用于创建、部署和管理高性能的Web服务。本教程将详细介绍如何在Eclipse环境中利用Apache Axis2搭建Web服务及其客户端。 **环境配置...

    使用Eclipse的Axis1.4插件开发Web Service及客户端

    【使用Eclipse的Axis1.4插件开发Web Service及客户端】 在Eclipse JEE 3.3版本中,开发Web Service和客户端程序变得相对简单,因为该版本已经集成了Axis1.4插件,无需额外安装。 Axis是一个开放源码的Web Service...

Global site tag (gtag.js) - Google Analytics