先简短的说一下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
分享到:
- 2009-06-30 10:41
- 浏览 2276
- 评论(4)
- 论坛回复 / 浏览 (4 / 6323)
- 查看更多
相关推荐
Axis2创建web service快速入门
通过该实验将掌握配置MyEclipse7.0的axis Web Service的开发环境,通过Top-Down方式创建、发布基于axis Web Service的基本步骤,进一步加深学生对XML、WSDL、SOAP等Web Service概念的理解。
(熬夜做成,希望多多看看,有一处错误,把单词wapper改为webapps,敬请原谅) 目录大纲: ...三、 Web Service 客户端的创建。 3.1 创建WSDL文件。 3.2 利用WSDL创建stub。 3.3 利用stub类测试服务。
helios创建Web Service服务
Axis2创建WebService,有详尽介绍,还有附图,本人进行过测试,可以使用
使用axis和CXF实现web service的说明文档。
Axis+MyEclipse6.0+Tomcat5.0开发Web Service实例总结
Spring Web Service是Spring社区基于Spring提供的一个关注于创建”文档驱动”的Web Service的模块, 它的主要目标是方便基于”契约优先”(Contract-First)的SOAP服务的开发. 好像没有多少人讨论, 大多数的话题都是...
3. 创建web工程 1). 建立一个 JavaProject 命名为 ws ,将 axis2 用户库加入到 build path 中。 2). 现在开始编写要发布的 WebSevice ,在 src 中建包 briup ,建立 Hello 类如下 Package pkg.service; public ...
1. axis2-1.1.1.rar中包含工程中所需的axis2的类包。 2. axis2.war是打包好的web应用。用于放在Tomcat中,当运行Tomcat后会自动解压。...具体的部署步骤和使用请参照《(原创)用Eclipse + Axis2+Tomcat创建Web Service》
1. axis2-1.1.1.rar中包含工程中所需的axis2的类包。 2. axis2.war是打包好的web应用。用于放在Tomcat中,当运行Tomcat后会自动解压。...具体的部署步骤和使用请参照《(原创)用Eclipse + Axis2+Tomcat创建Web Service》
这是最好的手把手教会你怎么去创建web service应用
Axis2创建WebService实例所需要的bin压缩包和war压缩包
Woden项目是Apache Web Services项目演化而来的一个子项目,主要用来开发用于读/写、操作、创建WSDL文档的Java类库,在初始阶段支持WSDL2.0,但是随着开发的继续,将会支持各种版本的WSDL。 Woden主要包含了两部分...
Web Service作为SOA(Service Oriented Architecture)的最好实现...介绍了Web服务框架以及支撑Web服务的WSDL、SOAP、Axis2和JUDDI等相关理论知识,通过设计与实现一个例子来阐述Web服务创建、发布、查找和调用的整个过程.
c# JSON返回格式的WEB SERVICE//www.jb51.net/article/16768.htm我这里是利用axis创建类包的,首先下载axis的压缩包,然后解压,把axis放到webapp下面。如果可以运行,就OK了。 c#创建的webservice自带的wsdl的,...
3. 编写Web service程序 10 3.1. Axis2的简单WebService示例 10 3.1.1. 0配置POJO的Webservice 10 3.1.2. 用axis2的辅助工具发布、调用WebService 12 3.1.3. WebService会话Session的管理 24 3.1.4. 用Spring创建的...
在TOMCAT-HOME/webapps/axis下创建MyMath.jws文件
一:首先创建个WEB工程,然后: http://ws.Apache.org/axis/网站下载Axis安装包.当然还依赖其他包的,我这里在附件里上传了所有应用到得包,方便大家。 二:然后写wsdd 文件(注:其实这里真的不用,可以跳过第...