`

webservice学习1.CXF入门

 
阅读更多

版本: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 运行就是一个服务器了

运行内容:

写道
2013-5-8 23:54:49 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
信息: 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));
	}

}

 

运行一下:

写道
2013-5-8 23:54:55 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
信息: 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();
  }
}

 

 

 

项目结构(额..命名不太规范 但懒得改了..额):


 


 好了 这是第一个运行的项目..接下去的学习会继续

  • 大小: 19.9 KB
  • 大小: 68.3 KB
0
2
分享到:
评论

相关推荐

    WebService (一) CXF 入门 HelloWorld

    CXF入门步骤 #### 2.1 创建项目 首先,我们需要一个Maven项目,确保`pom.xml`中包含了CXF的依赖: ```xml &lt;groupId&gt;org.apache.cxf &lt;artifactId&gt;cxf-rt-frontend-jaxws &lt;version&gt;3.3.3 &lt;groupId&gt;org....

    Webservice入门教程_用CXF编写基于Spring的WebService示例代码.zip

    1. WebService基础:了解Web服务的基本概念,包括WSDL(Web服务描述语言)、UDDI(统一描述、发现和集成)以及SOAP(简单对象访问协议)。 2. Spring框架:理解Spring的核心特性,如IOC(控制反转)和DI(依赖注入...

    WebService CXF学习文档

    WebService CXF学习——入门篇 1.CXF由来 2.HelloWorld 3.WSDL描述 WebService CXF学习——进阶篇 1.SOAP讲解 2.JAX-WS讲解 3.对象传递 WebService CXF学习——高级篇(一)(二) 1.整合Spring框架 2.CXF...

    CXF 一个完整的webService(整合客户端和服务端)

    CXF入门** 对于初学者,了解CXF的基本概念是至关重要的。CXF基于JAX-WS(Java API for XML Web Services)标准,提供了一套工具和服务,用于创建服务端和客户端的应用程序。CXF的核心组件包括: - **服务接口和...

    Webservice笔记含使用cxf和jaxws两种方式开发webservice【源代码+笔记】

    第一天: 什么是webservice? 从案例(便民查询网站)分析如何实现? 使用socket实现。... CXF入门程序 Spring+cxf整合(重点) CXF发布rest的webservice。(重点) 综合案例: 实现便民查询网站

    CXF入门 -- 第一个简单webService

    【CXF入门 -- 第一个简单webService】 Apache CXF 是一款强大的开源服务框架,它用于构建和开发服务,包括Web服务。本篇文章将带你入门CXF,通过创建一个简单的Web服务来理解其基本概念和工作流程。 1. **CXF简介*...

    CXF入门 webService异步调用模式

    CXF入门教程(5)--webService异步调用模式文章配套代码,文中涉及的异步调用客户端的代码放在com.neareast.test.cxf.asyClient包下。原文地址:http://blog.csdn.net/neareast/article/details/7726503

    WebService_CXF范例.

    【WebService CXF详解与入门】 WebService是一种允许不同系统之间进行通信和交互的标准协议,它基于HTTP协议,使得应用程序可以无视具体实现细节地调用互联网上的服务。这种技术使得分布式应用程序的发展成为可能,...

    cxf 入门(hello world)

    【标题】:“CXF入门(Hello World)” 【描述】:这篇文章主要介绍如何使用Apache CXF框架进行Web服务开发,通过一个简单的“Hello World”示例来帮助初学者理解CXF的基本用法。 Apache CXF是一个开源的Java框架...

    学习CXF WebService入门实例一.pdf

    【CXF WebService入门】 在互联网开发中,Web Service是一种常见的通信方式,它允许不同系统之间通过网络进行数据交换。Apache CXF 是一个流行的开源框架,用于创建和消费Web服务,尤其以其与Spring框架的高度集成而...

    使用CXF发布和调用webservice之HelloWorld入门

    ### 使用CXF发布和调用WebService之HelloWorld入门详解 #### 一、概述 本文将详细介绍如何使用Apache CXF框架来实现一个简单的WebService——HelloWorld示例。此示例不仅适用于初学者理解WebService的基本概念,...

    WebService的实现——CXF学习笔记

    【WebService的实现——CXF学习笔记】 在Java世界中,WebService是一种通过标准协议(如SOAP)进行跨平台、跨语言通信的技术。CXF是Apache软件基金会的一个开源项目,它提供了构建和消费Web服务的工具和库。CXF支持...

    CXF入门教程(4) -- webService异步调用模式

    CXF入门教程(4) -- webService异步调用模式文章配套代码,文中涉及的异步调用客户端的代码放在com.neareast.test.cxf.asyClient包下。原文地址:http://blog.csdn.net/neareast/article/details/7726503

    WebService CXF学习-入门篇.pdf

    **WebService CXF 学习——入门篇** **一、WebService CXF 由来与目标** Apache CXF 是一个流行的开源框架,它源自 ObjectWeb Celtix 和 CodeHaus XFire 的合并,这两个项目分别由 IONA 公司和业界知名SOAP堆栈...

    cxf入门例子(安全认证)

    【CXF入门例子(安全认证)】 Apache CXF 是一个开源的 Java 框架,主要用于构建和开发服务导向架构(SOA)和 RESTful Web 服务。它提供了丰富的功能,包括SOAP、REST、WS-* 标准支持、数据绑定、JAX-RS 和 JAX-WS ...

    WebService-CXF学习.doc

    通过深入学习Apache CXF,开发者可以充分利用其丰富的功能,轻松地创建和消费Web服务,同时享受到其良好的性能和广泛的社区支持。无论是对于初学者还是经验丰富的开发人员,CXF都是构建高质量、可维护的分布式应用...

    CXF的入门实例

    **CXF入门实例详解** Apache CXF 是一个开源的Java框架,主要用于构建和开发Web服务。它提供了多种方式来创建和消费SOAP以及RESTful服务,是Java世界中广泛使用的Web服务实现工具。在这个"CXF HelloWorld"入门实例...

    实战Web+Service+with+CXF webservice快速入门

    实战Web+Service+with+CXF webservice快速入门 webservice快速入门

    CXF入门简单实例(spring整合)

    这个"CXF入门简单实例(spring整合)"的压缩包文件提供了使用Spring框架与CXF集成的基础教程。让我们深入了解一下CXF和Spring的整合以及如何通过这个实例来创建一个简单的Web服务。 首先,CXF支持多种协议,如SOAP、...

Global site tag (gtag.js) - Google Analytics