转自:http://fengyouhua.iteye.com/blog/49383 并做一些修改
从安装 Axis 开始,
1、编写DII方式web服务,
2、Dynamic Proxy 方式访问服务,
3、wsdd 发布web服务
4、stub client 访问web服务
上面四个步骤,详解如何使用Axis开发 Web Service 的一个实例。
一、Axis安装
1、环境JDK,Tomcat
2、到 http://ws.Apache.org/Axis/网站下载Axis安装包,也可以 从http://download.csdn.net/download/fangmingrui/643150下载。
3、解压缩安装包,将Axis_ZIP_PATH\Axis-version\webapps下的Axis包拷贝到TOMCAT_HOME\webapps\下,以下约定Axis_HOME为该TOMCAT_HOME\webapps\Axis目录
4、启动tomcat,访问http://localhost:8080/Axis 检查安装是否成功
5、以上步骤执行成功,可以开发webservice例子了
Axis支持三种web service的部署和开发,分别为:
1、Dynamic Invocation Interface ( DII)( 这种方式的局限性太大)
2、Stubs方式(推荐使用)
3、Dynamic Proxy方式
二、编写DII(Dynamic Invocation Interface )方式web服务
1.编写服务端程序HelloClient
public class HelloClient
{
public String getName(String name)
{
return "hello "+name;
}
}
注意:这个类在改写为 HelloClient.jws的时候上面的package路径要删掉
2、将源码拷贝到Axis_HOME下,重命名为 HelloClient.jws
3、访问连接http://localhost:8080/Axis/HelloClient.jws?wsdl,页面显示Axis自动生成的wsdl
4、编写访问服务的客户端 TestHelloClient.java
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class HelloClient {
public static void main(String[] args) {
try {
String endpoint = "http://localhost:8080/Axis/HelloClient.jws";
Service service = new Service();
Call call = null;
call = (Call) service.createCall();
call.setOperationName(new QName("http://localhost:8080/Axis/HelloClient.jws", "getName"));
call.setTargetEndpointAddress(new java.net.URL(endpoint));
String ret = (String) call.invoke(new Object[] { "zhangsan" });
System.out.println("return value is " + ret);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
三、编写Dynamic Proxy方式访问服务
1、编写部署服务端程序,同上边DII方式,本次仍使用上边部署的HelloClient
2、编写代理接口
public interface HelloClientInterface extends java.rmi.Remote
{
public String getName(String name)
throws java.rmi.RemoteException;
}
3、编写并执行客户端程序TestHelloClient.java
import javax.xml.rpc.Service;
import javax.xml.rpc.ServiceFactory;
import java.net.URL;
import javax.xml.namespace.QName;
public class TestHelloClient {
public static void main(String[] args) {
try {
String wsdlUrl = "http://localhost:8080/Axis/HelloClient.jws?wsdl";
String nameSpaceUri = "http://localhost:8080/Axis/HelloClient.jws";
String serviceName = "HelloClientService";
String portName = "HelloClient";
ServiceFactory serviceFactory = ServiceFactory.newInstance();
Service afService = serviceFactory.createService(new URL(wsdlUrl),
new QName(nameSpaceUri, serviceName));
HelloClientInterface proxy = (HelloClientInterface) afService
.getPort(new QName(nameSpaceUri, portName),
HelloClientInterface.class);
System.out.println("return value is " + proxy.getName("john"));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
四、Stubs方式:编写wsdd发布web服务,编写stub client访问web服务
1、编写服务端程序server,SayHello.java,编译
- package server;
-
- public class SayHello {
- public String getName(String name) {
- return "hello " + name;
- }
- }
2、编写wsdd文件
deploy.wsdd文件内容如下:
- <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
- <service name="SayHello" provider="java:RPC">
- <parameter name="className" value="server.SayHello"/>
- <parameter name="allowedMethods" value="*"/>
- </service>
- </deployment>
3、发布服务:
编辑一个deploy.bat,Axis_Lib为axis.jar路径。内容如下:
- set Axis_Lib=D:\workspace\test\WEB-INF\lib
- set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
- set Axis_Servlet=http:
- %Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% deploy.wsdd
执行这个批处理文件,这时候,如果提示成功的话,访问http://localhost:8080/test/services 就会显示服务列表。
4、生成客户端client stub文件
在浏览器上访问服务器端的服务,可以下载到WSDL文件,通过Axis的相关工具,可以自动从WSDL文件中生成Web Service的客户端代码。
编写一个WSDL2Java.bat文件,其内容如下:
- set Axis_Lib=D:\workspace\test\WEB-INF\lib
- set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
- set Output_Path=D:\workspace\test\src
- set Package=server.SayHello
- %Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% SayHello.wsdl
执行这个批处理文件就可以生成client stub.
生成的stub client文件列表为:
SayHello.java,
SayHelloService.java,
SayHelloServiceLocator.java,
SayHelloSoapBindingStub.java .
5、编写客户端程序,编译并执行
下面是一段junit测试客户端代码。
- import java.net.URL;
- import junit.framework.Test;
- import junit.framework.TestCase;
- import junit.framework.TestSuite;
-
- public class TestWSClient extends TestCase {
-
- public TestWSClient(String string) {
- super(string);
- }
-
- public void SayHelloClient() throws Exception {
-
- SayHelloService service = new SayHelloServiceLocator();
- SayHello_PortType client = service.getSayHello();
- String retValue = client.getName("clientname");
- System.out.println(retValue);
-
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite();
- suite.addTest(new TestWSClient("SayHelloClient"));
- return suite;
- }
- }
分享到:
相关推荐
XFire_WebService开发例子.zip XFire_WebService开发例子.zip XFire_WebService开发例子.zip
XFire_WebService 开发 例子 详解 包含图解 详细的开发步骤
这是一个用cxf进行webservice开发的小例子,解决了no cxf bean等小问题,采用maven组织,接口可通过web发布,并带了测试demo。整个过程参考:http://developer.51cto.com/art/201205/333868.htm,大家可以继续完善
rad开发webservice的例子
webservice小例子 用于webservice 接口开发,客户端调用
java开发webservice的简单例子,简单看看
注:SOAP协议(Simple Object Access Protocal,简单对象访问协议),它是一个基于XML的通讯协议用于分散和分布式环境下网络信息交换。在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标...
NULL 博文链接:https://lihong11.iteye.com/blog/2058911
自己总结的java webService接口开发案例,希望能够帮助我需要的朋友。
多的不说,就是xfire构建WebService例子,分为服务端和客户端
webservice开发入门实例 ,在MyEclipse下开发,调试并运行成功了的。
一个基于xfire开发的Webservice小例子,初学者可以看看!
用maven管理的,xfire+spring开发的webservice例子
最简单的webservice的例子,包括服务端与客户端,有axis、xfire的两种方式的实现
webservice接口开发简单例子webService接口开发实例job调度功能
pb11.5开发,调用webservice的例子,实现的有天气预报和手机号码归属地查询。有点大,因为怕下载的人没有安装pb11.5所以把运行时库打包放在里面了
Java 开发 Web 服务完整例子 本文档主要讲述了 Java 开发 Web 服务的完整例子,包括使用 JDK 中的 Web 服务 API 实现 Web 服务,以及使用 XFire 工具来生成 Web 服务。 一、使用 JDK 中的 Web 服务 API 实现 Web ...
需要maven开发环境,使用intellij idea打开,分为服务端(server)和客户端(client)