分布式系统(3)---Web Service实战--CXF实践篇

第二篇:CXF实践篇

CXF架构开发WebService步骤:

1、建立Web项目

2、准备所有的jar包

3、web.xml中配置cxf的核心servlet,CXFServlet

服务器端:

<display-name>cxf_demo</display-name>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext-server.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<servlet>
		<servlet-name>CXFServlet</servlet-name>
		<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>CXFServlet</servlet-name>
		<url-pattern>/ws/*</url-pattern>
	</servlet-mapping>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

4、applicationContext-Server.xml

服务器端

<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

<jaxws:endpoint id="helloService" implementor="com.test.server.HelloWorldServerImpl"
	address="/helloService" />

客户端

<import resource="classpath:META-INF/cxf/cxf.xml" />
	<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
	<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

	<bean id="client" class="com.test.server.IHelloWorldServer"
		factory-bean="clientFactory" factory-method="create" />

	<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
		<property name="serviceClass" value="com.test.server.IHelloWorldServer" />
		<property name="address" value="http://localhost:8080/cxf_demo/ws/helloService"/>
	</bean>

CXF发布服务的类有两个:

JaxWsServerFactoryBean,我们用的这个。用于发布一个服务,可以通过默认构造实例此类。

JaxRsServerFactoryBean,此类用于发布Restful风格的webService;Restful风格是以普通get,post请求为标准的,并可以请求和相应json数据。

5、代码

服务器端,发布服务

IHelloWorldServer

@WebService
public interface IHelloWorldServer {

	public String sayHello(String username);
}

HelloWorldServerImpl

@WebService(endpointInterface = "com.test.server.IHelloWorldServer",serviceName="HelloService")
public class HelloWorldServerImpl implements IHelloWorldServer{

	@Override
	public String sayHello(String username) {
		return username + ":HelloWorld";
	}

}

客户端

HelloWorldClient

public static void main(String[] args){
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-client.xml");
		IHelloWorldServer helloService = (IHelloWorldServer) context.getBean("client");
		String response = helloService.sayHello("liutengteng");
		System.out.println(response);
	}

6、运行结果

访问地址:http://localhost:8080/cxf_demo/ws

WSDL:

客户端运行结果:

总结

通过上面简单的例子我们也很容易的看出来,远程调用就是通过服务器端发布服务,客户端调用。发布出来的WSDL通过XML的形式展示出来,XML解析,而且SOAP也是基于XML的。由于XML是各种语言通用的,故Web Service实现了跨平台,跨语言。

时间: 2024-11-18 02:53:15

分布式系统(3)---Web Service实战--CXF实践篇的相关文章

分布式系统(3)---Web Service实战--CXF理论篇

第一篇:CXF理论篇 在Java领域,WebService的框架很多,例如:AXIS,XFire,CXF等.AXIS,XFire相对比较成熟. Axis全程Apache Extensible Interaction System即Apache可扩展交互系统.是第三代Apache SOAP.本质上就是一个SOAP引擎,但不完全是一个SOAP引擎,它还是一个独立的SOAP服务器和一个嵌入Servlet引擎的服务器. XFire是新一代的Java Web服务引擎,可以非常容易地和Spring集成.是c

Web Service学习-CXF与Spring整合为JavaEE应用发布WebService(三)

CXF与Spring整合,分两个方面给大家介绍: 1,在传统ssh项目基础上添加Web Service 赋值CXF的jar包 在web.xml配置文件中导入CXF的核心控制器:CXFServlet 在Spring配置文件中导入CXF提供Schema,xml配置文件 在Spring配置文件中使用jaxws:endpoint元素来暴露Web Service 如果要添加拦截器,在jaxws:endpoint元素里添加 inInterceptors,outInterceptors子元素 2,远程调用We

Web Service (四) 手动发布Web Service接口-CXF与Spring集成

当我们发布完Web Service接口之后有两种方式可以调用Web service服务,一种是通过动态客户端方式,另一种是引用服务端的接口,引用服务端接口的方式对于客户端同服务器端耦合比较大,而使用WSDL的方式客户端不知道服务端的存在就可以调用服务器的方法. 下面是项目的结构图: 1.Web Service发布项目 2.编写服务端接口类以及实现类,如下,同上一篇自动发布接口,多了一个注解@WebService package com.test.webservice; import javax.

Web Service学习-CXF开发Web Service实例demo(一)

Web Service是什么? Web Service不是框架.更甚至不是一种技术. 而是一种跨平台,跨语言的规范 Web Service解决什么问题: 为了解决不同平台,不同语言所编写的应用之间怎样调用问题.比如.有一个C语言写的程序.它想去调用java语言写的某个方法. 集中解决:1,远程调用 2.跨平台调用 3,跨语言调用 实际应用: 1.同一个公司的新,旧系统的整合.Linux上的java应用,去调用windows平台的C应用 2,不同公司的业务整合.业务整合就带来不同公司的系统整合.不

Web Service学习-CXF开发Web Service的权限控制(二)

Web Service如何进行权限控制? 解决思路:服务器端要求input消息总是携带有用户名,密码信息,如果没有用户名和密码信息,直接拒绝调用 解决方案:拦截器 为了让程序员能访问,并修改CXF框架所生成的SOAP消息,CXF提供了拦截器 CXF(Celtix +XFire)说明: 如果不用CXF等框架,SOAP消息的生成,解析都是由程序员负责.无论是添加用户名,密码信息还是提取用户名,密码信息,都可由程序员代码完成. 如果使用CXF等框架,SOAP消息的生成,解析都是由CXF等框架来完成.

Web Service (二) CXF自动发布Web Service(No Spring)

Web Service实现目前流行的框架主要有两种,cxf和axis这两个框架,下面是这两个框架的优缺点,我们这个项目中使用的是cxf这个框架,首先看一下没有集成spring的时候是怎么实现远程调用的. Axis与Cxf比较 在SOA领域,我们认为Web Service是SOA体系的构建单元(building block).这两个框架 都是从已有的开源项目发展起来的.这两个框架哪一个更好一些呢? 通过一个比较矩阵来比较Axis2和CXF变得有现实的意义.最主要的区别在以下几个方面: 1.CXF支

RESTful Web Service实战 小结1

1 REST的基本实现形式HTTP+URI+XML,但不是唯一形式.XML后来被Json格式替代.REST是一中架构风格(Representational State Transfer,表述性状态转移),而不是具体的实现形式. 2 RESTful Web Service是一种遵守REST风格的WEB服务.是一种ROA(Resource-Oriented Architecture,面向资源的架构)应用. 主要特点是方法信息存在于HTTP的方法中(比如GET/PUT),作用域存在于URI中.作用域信

Java RESTful Web Service实战(第2版)pdf

下载地址:网盘下载 内容简介 本书系统.深度讲解了如何基于Java标准规范实现REST风格的Web服务,由拥有10余年开发经验的阿里云大数据架构师撰写,第1版上市后广获赞誉,成为该领域的畅销书.第2版对全书进行了优化和重构,不仅根据*的技术版本对原有过时内容进行了更新,而且还根据整个技术领域的发展增添了新的内容.除此之外,还对第1版中存在的不足进行了优化,使得内容更加与时具进.更加有价值.不仅深刻解读了*的JAX-RS标准和其API设计,以及Jersey的使用要点和实现原理,还系统讲解了REST

【转】基于CXF Java 搭建Web Service (Restful Web Service与基于SOAP的Web Service混合方案)

转载:http://www.cnblogs.com/windwithlife/archive/2013/03/03/2942157.html 一,选择一个合适的,Web开发环境: 我选择的是Eclipse for J2EE,当然大家可以选择MyEclipse我只是嫌最新版的MyEclipse Crack太烦,所以没用它.当年我也是最喜欢它的哟.如果你手头只有Eclipse for Java没关系,安装一个WTP就可以了. a.首先创建一个Dynamic Web Project : 在创建的第一页