一、概念

1、什么是webservice

Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。

2、wsdl

网络服务描述语言是一个用来描述Web服务和说明如何与Web服务通信的XML(标准通用标记语言的子集)语言。为用户提供详细的接口说明书。

3、soap

简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。

4、JAX-WS

一种 Java 规范,名为 JAX-WS(JSR-224),全称 Java API for XML-Based Web Services,可以将规范理解为官方定义的一系列接口。即一般所说的SOAP风格。

5、JAX-RS

为了让 WS 的开发与使用变得更加简单、更加轻量级,于是出现了另一种风格的 WS,名为 JAX-RS(JSR-339),全称 Java API for RESTful Web Services,同样也是一种规范,同样也有若干实现,cxf是其中比较著名的一种。

二、使用cxf发布soap风格的webservice服务

1、如何发布服务

直接看这篇:
文章讲的十分明白易懂,如果想快速上手,跳过文章的前两部分,直接看第三部分:
“3. 在 Web 容器中使用 Spring + CXF 发布 WS”

2、可能出现的问题

(1)优化实践
在“Web Service 那点事儿(2)—— 使用 CXF 开发 SOAP 服务 ”这篇文章中,接口只写加了最基本的注解,比如下面这样:
  1. @WebService
  2. public interface HelloService {
  3. String say(String name);
  4. }

这样虽然也能用,但是在实际使用中容易出现各种各样的奇怪问题,所以建议把接口名、命名空间、参数声明之类的都加上,比如下面这样:
  1. @WebService(targetNamespace="http://service.sky.com/",name="GoodDay",serviceName="GoodDay")
  2. public interface GoodDay {
  3. @WebMethod(action = "http://service.sky.com/SayHello")
  4. public String SayHello(@WebParam(name = "uname",targetNamespace="http://service.sky.com/")String uname);
  5. }

(2)javax.xml.bind.UnmarshalException: 意外的元素 (uri:"http://service.sky.com/", local:"uname")。所需元素为<{}uname>
出现原因是为参数设置了参数名,却没有设置命名空间。
比如,接口写成如下这样,就很容易出现这个错误。
  1. @WebService(targetNamespace="http://service.sky.com/",name="GoodDay",serviceName="GoodDay")
  2. public interface GoodDay {
  3. @WebMethod(action = "http://service.sky.com/SayHello")
  4. public String SayHello(@WebParam(name = "uname")String uname);
  5. }
解决方法是为参数加上命名空间,如下所示:
  1. @WebService(targetNamespace="http://service.sky.com/",name="GoodDay",serviceName="GoodDay")
  2. public interface GoodDay {
  3. @WebMethod(action = "http://service.sky.com/SayHello")
  4. public String SayHello(@WebParam(name = "uname",targetNamespace="http://service.sky.com/")String uname);
  5. }
当然这种写法很麻烦,如果有其他办法请大家不吝赐教。

使用CXF发布webservice服务及注意要点的更多相关文章

  1. CXF发布webService服务以及客户端调用

    这篇随笔内容是CXF发布webService服务以及客户端调用的方法 CXF是什么? 开发工作之前需要下载CXF和安装 下载地址:http://cxf.apache.org 安装过程: <1&g ...

  2. 使用CXF发布WebService服务简单实例

    一.说明: 前面介绍了使用axis2来发布Webservice服务,现在介绍一种更popular,更高效的Webservice服务发布技术:CXF Apache CXF = Celtix + XFir ...

  3. cxf发布 webservice服务

    导包 antlr-2.7.7.jar aopalliance-1.0.jar asm-3.3.jar commons-collections-3.2.1.jar commons-lang-2.6.ja ...

  4. 使用Cxf发布Webservice服务,如果待发布的接口中有重载方法,怎么处理??

    使用 @WebMethod(operationName="multiParamByName")  重新指定名字. http://bbs.csdn.net/topics/270059 ...

  5. Spring整合CXF之发布WebService服务

    今天我们来讲下如何用Spring来整合CXF,来发布WebService服务: 给下官方文档地址:http://cxf.apache.org/docs/writing-a-service-with-s ...

  6. JAVAEE——BOS物流项目07:WebService入门、apache CXF入门、基于CXF发布CRM服务

    1 学习计划 1.WebService入门 n 什么是WebService n 调用网络上的WebService服务 n SOAP和WSDL概念 n 基于JDK1.7发布一个简单的WebService ...

  7. 使用CXF框架,发布webservice服务,并使用客户端远程访问webservice

    使用CXF框架,发布webservice服务,并使用客户端远程访问webservice  1. CXF介绍 :soa的框架    * cxf 是 Celtrix (ESB框架)和 XFire(webs ...

  8. [置顶] 利用CXF发布webService的小demo

    其实webService的发布不仅仅只有xfire,今天,给大家介绍一下用CXF发布一个webService的小demo,CXF也是我做webService用的第一个框架... 先将相关的jar引进来 ...

  9. 【转】构建基于CXF的WebService服务

    构建基于CXF的WebService服务 Apache CXF = Celtix+ XFire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF.C ...

随机推荐

  1. spring源码系列8:AOP源码解析之代理的创建

    回顾 首先回顾: JDK动态代理与CGLIB动态代理 Spring中的InstantiationAwareBeanPostProcessor和BeanPostProcessor的区别 我们得知 JDK ...

  2. 020 - FreeRTOS学习路线总结

    零.为什么写? 在H7-tools预售群里,有位朋友提出如何学习FreeRTOS这类的问题,便由此总结下自己的学习路线.最近又打算接触RTT,和FreeRTOS做个对比. 文章分两步来讲,学习路线和学 ...

  3. day1-02 python程序语法分析

    一.概述 程序的格式框架 命名与保留字 数据类型 语句与函数 Python程序的输入输出 二.程序的格式框架 # TempConvert.py # 输入温度 TempStr = input(" ...

  4. unity射线检测

    unity中射线检测时非常实用也经常实用的一种手段.下面讲解一下射线检测问题. 1)Ray 根据射线端点和射线的方向定义一条射线 Ray ray= new Ray(transform.position ...

  5. AS报错:lambda expressions are not supported at this language level

    AS报错:lambda expressions are not supported at this language level 解决方法 打开打开 File --> Project Stuct ...

  6. 【Auto.js images.matchTemplate() 函数的特点】

    Auto.js  images.matchTemplate() 函数的特点 官方文档:https://hyb1996.github.io/AutoJs-Docs/#/images?id=imagesm ...

  7. 练习Markdown基本语法

    这是一级标题 二级标题 三级标题 我就说一点(数字+英文句点.) 第二 在行首增加*或-,就会有下面的效果 嘿 嘿 嘿 这一部分是插入图片和引用 插入图片 用感叹号+[]+括号 直接复制粘贴~ 引用 ...

  8. 还不会用FindBugs?你的代码质量很可能令人堪忧

    前言 项目中代码质量,往往需要比较有经验的程序员的审查来保证.但是随着项目越来越大,代码审查会变得越来越复杂,需要耗费越来越多的人力.而且程序员的经验和精力都是有限的,能审查出问题必定有限.而在对代码 ...

  9. CVE-2019-16097:Harbor任意管理员注册漏洞复现

    0x00 Harbor简介 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源Docker Distri ...

  10. 学习笔记_58 python语法基础

    1.python是解析型语言. 有点像javaScript在html运行一样,不需要mian函数入口,随时随地定义函数,执行函数, 执行语句,定义类型 2.python能面向对象 3.python使用 ...