- 浏览: 921565 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (263)
- J2EE (9)
- Spring (11)
- Hibernate (11)
- Struts (5)
- opensource (19)
- Hadoop (28)
- 架构设计 (8)
- 企业应用 (10)
- SNMP (8)
- SSO (4)
- webservice (11)
- RPC (2)
- 编程语言 (0)
- Java (30)
- Javascript (5)
- NoSQL (11)
- 数据库 (0)
- oracle (8)
- MySQL (3)
- web (1)
- Android (2)
- Linux (15)
- 软件工具 (15)
- 项目构建 (11)
- 测试工具 (2)
- Exception (19)
- 杂谈 (4)
- Groovy (5)
- Nodejs (1)
- MacOSX (4)
最新评论
-
fighhin:
decode(BinaryBitmap,java.util.M ...
条形码/二维码之开源利器ZXing图文介绍 -
u013489005:
追问:楼主,请问有中文文档么?我的邮箱是frankgray@s ...
Java表达式计算引擎:Expr4J -
u013489005:
感谢博主 需要引入的包是import java.io.*;im ...
Java表达式计算引擎:Expr4J -
calosteward:
感谢楼主分享。。 Zxing 我听说过的。__________ ...
条形码/二维码之开源利器ZXing图文介绍 -
u013810758:
judasqiqi 写道感谢楼主!想请问楼主一下这个生成的图片 ...
Java实现二维码QRCode的编码和解码
blog迁移至:http://www.micmiu.com
本文主要记录Axis开发webservice简单实例的详细过程和步骤:
Axis官方网站:http://ws.apache.org/axis/
可以在官网下载最新1.4的包:axis-bin-1_4.zip
将解压后的axis-1_4\webapps\下的axis目录考到%TOMCAT_HOME%/Webapps/目录下
启动tomcat后在浏览器里输入http://localhost:8082/axis会看到下图所示(ps:本人的tomcat端口为8082)
点击上图中的Validataion链接,页面上会提示已经有的包和缺少的包的信息,根据提示将必须的包下载全,将这些类包复制到 %tomcathome%/webapps/axis/WEB-INF/lib/目录下重新启动tomcat,直到Validation页面中看不到有Error与Warning的提示信息。
如果提示缺少xmlsec.jar可以到http://santuario.apache.org/dist/java-library/下载.
Axis支持三种web service的客户端访问方式,分别为:
下面介绍axis部署和发布web service的方式:
一、JWS
JWS(Java Web Service)是最简单的一种方式。Axis允许把普通Java类的源文件的扩展名改为.jws,然后把它简单的copy到AXIS_HOME下。这样,Axis 会自动编译.jws文件,并把它自动加入到Java Web Servie的服务中。具体过程如下
1.用Eclipse或者文本编辑器编写一个java类SayHello.java(此类不含包名)
2.将上面的类(SayHello.java)copy到%tomcat_home%/webapps/axis/目录下,只需要把类的源文件(不是class)到这个目录下,重命名为:SayHello.jws
3.打开浏览器输入:http://localhost:8082/axis/SayHello.jws 会看到
点击上图Click to see the WSDL 的链接,就可以看到生成的wsdl。
4.客户端Dynamic Invocation Interface ( DII)方式 实现如下:
5.客户端Dynamic Proxy方式 实现如下:
二、WSDD(Web Service Deployment Descriptor)文件发布Web Service
1.自定义参数bean和server的代码如下:
2.deploy.wsdd和undeploy.wsdd文件的编写如下:
WSDD文件描述可参见:http://www.oio.de/axis-wsdd/
3.将上面写好的两个类的class文件复制到%tomcat_home%/axis/WEB-INF/class/目录下,完整的目录结构复制过来,然后在把两个wsdd文件复制到%tomcat_home%/axis/WEB-INF/目录下,打开控制台进入%tomcat_home%/axis/WEB-INF/目录下:
>java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -p 8082 deploy.wsdd
-s参数指定了AxisServlet所在的应用程序路径
>java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -p 8082 -s /axis/servlet/AxisServlet deploy.wsdd
-l参数指定目标应用的URL
>java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient –lhttp://localhost:8082/axis/services/MessageService deploy.wsdd
这个命令就是发布这个服务,发布成功后在控制台下会有提示:
Processing file deploy.wsdd
<Admin>Done processing</Admin>
同时发布后会在%tomcat_home%/axis/目录下,多了一个server-config.wsdd文件.
在浏览器输入:http://localhost:8082/axis/services/MessageService会看到下图
5.client的生成方法:
打开控制台进入%tomcat_home%/axis/WEB-INF/目录下:
>java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java -p client http://localhost:8082/axis/services/MessageService?wsdl
会在当前的目录下生成client文件夹,这个目录里文件就是客户端源码。
6.通过WSDD文件卸载发布的webservice:
打开控制台进入%tomcat_home%/axis/WEB-INF/目录下:
>java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient undeploy.wsdd
如果不是默认8080端口需要加上参数-p:
>java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -p 8082 undeploy.wsdd
PS:java -Djava.ext.dirs=lib 也可以用java -cp "lib\*"
7.客户端Stubs方式实现如下:
本文主要记录Axis开发webservice简单实例的详细过程和步骤:
Axis官方网站:http://ws.apache.org/axis/
可以在官网下载最新1.4的包:axis-bin-1_4.zip
将解压后的axis-1_4\webapps\下的axis目录考到%TOMCAT_HOME%/Webapps/目录下
启动tomcat后在浏览器里输入http://localhost:8082/axis会看到下图所示(ps:本人的tomcat端口为8082)
点击上图中的Validataion链接,页面上会提示已经有的包和缺少的包的信息,根据提示将必须的包下载全,将这些类包复制到 %tomcathome%/webapps/axis/WEB-INF/lib/目录下重新启动tomcat,直到Validation页面中看不到有Error与Warning的提示信息。
如果提示缺少xmlsec.jar可以到http://santuario.apache.org/dist/java-library/下载.
Axis支持三种web service的客户端访问方式,分别为:
- Dynamic Invocation Interface ( DII)
- Dynamic Proxy方式
- Stubs方式
下面介绍axis部署和发布web service的方式:
一、JWS
JWS(Java Web Service)是最简单的一种方式。Axis允许把普通Java类的源文件的扩展名改为.jws,然后把它简单的copy到AXIS_HOME下。这样,Axis 会自动编译.jws文件,并把它自动加入到Java Web Servie的服务中。具体过程如下
1.用Eclipse或者文本编辑器编写一个java类SayHello.java(此类不含包名)
public class SayHello{ public String sayMsg(String name){ return "Hello,"+name; } }
2.将上面的类(SayHello.java)copy到%tomcat_home%/webapps/axis/目录下,只需要把类的源文件(不是class)到这个目录下,重命名为:SayHello.jws
3.打开浏览器输入:http://localhost:8082/axis/SayHello.jws 会看到
点击上图Click to see the WSDL 的链接,就可以看到生成的wsdl。
4.客户端Dynamic Invocation Interface ( DII)方式 实现如下:
import org.apache.axis.client.Call; import org.apache.axis.client.Service; /** * axis client * @author Michael sun */ public class TestClient { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { String wsdlUrl = "http://localhost:8082/axis/SayHello.jws"; // String wsdlUrl=”http://localhost:8080/axis/SayHello.jws?wsdl” Service s = new Service(); Call call = (Call) s.createCall(); call.setOperationName("sayMsg");// 这里是要调用的方法名 call.setTargetEndpointAddress(wsdlUrl);// 设置调用的wsdl String val = (String) call.invoke(new Object[] { "My Michael Sun" }); System.out.println("这是webservice服务器返回的信息:" + val); } }
5.客户端Dynamic Proxy方式 实现如下:
public interface SayHelloInterface extends java.rmi.Remote { public String sayMsg(String name) throws java.rmi.RemoteException; }
import java.net.URL; import javax.xml.namespace.QName; import javax.xml.rpc.Service; import javax.xml.rpc.ServiceFactory; /** * test Dynamic Proxy client * @author Michael sun */ public class TestProxyClient { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { String wsdlname = "http://localhost:8088/axis/SayHello.jws?wsdl"; // 服务路径 String namespaceUrl = "http://localhost:8088/axis/SayHello.jws"; // 服务名 String serviceName = "SayHelloService"; // 服务 String portName = "SayHello"; // 创建代理对像 ServiceFactory service = ServiceFactory.newInstance(); // 创建远程服务 Service s = service.createService(new URL(wsdlname), new QName( namespaceUrl, serviceName)); SayHelloInterface proxy = (SayHelloInterface) s.getPort(new QName( namespaceUrl, portName), SayHelloInterface.class); System.out.println(proxy.sayMsg("Blue boy!")); } }
二、WSDD(Web Service Deployment Descriptor)文件发布Web Service
1.自定义参数bean和server的代码如下:
package wsaxis.bean; /** * bean * @author Michael sun */ public class UserBean { private String userName; private Integer age; /** * @return the userName */ public String getUserName() { return userName; } /** * @return the age */ public Integer getAge() { return age; } /** * @param pUserName the userName to set */ public void setUserName(String pUserName) { userName = pUserName; } /** * @param pAge the age to set */ public void setAge(Integer pAge) { age = pAge; } }
package wsaxis; import wsaxis.bean.UserBean; /** * axis server * @author Michael sun */ public class MessageService { /** * getBeanStr * @param bean * @return String */ public String getBeanStr(UserBean bean) { return "You Name:" + bean.getUserName() + " , You Age:" + bean.getAge(); } /** * checkUser * @param bean * @return String */ public String checkUser(UserBean bean) { if ("Michael".equals(bean.getUserName())) { return "Michael welcome to axis "; } else { return bean.getUserName() + " can't access this ws"; } } }
2.deploy.wsdd和undeploy.wsdd文件的编写如下:
WSDD文件描述可参见:http://www.oio.de/axis-wsdd/
<deployment name="test" xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="MessageService" provider="java:RPC" style="rpc" use="encoded"> <parameter name="className" value="wsaxis.MessageService"/> <parameter name="allowedMethods" value="*"/> <typeMapping xmlns:ns1="http://wsaxis.michael.com" qname="ns1:userBean" type="java:wsaxis.bean.UserBean" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </service> </deployment>
<undeployment xmlns="http://xml.apache.org/axis/wsdd/"> <!-- Services from MessageService WSDL service --> <service name="MessageService"/> </undeployment>
3.将上面写好的两个类的class文件复制到%tomcat_home%/axis/WEB-INF/class/目录下,完整的目录结构复制过来,然后在把两个wsdd文件复制到%tomcat_home%/axis/WEB-INF/目录下,打开控制台进入%tomcat_home%/axis/WEB-INF/目录下:
>java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -p 8082 deploy.wsdd
-s参数指定了AxisServlet所在的应用程序路径
>java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -p 8082 -s /axis/servlet/AxisServlet deploy.wsdd
-l参数指定目标应用的URL
>java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient –lhttp://localhost:8082/axis/services/MessageService deploy.wsdd
这个命令就是发布这个服务,发布成功后在控制台下会有提示:
Processing file deploy.wsdd
<Admin>Done processing</Admin>
同时发布后会在%tomcat_home%/axis/目录下,多了一个server-config.wsdd文件.
在浏览器输入:http://localhost:8082/axis/services/MessageService会看到下图
5.client的生成方法:
打开控制台进入%tomcat_home%/axis/WEB-INF/目录下:
>java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java -p client http://localhost:8082/axis/services/MessageService?wsdl
会在当前的目录下生成client文件夹,这个目录里文件就是客户端源码。
6.通过WSDD文件卸载发布的webservice:
打开控制台进入%tomcat_home%/axis/WEB-INF/目录下:
>java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient undeploy.wsdd
如果不是默认8080端口需要加上参数-p:
>java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -p 8082 undeploy.wsdd
PS:java -Djava.ext.dirs=lib 也可以用java -cp "lib\*"
7.客户端Stubs方式实现如下:
import java.net.URL; import javax.xml.namespace.QName; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.ser.BeanDeserializerFactory; import org.apache.axis.encoding.ser.BeanSerializerFactory; import stubclient.UserBean; /** * test stub client * @author Michael sun */ public class TestStubClient { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { QName qname = new QName("http://wsaxis.michael.com", "user"); Service s = new Service(); Call call = (Call) s.createCall(); // 注册这个bean为可序列化的.传递参数 call.registerTypeMapping(UserBean.class, qname, new BeanSerializerFactory(UserBean.class, qname), new BeanDeserializerFactory(UserBean.class, qname)); // 设置一下调用方法名. call.setOperationName("getBeanStr"); // 设置一下这个服务的绝对路径. call.setTargetEndpointAddress(new URL( "http://localhost:8082/axis/services/MessageService?wsdl")); // 实例化一个UserBean,这个UserBean是生成client的UserBean UserBean u = new UserBean(); u.setAge(28); u.setUserName("Michael"); // 通知方法,并返回结果 String str = (String) call.invoke(new Object[] { u }); System.out.println("web service 返回信息:" + str); } }
发表评论
-
JAX-WS开发的webservice如何在Tomcat下发布
2012-08-07 10:01 1753目录: 构建项目 服务端编码 sun ... -
webservice获取客户端IP地址
2012-08-07 09:28 1523目录: 基于JDK6 jax-ws开发的webser ... -
XFire基于JSR181注释实现webservice的示例
2012-08-01 10:13 1095目录 构建项目 服务端实现 客户端测 ... -
运用XFire的嵌入式HTTP服务器发布服务
2012-07-31 09:15 940目录 构建项目 创建服务端API 嵌 ... -
XFire开发客户端几种方式的示例
2012-07-31 09:14 1227目录: 概述 根据默认配置实现代理客户端 ... -
XFire webservice入门开发实例
2012-07-27 14:59 1086目录: 前言概述 环境配置 构建项目 ... -
JAX-WS开发webservice示例详解
2012-07-12 12:55 1691目录: 概述 实验环境 服务端的实现 ... -
小试Hessian实现webservice
2011-04-25 17:40 3544blog迁移至:http://www.micmiu.c ... -
JDK6 webservice的应用(注意SOAPBinding.Style不同的差异)
2010-04-20 11:45 5508blog迁移至:http://www ... -
xfire webservices图文介绍详细步骤(附源码)
2010-03-23 01:56 1629blog迁移至:http://www.micmiu.c ...
相关推荐
标题中的“axis2webservice接口例子”指的是使用Apache Axis2框架创建的一个Web服务接口实例。Apache Axis2是Java平台上的一款强大的Web服务开发工具,它提供了高效、灵活且可扩展的环境来构建和部署Web服务。这个...
标题 "axis 开发webservice经典入门例子" 指向的是使用Apache Axis工具来创建和使用Web服务的基本教程。Apache Axis是开源的Java框架,它允许开发者轻松地在Java应用程序中构建和部署Web服务。本教程可能是为了帮助...
访问地址: http://127.0.0.1:8080/axis/services
webService—Axis实例webService—Axis实例webService—Axis实例webService—Axis实例webService—Axis实例webService—Axis实例webService—Axis实例
Axis 是 Apache 组织开发的 Java WebService 工具包,它简化了 WebService 的开发过程。Axis 支持 SOAP 1.1 和 1.2,以及 WSDL 1.1 标准,允许开发者快速创建服务端和客户端代码。 ### 3. Axis 服务端实现 - **...
【标题】中的“基于axis2实现的webservice简单实现(客户端+服务端)”表明了本文将探讨如何使用Apache Axis2框架来创建和消费Web服务。Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了高效且灵活的...
通过这个简单的Java Axis WebService实例,你应该对Web服务的开发有了初步的认识。继续深入学习,包括理解SOAP消息结构、WSDL的细节以及如何处理更复杂的数据类型,将使你成为Web服务开发的专家。实践中不断探索,祝...
在本实例中,我们将深入探讨如何使用Axis开发一个简单的"Hello World" WebService。这个教程是基于网上流行的一个文档,但原文档存在四处错误,我已经进行修正并经过Eclipse IDE的调试验证,确保其正确无误。 首先...
标题中的“详解axis调用webservice实例”表明我们将探讨如何使用Apache Axis库来调用Web服务。Apache Axis是一个开源工具,它允许Java开发者创建、部署和使用Web服务。在这个实例中,我们会有机会看到实际的Java代码...
### Axis开发WebService实例知识点解析 #### 一、Axis概述与安装配置 - **Apache Axis简介**:Apache Axis是Apache组织提供的一个开源项目,用于在Java环境中实现WebService技术规范。它支持SOAP协议,并提供了...
Apache Axis是Java平台上的一个开源工具,专门用于创建和部署Web服务,它为开发人员提供了方便的方式来实现这些服务。本篇文章将深入讲解如何使用Apache Axis1.4实现Web服务。 首先,我们需要理解Axis1.4的特点。...
标题中的“axis开发webservice客户端”指的是使用Apache Axis框架创建并使用Web服务客户端的过程。Apache Axis是Java平台上的一个开源工具,它简化了SOAP(Simple Object Access Protocol)Web服务的开发,包括...
在开发之前, 先了解一下AXIS,axis目前出现的2版本以其灵活性,快速开发工具的集成高于xfire而使用者居...这是对此版本的基本功能与简单实例的描术) 本人的开发环境eclipse3.2 ,tomcat5.0.28 ,jdk1.4 axis_1.4目前最新版
标题中的“axis调用webservice实例”涉及到的是在Java开发中使用Apache Axis库来调用Web服务的过程。Apache Axis是一个开放源代码的SOAP栈,它允许开发者创建和部署Web服务,同时也提供了客户端工具来调用这些服务。...
为了更好地理解和实践这些步骤,可以参考给定的文档“Eclipse开发Axis_WebService实例总结_20100430.doc”。这个文档通常会包含详细的步骤、截图以及可能遇到的问题和解决方案,对于初学者非常有帮助。 总结,发布...
axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例
本文档主要介绍了如何使用Eclipse和AXIS框架开发和发布Web服务,以及进行客户端测试。以下是详细步骤和关键知识点: 1. **Eclipse插件安装**: - Eclipse提供了Web服务开发的插件,可以从官方网站下载WTP(Web ...
在Android开发中,有时我们需要与远程服务器进行交互,获取或发送数据。Web Service是一种常见的通信方式,而Axis2是Apache组织提供的一款强大的Web Service框架,它支持SOAP和RESTful服务。本文将详细介绍如何在...
### Java开发WebService实例详解 在IT领域,尤其是企业级应用开发中,WebService作为一种标准化的、跨平台的服务交互方式,被广泛应用于系统间的数据交换与服务调用。本文将基于给定的“Java开发WebService实例”...
本篇将深入探讨Axis下的WebService例子,以及如何利用它来实现跨平台的数据交互。 首先,我们需要理解WebService的基本概念。WebService是一种基于开放标准(如SOAP、WSDL和UDDI)的互联网应用程序,能够通过XML...