`
fengfeng925
  • 浏览: 107103 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用Axis创建Web Service服务

阅读更多
   先简短的说一下Web Service的概念,简略的总结一下:所谓Web Service就是客户端以标准的SOAP消息将服务请求发给服务提供者,不论服务提供者用什么样的技术,Java、EJB、或者.NET执行相应的程序得到结果,然后将结果以SOAP消息返回给服务请求者。

    下面以Axis为例,创建一个简单的Web Service。首先到http://ws.apache.org/axis/上去下载最新的axis版本。最新版本是axis-1.4的。下载之后观察其目录,lib下就是所要用到的所有jar包了。这里少2个jar包,分别是activation.jar和mail.jar,需要单独下载。

    好了,现在我们创建一个Web Service项目,命名为webservice_begin。首先把lib目录下的所有jar包拷贝到WEB-INF的lib目录下。ok,现在我们创建接口和实现类。代码如下
package server;

public interface Hello {

	public String getHello(String name);

}

package server;

public class HelloService implements Hello {
	
	public String getHello(String name) {
		return "hello, " + name;
	}
}


接着我们修改下web.xml文件。修改web.xml文件的目的是为创建一个Axis的Servlet。Axis Servlet最核心的实现类为org.apache.axis.transport.http.AxisServlet,然后定义一个Servlet的请求路径为services/*,客户端就可以通过这个路径发布SOAP的请求消息了,下面是修改后的web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
   
  <servlet>
  	<servlet-name>AxisServlet</servlet-name>
  	<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>AxisServlet</servlet-name>
  	<url-pattern>/servlet/AxisServlet</url-pattern>
  </servlet-mapping>
  
  <servlet-mapping>
  	<servlet-name>AxisServlet</servlet-name>
  	<url-pattern>*.jws</url-pattern>
  </servlet-mapping>
  
  <servlet-mapping>
  	<servlet-name>AxisServlet</servlet-name>
  	<url-pattern>/services/*</url-pattern>
  </servlet-mapping>
</web-app>


接下来,要配置wsdd文件server-config.wsdd。server-config.wsdd将定义服务的名称,具体的实现类,以及发布的方法和属性等。将其放在src目录下,也就是当前应用的classpath路径下,具体内容如下
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
  <handler type="java:org.apache.axis.handlers.http.URLMapper" name="URLMapper"/>
  
  <service name="hello" provider="java:RPC">
  	<parameter name="className" value="server.HelloService"/>
  	<parameter name="allowedMethods" value="getHello"/>
  </service>
  
  <transport name="http">
  	<requestFlow>
  		<handler type="URLMapper"/>
  	</requestFlow>
  </transport>
</deployment>


好了,现在我们就可以发布Web Service服务了。
部署成功后,启动你的应用服务器,在地址栏下输入
http://localhost:8080/webservice_begin/services,如果没有错误提示,恭喜你,你的Web Service已经发布成功了。点击wsdl,还可以看到具体的wsdl的配置信息。
这里面主要定义了以下内容:本例子的目标空间和命名空间、输入和输出变量的结构类型、请求和响应的消息、wsdl的接口portType、接口操作(Operation)、绑定的传输协议,具体内容如下
  <?xml version="1.0" encoding="UTF-8" ?> 
- <wsdl:definitions targetNamespace="http://localhost:8080/webservice_begin/services/hello" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://localhost:8080/webservice_begin/services/hello" xmlns:intf="http://localhost:8080/webservice_begin/services/hello" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <!-- 
WSDL created by Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT)

  --> 
- <wsdl:message name="getHelloRequest">
  <wsdl:part name="name" type="soapenc:string" /> 
  </wsdl:message>
- <wsdl:message name="getHelloResponse">
  <wsdl:part name="getHelloReturn" type="soapenc:string" /> 
  </wsdl:message>
- <wsdl:portType name="HelloService">
- <wsdl:operation name="getHello" parameterOrder="name">
  <wsdl:input message="impl:getHelloRequest" name="getHelloRequest" /> 
  <wsdl:output message="impl:getHelloResponse" name="getHelloResponse" /> 
  </wsdl:operation>
  </wsdl:portType>
- <wsdl:binding name="helloSoapBinding" type="impl:HelloService">
  <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> 
- <wsdl:operation name="getHello">
  <wsdlsoap:operation soapAction="" /> 
- <wsdl:input name="getHelloRequest">
  <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://server" use="encoded" /> 
  </wsdl:input>
- <wsdl:output name="getHelloResponse">
  <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost:8080/webservice_begin/services/hello" use="encoded" /> 
  </wsdl:output>
  </wsdl:operation>
  </wsdl:binding>
- <wsdl:service name="HelloServiceService">
- <wsdl:port binding="impl:helloSoapBinding" name="hello">
  <wsdlsoap:address location="http://localhost:8080/webservice_begin/services/hello" /> 
  </wsdl:port>
  </wsdl:service>
  </wsdl:definitions>


到这里,服务器端的工作算是完成了。下面我们写一个客户端程序来试着调用一下。客户端程序可以是一个简单的javaProject。调用代码如下
package junit.test;

import java.net.URL;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.junit.Test;


public class WebServiceTest {
	
	@Test public void testInvoke() throws Exception{
		//标识WebService的具体路径
		String endpoint = "http://localhost:8080/webservice_begin/services/hello";
		//创建Service实例
		Service service = new Service();
		//通过Service实例创建Call实例
		Call call = (Call)service.createCall();
		//将WebService的服务路径加入到Call实例中,并为Call设置服务的位置
		URL url = new URL(endpoint);
		call.setTargetEndpointAddress(url);
		//调用WebService方法
		call.setOperationName("getHello");
		//调用WebService传入参数
		String res = (String)call.invoke(new Object[] {"fengfeng925"});
		System.out.println(res);

	}
}


运行测试用例,哈哈,greenbar,运行成功
输出为hello, fengfeng925




分享到:
评论
4 楼 zhaoy1233 2010-03-31  
谢谢,对初学者帮助很大
3 楼 carpenter 2009-12-03  
谢谢,刚学有很大帮助
2 楼 lbqxl0122 2009-09-04  
入门教程,对于我刚学这个的帮助非常大,谢谢了
1 楼 zl584521 2009-09-04  
帮助很大,简单易懂。并且步骤详细,谢谢楼主!

相关推荐

    Axis开发Web Service实例

    本文将详细介绍如何使用Apache Axis创建Web Service,并将重点介绍三种不同的方法:动态调用接口(Dynamic Invocation Interface,DII)、Stubs方式和动态代理(Dynamic Proxy)方式。 #### 二、环境搭建与配置 在...

    用Axis2创建Web Service

    在本文中,我们将详细讲解如何使用 Axis2 创建 Web Service,以及搭建开发环境所需的步骤。 一、Axis2 简介 1. Web Service 的作用:Web Service 主要解决了不同操作系统、编程语言之间的互操作性问题,使得系统间...

    使用Axis开发Web Service程序

    接下来,我们来看一个具体的示例,演示如何使用Axis创建一个简单的Web Service。 1. **定义服务接口**:首先定义一个简单的Java类`SayHello`,该类包含一个方法`getName`用于返回问候语。 ```java package ...

    axis2 web service完整教学

    2. **创建Web Service**:对着`HelloWorld`类右键选择`Web Services &gt; Create Web Service`,配置运行时为Axis2,服务器为之前创建的Server,按照提示完成操作。 **验证服务** 1. **查看服务状态**:访问`...

    Axis2创建web service快速入门

    本教程将引导你快速入门,掌握使用Axis2创建Web服务的基本步骤。 **一、了解Axis2** Axis2是Axis1的下一代产品,它提供了更强大的功能和更高的性能。Axis2基于模块化架构,支持多种传输协议(如HTTP、HTTPS、SMTP...

    Axis2 Web Service 开发教程

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

    基于Axis的Web Service客户端调用

    而Apache Axis是Java平台上的一个开源工具,专门用于创建和部署Web Service。本篇将详细介绍如何使用Axis来实现Web Service的客户端调用。 首先,我们需要理解Web Service的基本概念。Web Service基于SOAP(简单...

    helios创建Web Service服务(axis2)

    5. **编写客户端代码**:同样,使用Axis2工具或手动编写,创建一个`CalculateClient`类,该类将使用服务的WSDL(Web Service描述语言)来调用服务。例如: ```java public class CalculateClient { public static...

    用axis2开发web service

    - 需要安装Axis2的自动代码生成插件,以便在Eclipse中创建Web服务。 - 创建一个新的Java项目,如`HelloWorld`,并在项目中定义一个包`cn.xupt.edu.soa`,以及一个名为`HelloWorld`的类,该类包含一个方法`sayHello...

    AXIS开发Web Service.docx

    在本文中,我们将深入探讨如何使用 AXIS 在 Tomcat 6.0.26 上进行配置,并详细介绍三种部署和调用 Web Service 的方法:Dynamic Invocation Interface (DII)、Stubs 方式以及 Dynamic Proxy 方式。 首先,配置 AXIS...

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

    (熬夜做成,希望多多看看,有一处错误,把单词wapper改为webapps,敬请原谅) 目录大纲: ...三、 Web Service 客户端的创建。 3.1 创建WSDL文件。 3.2 利用WSDL创建stub。 3.3 利用stub类测试服务。

    AXIS Web Service入门及应用

    1. 创建Web服务:你可以使用AXIS提供的wsdl2java工具,根据WSDL(Web服务描述语言)文件自动生成Java源代码。这将为你提供一个服务接口和服务实现模板。 2. 实现服务:在生成的服务实现类中添加业务逻辑,使Web服务...

    axis web service例子

    Axis是Apache软件基金会开发的一个开源Java库,主要用于创建和使用Web服务。本文将深入讲解基于Java的Axis Web服务,以及如何通过一个实际案例来理解其工作原理。 1. Axis简介: Axis是Java平台上流行的Web服务...

    axis开发web service程序

    **Apache Axis** 是一个用于构建 Web Service 的开源框架,提供了简单易用的方式来创建和部署 Web Service。Axis 支持多种版本,其中 Axis1.x 和 Axis2.x 最为常见,Axis1.x 相较之下更加稳定。 - **下载所需组件**...

    eclipse 生成 Axis2 Web Service 客户端

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

    Axis开发Web Service的实例

    ##### 3.1 创建Web服务 1. **定义服务接口**: ```java public class HelloClient { public String getName(String name) { return "hello " + name; } } ``` 这里定义了一个简单的`HelloClient`类,其中...

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

    **步骤3:创建Web Service** 1. 创建一个简单的Java类,定义你需要暴露的服务接口。 ```java public interface HelloWorld { String sayHello(String name); } ``` 2. 实现这个接口。 ```java public class ...

Global site tag (gtag.js) - Google Analytics