版本:CXF 2.7.0
jdk版本:1.6.0_38
IDE:Eclipse Java EE IDE Juno
因为是新手 所以这个主要是一个记录的日志 原理我还不太懂了... ...%>_<%
初期准备:
变量配置:
classpath cxf的lib文件夹
CXF_HOME 指向CXF根目录的路径
PATH 放入CXF的bin路径
java_home 环境变量(一定要是jre的 不是jdk的)
安装:
eclipse-->window-->preference-->web service-->CXF 2.x Preferences-->add 将CXF的根目录输入
服务器配置:
因为是第一个 就按照教程做一个最简单的 折扣服务
远端传入编号和原价 返回折扣价
步骤:
新建一个项目server
建立一个包
新建一个接口类作为服务的接口
新建一个类实现这个接口
代码如下:
接口类:
package org.cc.ws; import javax.jws.WebService; @WebService public interface DiscountService { // 折扣 public double discountPrice(int num,double original); }
实现类:
package org.cc.ws; public class DiscountServiceImpl implements DiscountService { // 三级的折扣 private final int[] nums={ 1,2,3 }; @Override public double discountPrice(int num, double original) { double price=original; for(int numId:nums){ if(num==numId){ price*=(10-num)/10.0; break; } } return price; } }
启动类:
package org.cc.ws; import javax.xml.ws.Endpoint; public class Server { public static void main(String[] args) { // 简单的发布 // 参数一是发布的地址,参数二是服务接口实现类的对象 Endpoint.publish("http://localhost/discount", new DiscountServiceImpl()); } }
运行 服务开启了~内置了一个嵌入式的Jetty 运行就是一个服务器了
运行内容:
信息: Creating Service {http://ws.cc.org/}DiscountServiceImplService from class org.cc.ws.DiscountService
2013-5-8 23:54:50 org.apache.cxf.endpoint.ServerImpl initDestination
信息: Setting the server's publish address to be http://localhost:80/discount
2013-5-8 23:54:50 org.eclipse.jetty.server.Server doStart
信息: jetty-8.1.7.v20120910
2013-5-8 23:54:50 org.eclipse.jetty.server.AbstractConnector doStart
信息: Started SelectChannelConnector@localhost:80
2013-5-8 23:54:50 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromWSDL
信息: Creating Service {http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01}Discovery from WSDL: classpath:/org/apache/cxf/ws/discovery/wsdl/wsdd-discovery-1.1-wsdl-os.wsdl
2013-5-8 23:54:50 org.apache.cxf.endpoint.ServerImpl initDestination
信息: Setting the server's publish address to be soap.udp://239.255.255.250:3702
2013-5-8 23:54:50 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
信息: Creating Service {http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01}DiscoveryProxy from class org.apache.cxf.jaxws.support.DummyImpl
浏览器输入 http://localhost/discount?wsdl 显示了xml文件并且服务器的console没有报错就正常啦~~~\(≧▽≦)/~
客户端:
使用生成的命令:
wsdl2java -p org.cc.ws.client -d h:\webservice http://localhost/discount?wsdl
将生成好的类放入对应的包里
只需要写一个启动的类即可:
package org.cc.ws.client; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; public class Client { public static void main(String[] args) { JaxWsProxyFactoryBean factoryBean=new JaxWsProxyFactoryBean(); factoryBean.setAddress("http://localhost/discount"); factoryBean.setServiceClass(DiscountService.class); DiscountService service=(DiscountService)factoryBean.create(); System.out.println(service.discountPrice(1, 100)); } }
运行一下:
信息: Creating Service {http://ws.cc.org/}DiscountServiceService from class org.cc.ws.client.DiscountService
90.0
服务器端增加拦截器:
不能使用封装好的发布形式 要自己使用JaxWsServerFactoryBean进行操作:
如下:加入了请求进入和结果送出的拦截器:
package org.cc.ws; import org.apache.cxf.interceptor.LoggingInInterceptor; import org.apache.cxf.interceptor.LoggingOutInterceptor; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; public class Server { public static void main(String[] args) { // 简单的发布 // 参数一是发布的地址,参数二是服务接口实现类的对象 //Endpoint.publish("http://localhost/discount", new DiscountServiceImpl()); JaxWsServerFactoryBean factory=new JaxWsServerFactoryBean(); factory.setAddress("http://localhost/discount"); // 一定要写实现类 不然可以看到启动是可以的 但是客户端一连接会有:Could not instantiate service class org.cc.ws.DiscountService because it is an interface. // 如果写错了发生错误改正还是有错误 那么需要重启下eclipse解决 factory.setServiceClass(DiscountServiceImpl.class); factory.getInInterceptors().add(new LoggingInInterceptor()); factory.getOutInterceptors().add(new LoggingOutInterceptor()); factory.create(); } }
项目结构(额..命名不太规范 但懒得改了..额):
好了 这是第一个运行的项目..接下去的学习会继续
相关推荐
CXF入门步骤 #### 2.1 创建项目 首先,我们需要一个Maven项目,确保`pom.xml`中包含了CXF的依赖: ```xml <groupId>org.apache.cxf <artifactId>cxf-rt-frontend-jaxws <version>3.3.3 <groupId>org....
1. WebService基础:了解Web服务的基本概念,包括WSDL(Web服务描述语言)、UDDI(统一描述、发现和集成)以及SOAP(简单对象访问协议)。 2. Spring框架:理解Spring的核心特性,如IOC(控制反转)和DI(依赖注入...
WebService CXF学习——入门篇 1.CXF由来 2.HelloWorld 3.WSDL描述 WebService CXF学习——进阶篇 1.SOAP讲解 2.JAX-WS讲解 3.对象传递 WebService CXF学习——高级篇(一)(二) 1.整合Spring框架 2.CXF...
CXF入门** 对于初学者,了解CXF的基本概念是至关重要的。CXF基于JAX-WS(Java API for XML Web Services)标准,提供了一套工具和服务,用于创建服务端和客户端的应用程序。CXF的核心组件包括: - **服务接口和...
第一天: 什么是webservice? 从案例(便民查询网站)分析如何实现? 使用socket实现。... CXF入门程序 Spring+cxf整合(重点) CXF发布rest的webservice。(重点) 综合案例: 实现便民查询网站
【CXF入门 -- 第一个简单webService】 Apache CXF 是一款强大的开源服务框架,它用于构建和开发服务,包括Web服务。本篇文章将带你入门CXF,通过创建一个简单的Web服务来理解其基本概念和工作流程。 1. **CXF简介*...
CXF入门教程(5)--webService异步调用模式文章配套代码,文中涉及的异步调用客户端的代码放在com.neareast.test.cxf.asyClient包下。原文地址:http://blog.csdn.net/neareast/article/details/7726503
【WebService CXF详解与入门】 WebService是一种允许不同系统之间进行通信和交互的标准协议,它基于HTTP协议,使得应用程序可以无视具体实现细节地调用互联网上的服务。这种技术使得分布式应用程序的发展成为可能,...
【标题】:“CXF入门(Hello World)” 【描述】:这篇文章主要介绍如何使用Apache CXF框架进行Web服务开发,通过一个简单的“Hello World”示例来帮助初学者理解CXF的基本用法。 Apache CXF是一个开源的Java框架...
【CXF WebService入门】 在互联网开发中,Web Service是一种常见的通信方式,它允许不同系统之间通过网络进行数据交换。Apache CXF 是一个流行的开源框架,用于创建和消费Web服务,尤其以其与Spring框架的高度集成而...
### 使用CXF发布和调用WebService之HelloWorld入门详解 #### 一、概述 本文将详细介绍如何使用Apache CXF框架来实现一个简单的WebService——HelloWorld示例。此示例不仅适用于初学者理解WebService的基本概念,...
【WebService的实现——CXF学习笔记】 在Java世界中,WebService是一种通过标准协议(如SOAP)进行跨平台、跨语言通信的技术。CXF是Apache软件基金会的一个开源项目,它提供了构建和消费Web服务的工具和库。CXF支持...
CXF入门教程(4) -- webService异步调用模式文章配套代码,文中涉及的异步调用客户端的代码放在com.neareast.test.cxf.asyClient包下。原文地址:http://blog.csdn.net/neareast/article/details/7726503
**WebService CXF 学习——入门篇** **一、WebService CXF 由来与目标** Apache CXF 是一个流行的开源框架,它源自 ObjectWeb Celtix 和 CodeHaus XFire 的合并,这两个项目分别由 IONA 公司和业界知名SOAP堆栈...
【CXF入门例子(安全认证)】 Apache CXF 是一个开源的 Java 框架,主要用于构建和开发服务导向架构(SOA)和 RESTful Web 服务。它提供了丰富的功能,包括SOAP、REST、WS-* 标准支持、数据绑定、JAX-RS 和 JAX-WS ...
通过深入学习Apache CXF,开发者可以充分利用其丰富的功能,轻松地创建和消费Web服务,同时享受到其良好的性能和广泛的社区支持。无论是对于初学者还是经验丰富的开发人员,CXF都是构建高质量、可维护的分布式应用...
**CXF入门实例详解** Apache CXF 是一个开源的Java框架,主要用于构建和开发Web服务。它提供了多种方式来创建和消费SOAP以及RESTful服务,是Java世界中广泛使用的Web服务实现工具。在这个"CXF HelloWorld"入门实例...
实战Web+Service+with+CXF webservice快速入门 webservice快速入门
这个"CXF入门简单实例(spring整合)"的压缩包文件提供了使用Spring框架与CXF集成的基础教程。让我们深入了解一下CXF和Spring的整合以及如何通过这个实例来创建一个简单的Web服务。 首先,CXF支持多种协议,如SOAP、...