`

webService发布和访问小结

阅读更多
一般来说,在实际的项目中,webService的发布和调用一般都是用Apache cxf

首先,再次进行说明,通俗的说,webService的功能就是可以实现跨平台、跨语言的远程调用。
最基础的平台是xml+http

WebService平台的元素:soap协议(简单对象访问协议),WSDLWeb  Service Describe language,网络服务描述语言)。

其实这里我不想再写代码了,原理才是最重要的。

下面是我画的原理图:



 

我的上一篇日志中说过用JDK自带的Endpoint发布WebService和调用WebService的方法了。最近有研究了使用cxf来发布和调用WebService的方式。

 

看这篇日志的人应该也都是内行,cxfApache开源基金会下的一个开源的项目,也是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生成的相关接口

 

  • 大小: 38.9 KB
分享到:
评论

相关推荐

    webservice四种发布方式及客户端调用

    #### 六、小结 在选择 WebService 发布方式时,需要根据项目需求和技术背景来决定。CXF 以其与 Spring 的良好集成而受到欢迎;XFire 虽然被认为较为陈旧但仍有一定的应用场景;AXIS2 提供了更强大的功能和支持;而 ...

    精通ASP.NET.4.0网络编程 part-2

    第1篇ASP.NET网络开发关键技术第1章ASP.NET网络开发基础(教学视频87分钟)...或内容页1.2.4嵌套母版页1.2.5从内容页访问母版页控件1.3主题1.3.1创建和使用主题1.3.2主题与样式表1.3.3动态修改主题1.4Web服务1.4.1Web服务...

    精通ASP.NET.4.0网络编程 part-1

    第1篇ASP.NET网络开发关键技术第1章ASP.NET网络开发基础(教学视频87分钟)...或内容页1.2.4嵌套母版页1.2.5从内容页访问母版页控件1.3主题1.3.1创建和使用主题1.3.2主题与样式表1.3.3动态修改主题1.4Web服务1.4.1Web服务...

    第十五章 开发XFire Web Service应用22.pdf

    #### 15.10 小结 通过本章的学习,开发者不仅掌握了使用XFire和MyEclipse开发Web服务的基础知识,还深入了解了Web服务的原理、开发流程和技术要点。无论是创建简单的“Hello World”服务,还是构建复杂的天气预报...

    第十五章 开发XFire Web Service应用.pdf

    #### 15.10 小结 本章介绍了如何使用XFire框架和MyEclipse开发Web服务,包括服务创建、测试、客户端开发等多个方面。通过实际操作,开发者可以更好地理解Web服务的工作原理和技术细节,为构建高效可靠的分布式应用...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    1.5 小结 17 第2章 Visual Studio 2005 19 2.1 启动页面 19 2.2 文档窗口 20 2.2.1 文档窗口中的视图 20 2.2.2 标记导航器 21 .2.2.3 页面标签 22 2.2.4 代码改变状态的通知 23 2.2.5 错误通知和辅助 23 ...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    2.10 本章小结 116 第3章 深入使用JSF 117 3.1 JSF事件机制 118 3.1.1 Java事件模型概述 118 3.1.2 Java事件模型示例 119 3.1.3 JSF事件模型 120 3.1.4 Action事件 122 3.1.5 值改变事件 125 3.1.6 生命周期事件 128...

    第15章 开发XFire Web Service应用.pdf

    #### 15.10 小结 本章节详细介绍了如何使用MyEclipse 6开发基于XFire框架的Web服务。从项目创建、服务接口定义、服务实现、测试到部署等各个环节进行了深入探讨。通过本章的学习,读者能够掌握利用XFire框架快速...

    CLR.via.C#.(中文第3版)(自制详细书签)Part2

    3.9.1 发布者策略控制 第4章 类 型 基 础 4.1 所有类型都从System.Object派生 4.2 类型转换 4.2.1 使用C#的is和as操作符来转型 4.3 命名空间和程序集 4.4 运行时的相互联系 第5章 基元类型、引用类型和值...

Global site tag (gtag.js) - Google Analytics