首先,再次进行说明,通俗的说,webService的功能就是可以实现跨平台、跨语言的远程调用。
最基础的平台是xml+http。
WebService平台的元素:soap协议(简单对象访问协议),WSDL(Web Service Describe language,网络服务描述语言)。
其实这里我不想再写代码了,原理才是最重要的。
下面是我画的原理图:
我的上一篇日志中说过用JDK自带的Endpoint发布WebService和调用WebService的方法了。最近有研究了使用cxf来发布和调用WebService的方式。
看这篇日志的人应该也都是内行,cxf是Apache开源基金会下的一个开源的项目,也是Celtix + XFire的混合体,我现在大概知道这么多。
首先,需要的同学可以去Apache的官网上去下载。
第二步:如果你要使用wsdl2java命令来根据webService发布在网络上的API来生成本地代码(可以只生成java文件,不生成.class文件,wsdl2java -s . url);
第三步:发布或者调用服务。
发布服务时,可能需要用到的类:
1. ServerFactoryBean,该类可用于发布soap1.1版本协议的服务;
2. JaxWsServerFactoryBean,这是ServerFactoryBean的增强子类,可用于发布soap1.2版本的协议;
注意:如果使用的协议为soap1.2的版本(即在接口上使用@BindingType(SOAPBinding.SOAP12HTTP_BINDING)),那么在使用wsimport命令生成本地代码时,需要加上-extension命令来生成相关接口文件。
发布的流程为:
第一步:创建发布类对象;
第二步:设置webService服务的地址;
第三步:设置webService的接口类型;
第四步:设置webService的实现类;
第五步(可以略过):这里可以设置下是否对消息进行拦截;
第六步:发布服务;
同样,对应的客户端访问类:
1. ServerFactoryBean对应的是ClientProxyFactoryBean
2. JaxWsServerFactoryBean对应的客户端访问类是JaxWsProxyFactoryBean.
访问服务的大概流程:
第一步:创建访问webService服务的实例;
第二步:设置需要访问的webService的网络地址;
第三步:设置接口类型;
第四步:创建接口实例;
第五步:调用相关接口的方法(远程调用);
(我想说代码不是最重要的,重要的是理解里面的原理,运行的机制,底层都是jdk中的Socket)。
下面的代码是使用cxf发布和调用webService的例子:
这是一个没有实现接口的WebService,如果是接口,那么将注解打在接口上。
import javax.jws.WebService; @WebService public class CxfWebService { public void sayHello(){ System.out.println("hello!"); } }
使用ServerFactoryBean发布服务,
import org.apache.cxf.frontend.ServerFactoryBean; public class CxfServer { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //创建发布服务的类... ServerFactoryBean bean=new ServerFactoryBean(); bean.setAddress("http://192.168.9.100:8080/server");//服务对外的访问地址 bean.setServiceClass(CxfWebService.class);//设置服务类的接口类型,如果没有接口则为当前类.. bean.setServiceBean(new CxfWebService());//设置服务类的实现 bean.create();//发布服务 } }
客户端:
1. 使用wsimport命令生成本地java代码,将生成的接口拷贝到项目中来。
2. 使用ClientProxyFactoryBean类调用WebService服务;
具体代码如下:
import org.apache.cxf.frontend.ClientProxyFactoryBean; /** * 使用CXF提供的类 ClientProxyFactoryBean调用webService服务 * @author 肖云 */ public class CxfClientInvoke { public static void main(String[] args) { // 创建调用webService服务的类 ClientProxyFactoryBean bean = new ClientProxyFactoryBean(); // 设置调用地址 bean.setAddress("http://192.168.0.102:8090/cxfService"); // 设置接口类型 bean.setServiceClass(CxfWebServicePortType.class); // 创建接口类型的实例 CxfWebServicePortType cxfWebServicePortType = (CxfWebServicePortType) bean.create(); // 调用相关方法 cxfWebServicePortType.sayHello(); } }
其中:
CxfWebServicePortType 类是使用wsimport生成的相关接口
相关推荐
java开发过程中,很多地方都会遇到数据传递,远程获取数据问题,我这个简单的webservice接口发布可以在java开发过程中,很多地方都会遇到数据传递,远程获取数据问题,我这个简单的webservice接口发布可以在
简单的webservice发布和调用 初学者可以看看
PowerBuilder12.5做的webservice发布到iis上面遇到的问题以及解决办法
### WebService 发布及调用方法详解 #### 一、概述 WebService 技术作为一种标准的跨平台服务交互协议,在企业级应用集成中扮演着重要角色。本文将详细介绍 WebService 的四种常见发布方式:CXF、XFire、Axis2 和 ...
在微信小程序中访问WebService,我们需要遵循以下步骤: 1. **创建WebService接口**:在.NET环境中,可以使用ASP.NET或WCF(Windows Communication Foundation)来创建WebService。编写一个公共方法,该方法处理...
2. WebService发布: 发布WebService主要涉及以下步骤: - **创建服务接口**:定义服务的操作(方法)和输入/输出参数。在Java中,这通常通过JAX-WS(Java API for XML Web Services)实现,使用注解如@WebService...
本文将详细探讨"访问WebService处理拦截开始访问的消息"这一主题,包括Web服务的工作原理、消息拦截的概念以及如何实现拦截开始访问的消息。 1. **Web服务的工作原理** Web服务基于SOAP(Simple Object Access ...
4. **发布 WebService**:为了能让其他应用程序通过网络访问该 WebService,需要将其部署到服务器。这里假设部署到本地 IIS。 - **发布 WebService**:在 Visual Studio 中,右键点击项目,选择“发布”。按照向导...
webservice接口发布脚本,用于服务端发布,存放在WEB_INF目录下即可!
LabVIEW 调用WebService 访问远程数据 在本篇文章中,我们将讨论如何使用 LabVIEW 调用 WebService 来访问远程数据。首先,我们需要了解为什么需要使用 WebService 来访问远程数据。传统的方法是使用链接字符串连接...
基于 Webservice 的数据访问技术 Webservice 工作原理 Webservice 是一种基于网络的远程过程调用(RPC)技术,允许不同的应用程序之间通过网络进行通讯和交互。Webservice 工作原理可以分为两种:通过 Socket 实现...
在这个“微信小程序访问webservice”的项目中,我们主要会涉及到以下几个关键知识点: 1. **微信小程序开发环境**:首先,你需要安装微信开发者工具,这是一个集成开发环境,提供调试、预览、发布等功能,是开发...
本文将详细介绍如何使用 Java 程序访问 Net WebService,包括 Net WebService 的创建、发布和访问等内容。 一、 Net WebService 的创建 首先,我们需要使用 C# 创建一个简单的 Net WebService。下面是一个简单的...
webservice常见问题及解决: 一、 VS中创建Web服务项目。 二、 WebService生成发布 三、 网站发布 四、 故障及解决方法 五、 如何访问WebService 六、 Win 7下的WebService
webservice示例 springmvc+maven+cxf发布webservice 博客地址 http://blog.csdn.net/joe_storm/article/details/78839150
用Eclipse发布WebService图解
在描述中,“EOS发布WebService-服务端”可能意味着讨论如何在EOS环境中创建和部署Web服务,以便其他系统或客户端可以调用这些服务来执行特定的功能。这通常涉及XML(可扩展标记语言)、SOAP(简单对象访问协议)和...
在这里,我们将创建一个新的函数模块或使用已有的模块来构建WebService的基础。 **B. 创建WebService** 在SE37中,选择“创建Web服务”选项,这通常意味着选择“无权限认证”。这表示外部系统访问此WebService时...
### Java WebService 的发布与调用 #### 一、前言 随着互联网技术的发展,不同系统之间的通信变得越来越重要。WebService作为一种重要的分布式计算技术,在跨平台、跨语言的服务交互方面发挥着重要作用。本文将详细...