`
sjjter
  • 浏览: 12840 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

基于AXIS的Web Service在Eclipse的实战应用[转贴]

阅读更多

“鲤鱼网”版权所有,转载请注明出处,谢谢!


1、涉及到的资源的:
Axis压缩包,可以到www.apache.org/dist/ws/下载。版本1.3。
eclipse压缩包,可以到www.eclipse.org下载。版本3.1。
MyEclipse安装文件,可以到http://www.myeclipseide.com下载。版本4.1。
resin服务器,可以到www.caucho.com下载。版本2.1.4。


2、配置环境:
将Axis包解压缩到c:/axis。
配置环境变量批处理文件WSDL2Java.bat。用于从WSDL(Web Service Description Language)文件生成JAVA文件。稍后将用到。


//WSDL2Java.bat源文件
@echo off
set AXIS_HOME=c:/axis
set AXIS_LIB=%AXIS_HOME%/lib
set AXISCLASSPATH=%AXIS_LIB%/axis.jar;%AXIS_LIB%/commons-discovery-0.2.jar;%AXIS_LIB%/commons-logging-1.0.4.jar;%AXIS_LIB%/jaxrpc.jar;%AXIS_LIB%/saaj.jar;%AXIS_LIB%/log4j-1.2.8.jar;%AXIS_LIB%/wsdl4j-1.5.1.jar;%AXIS_LIB%/axis-schema.jar;%AXIS_LIB%/axis-ant.jar
java -cp %AXISCLASSPATH% org.apache.axis.wsdl.WSDL2Java WSDemo.wsdl


解压缩eclipse,并安装MyEclipse。(安装过程略)


解压缩Resin,并在MyEclipse配置Resin。(配置过程略)


在Eclipse创建新工程:webservice,会自动生成src(JAVA源文件)及WebRoot(JSP文件及WEB-INF)两个目录。


将工程加入到Resin中。(加入过程略)


将c:/axis/webapps/axis/目录中文件复制到WebRoot目录下。将工程刷新后,eclipse会将WebRoot下的内容复制到resin/webapps/目录。


访问http://localhost:8080/webservice/。并自动在应用的WEB-INFO目录下生成resin/webapps/webservice/WEB-INF/server-config.wsdd文件。


3、开发应用接口:
在src目录中新建包com.liyunet.ws,在此包中创建类WSDemo.java。


//WSDemo.java源文件
package com.liyunet.ws;


public class WSDemo {


public String hello(String s){
s = "hello," + s;
System.out.println(s);
return s;
}

public String hi(String s){
s = "hi," + s;
System.out.println(s);
return s;
}
}


将WSDemo.java文件复制到WebRoot目录下,并改名为WSDemo.jws。注意必须将包的声明去掉,其它保持不变。


//WSDemo.jws源文件
public class WSDemo {


public String hello(String s){
s = "hello," + s;
System.out.println(s);
return s;
}

public String hi(String s){
s = "hi," + s;
System.out.println(s);
return s;
}
}


访问http://localhost:8080/webservice/WSDemo.jws?WSDL。在网页中会显示WSDL内容。
//页面内容
<?xml version="1.0" encoding="UTF-8" ?>
- <wsdl:definitions targetNamespace="http://localhost:8080/webservice/services/WSDemo" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:intf="http://localhost:8080/webservice/services/WSDemo" xmlns:impl="http://localhost:8080/webservice/services/WSDemo">
- <!--
WSDL created by Apache Axis version: 1.2.1
Built on Jun 14, 2005 (09:15:57 EDT)


-->
- <wsdl:message name="helloResponse">
<wsdl:part name="helloReturn" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="hiResponse">
<wsdl:part name="hiReturn" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="helloRequest">
<wsdl:part name="s" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="hiRequest">
<wsdl:part name="s" type="xsd:string" />
</wsdl:message>
- <wsdl:portType name="WSDemo">
- <wsdl:operation name="hello" parameterOrder="s">
<wsdl:input name="helloRequest" message="impl:helloRequest" />
<wsdl:output name="helloResponse" message="impl:helloResponse" />
</wsdl:operation>
- <wsdl:operation name="hi" parameterOrder="s">
<wsdl:input name="hiRequest" message="impl:hiRequest" />
<wsdl:output name="hiResponse" message="impl:hiResponse" />
</wsdl:operation>
</wsdl:portType>
- <wsdl:binding name="WSDemoSoapBinding" type="impl:WSDemo">
<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="hello">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="helloRequest">
<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.liyunet.com" />
</wsdl:input>
- <wsdl:output name="helloResponse">
<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost:8080/webservice/services/WSDemo" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="hi">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="hiRequest">
<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.liyunet.com" />
</wsdl:input>
- <wsdl:output name="hiResponse">
<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost:8080/webservice/services/WSDemo" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:service name="WSDemoService">
- <wsdl:port name="WSDemo" binding="impl:WSDemoSoapBinding">
<wsdlsoap:address location="http://localhost:8080/webservice/services/WSDemo" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>


将网页中显示的XML复制到文件中,并保存为WSDemo.wsdl。(注意将第一行“<?xml version="1.0" encoding="UTF-8" ?>”前面的空格及每行的‘-’去掉)。
//整理后格式
<?xml version="1.0" encoding="UTF-8" ?>
<wsdl:definitions targetNamespace="http://localhost:8080/webservice/services/WSDemo" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:intf="http://localhost:8080/webservice/services/WSDemo" xmlns:impl="http://localhost:8080/webservice/services/WSDemo">
<!--
WSDL created by Apache Axis version: 1.2.1
Built on Jun 14, 2005 (09:15:57 EDT)


-->
<wsdl:message name="helloResponse">
<wsdl:part name="helloReturn" type="xsd:string" />
</wsdl:message>
<wsdl:message name="hiResponse">
<wsdl:part name="hiReturn" type="xsd:string" />
</wsdl:message>
<wsdl:message name="helloRequest">
<wsdl:part name="s" type="xsd:string" />
</wsdl:message>
<wsdl:message name="hiRequest">
<wsdl:part name="s" type="xsd:string" />
</wsdl:message>
<wsdl:portType name="WSDemo">
<wsdl:operation name="hello" parameterOrder="s">
<wsdl:input name="helloRequest" message="impl:helloRequest" />
<wsdl:output name="helloResponse" message="impl:helloResponse" />
</wsdl:operation>
<wsdl:operation name="hi" parameterOrder="s">
<wsdl:input name="hiRequest" message="impl:hiRequest" />
<wsdl:output name="hiResponse" message="impl:hiResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="WSDemoSoapBinding" type="impl:WSDemo">
<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="hello">
<wsdlsoap:operation soapAction="" />
<wsdl:input name="helloRequest">
<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.liyunet.com" />
</wsdl:input>
<wsdl:output name="helloResponse">
<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost:8080/webservice/services/WSDemo" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="hi">
<wsdlsoap:operation soapAction="" />
<wsdl:input name="hiRequest">
<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.liyunet.com" />
</wsdl:input>
<wsdl:output name="hiResponse">
<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost:8080/webservice/services/WSDemo" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="WSDemoService">
<wsdl:port name="WSDemo" binding="impl:WSDemoSoapBinding">
<wsdlsoap:address location="http://localhost:8080/webservice/services/WSDemo" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>


并把WSDemo.wsdl及WSDL2Java.bat两个文件复制到src目录下,执行WSDL2Java.bat文件,它会自动生成调用WebService接口的程序代码。


利用Eclipse重构,将自动生成的包名改为com.liyunet.ws.wsdemo。


修改应用下的server-config.wsdd文件,添加如下内容:
//添加的内容
<service name="WSDemo" provider="java:RPC">
<parameter name="className" value="com.liyunet.ws.WSDemo"/>
<parameter name="allowedMethods" value="*"/>
<parameter name="scope" value="Request"/>
</service>


将WSDemo添加到AXIS的服务中。


然后我们新建JUnit的TestCase来测试一下调用Web Service接口。


首先新建WSFactory.java,用来取得服务接口的实例。


//WSFactory.java源文件
package com.liyunet.ws;


import java.net.MalformedURLException;
import java.net.URL;


import javax.xml.rpc.ServiceException;


import com.liyunet.ws.wsdemo.WSDemoServiceLocator;


public class WSFactory {


private static com.liyunet.ws.wsdemo.WSDemo demo = null;


public static com.liyunet.ws.wsdemo.WSDemo getWSDemo() {
if (demo == null) {
String url = "http://localhost:8080/webservice/services/WSDemo";
try {
demo = (new WSDemoServiceLocator().getWSDemo(new URL(url)));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
}
}
return demo;
}
}


在测试文件中调用服务接口。


//WSDemoTest.java源文件
package test;


import java.rmi.RemoteException;


import junit.framework.TestCase;


import com.liyunet.ws.WSFactory;


public class WSTest extends TestCase {


protected void setUp() throws Exception {
super.setUp();
}


protected void tearDown() throws Exception {
super.tearDown();
}

public void testWSDemo()
{
com.liyunet.ws.wsdemo.WSDemo demo = WSFactory.getWSDemo();
try {
demo.hi("Axis");
} catch (RemoteException e) {
e.printStackTrace();
}
}


}


可以在Resin的控制台中看到打印出的“hi,Axis”。


有的朋友会问,如果我再想添加新的接口该怎么做呢?我觉得重新再自动生成一次比较好。


过程:修改WSDemo.java -> 复制到WSDemo.jws -> 生成WSDemo.wsdl -> 生成调用接口类并修改包名 -> JUnit测试


以上是AXIS的最简单的应用,可以说是一个入门的参考。希望对想学习AXIS的初学者有所帮助。

分享到:
评论

相关推荐

    Axis2与Eclipse整合开发的Web Service的服务端

    【描述】:本文将详细介绍如何在Eclipse环境中利用Axis2框架开发一个Web Service服务端,包括计算器服务CalculateService的实现步骤。 【标签】:Axis2, Eclipse, 整合开发, Web Service 【内容】: 开发Web ...

    AXIS Web Service入门及应用

    3. 第一个Service:文件"axis应用1-安装及第一个Service.doc"很可能是关于创建和部署第一个AXIS Web服务的指南,包括安装AXIS、创建简单的服务接口和实现,以及部署服务的步骤。 四、进阶应用 1. 异常处理:AXIS...

    axis2-eclipse-codegen-plugin-1.6.2和axis2-eclipse-service-plugin-1.6.2

    总结来说,"axis2-eclipse-codegen-plugin-1.6.2"和"axis2-eclipse-service-plugin-1.6.2"是针对Apache Axis2的Eclipse插件,旨在简化基于Axis2的Web服务开发。通过它们,开发者可以高效地生成和部署服务,同时享受...

    Eclipse下基于Axis2的Web Service平台搭建与使用

    【Eclipse下基于Axis2的Web Service平台搭建与使用】涉及多个IT领域的知识点,以下是详细的说明: 1. **Web Service**:Web Service是一种基于网络的、分布式的模块化组件,它提供了一种标准的方式,使得不同的应用...

    基于Axis的Web Service客户端调用

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

    Axis开发Web Service实例

    在探讨如何使用Apache Axis来开发Web Service之前,我们首先需要了解一些基本概念。 **Web Service**是一种标准的技术框架,用于实现不同平台之间的应用通信。它使用XML作为数据交换格式,并通过HTTP进行传输。...

    基于Axis2_Web_Service的Eclipse_BPEL使用详解

    ### 基于Axis2_Web_Service的Eclipse_BPEL使用详解 #### 一、实验环境搭建 ##### 1.1 环境配置 本实验是在Eclipse Helios和Tomcat 6.0环境下进行的。所需软件包括: - Eclipse Helios - Tomcat 6.0 - Axis2 - ...

    在Eclipse中创建基于Axis2的web services

    在Eclipse中创建基于Axis2的Web服务是一个常见的任务,特别是在开发分布式应用程序时。Axis2是Apache的一个项目,它提供了一种高效的Web服务实现框架,支持SOAP和RESTful风格的服务。以下是如何在Eclipse环境中利用...

    axis2-eclipse-service与axis2-eclipse-codegen插件

    目前axis2最高版本是2.0以上的版本,但是eclipse和myeclipse都不支持,无奈只能使用低版本的插件1.6.3;经实验,可以安装成功;...axis2-eclipse-service-plugin-1.6.3.zip axis2-eclipse-codegen-plugin-1.6.3.zip

    axis2-eclipse-codegen-plugin-1.6.2.zip和axis2-eclipse-service-plugin-1.6.2.zip

    在这里,"axis2-eclipse-codegen-plugin-1.6.2.zip"和"axis2-eclipse-service-plugin-1.6.2.zip"是专门针对Axis2的Eclipse插件,它们使得在Eclipse中创建、调试和部署Axis2 Web服务变得更加方便。 3. **codegen插件...

    eclipse 生成 Axis2 Web Service 客户端

    本文将详细介绍如何在Eclipse开发环境中创建基于Axis2的Web Service客户端。Axis2是Apache组织下的一个开源项目,它提供了一种用于构建服务端和服务客户端的高性能、完全可扩展的框架。对于希望在Java平台上开发和...

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

    在Eclipse JEE 3.3版本中,开发Web Service和客户端程序变得相对简单,因为该版本已经集成了Axis1.4插件,无需额外安装。 Axis是一个开放源码的Web Service框架,它允许开发者快速地创建和部署Web Service。 1. **...

    axis web service例子

    在IT行业中,Web服务是一种允许不同应用程序之间进行通信和数据交换的技术。Axis是Apache软件基金会开发的一个开源Java库,主要用于创建和使用Web服务。本文将深入讲解基于Java的Axis Web服务,以及如何通过一个实际...

    axis2-eclipse-service-plugin-1.5.4

    这是一个专门为Eclipse IDE设计的插件,用于帮助开发人员在Eclipse环境中创建、部署和管理基于Apache Axis2的Web服务。 Apache Axis2是Java平台上一个强大的Web服务框架,它提供了高度可扩展性和性能。而Eclipse ...

    axis2-eclipse-service-archiver-wizard

    总结起来,“axis2-eclipse-service-archiver-wizard”是MyEclipse中用于Axis2服务开发的重要工具,它通过提供直观的向导界面,提高了开发效率,使得在Eclipse环境中构建和管理Axis2 Web服务变得更加容易。...

    (原创)用Eclipse + Axis2+Tomcat创建Web Service

    1.1 Axis2(Eclipse)插件的安装。 1.2 Axis2.war的安装。 1.3 Eclipse Build Path。 二、 Web Service服务器端的发布。 2.1 创建java类。 2.2 创建services.xml。 2.3 发布服务。 2.4 在浏览器上测试服务。 三、 ...

    axis web service client 源码

    axis web service client 源码

Global site tag (gtag.js) - Google Analytics