【WebService】wsdl配置详解以及使用注解修改wsdl配置

article/2025/9/23 7:18:36

欢迎关注我新搭建的博客:http://www.itcodai.com/

WebService系列文章:
【WebService】带你走进webservice的世界
【WebService】自定义WebService服务及其调用
【WebService】CXF处理javaBean等复合类型以及Map等复杂类型的数据
【WebService】CXF拦截器的设置以及自定义CXF拦截器

  前面分析了一下关于ws的基本知识,我们知道,wsdl是ws中很重要的文档,我们可以通过解析该wsdl文档获取ws的相关信息,其实,如果不了解该文档结构的话,问题也不大,只要会解析即可进行开发。但是如果想要生成一个符合自己项目的,或者比较人性化的一个wsdl的话,或者从可读性角度来说,就需要在编写ws代码时进行一些相应的配置了,比如说ws名称,参数等等,那么就需要对wsdl文档有一定的了解。这篇文章主要从两个角度来展开:一是解释一下wsdl中的相关配置,二是如何在ws程序中通过注解指定这些配置。

1. wsdl配置详解

要生成wsdl,首先得有一个ws,我们还是使用前面文章中提到的那个简单的ws,如下:

@WebService //默认静态方法是不能发不成ws服务的
public class MyWebService {public String sayHello(String name) {return name + " 你好!";}public static void main(String[] args) {String address = "http://192.168.10.1:6666/ws";Endpoint.publish(address, new MyWebService());System.out.println("访问WSDL的地址为:" + address + "?WSDL");}
}

  运行一下,即可开启ws服务,请求http://192.168.10.1:6666/ws?WSDL即可看到wsdl页面,接下来分析一下该wsdl文件中与上面程序中的对应关系,看下图(为了清晰的展示,图我就不缩小了):
这里写图片描述
  我们可以看到,生成的ws服务名称是在原来的类后面有加了个Service而已,服务类型名是在原来的类后面加了个Port,包括参数默认为arg0,返回值为return 等等,这些都能从wsdl文件中看的出来,通过这个wsdl生成的java代码中的类名自然也就是默认的了,如果我们想要修改这些默认的配置,则需要在编写ws的时候通过注解来设置一下。

2. 使用注解修改wsdl配置

我们修改一下上面的ws,使用注解来配置我们自己需要的名称,如下

/**  自定义ws服务, jdk1.6版本仅仅支持 soap1.1格式,jdk1.7及以上版本支持 soap1.2格式*  发布ws服务只需要@WebService注解即可, 如果想要更好的可维护性,则可以通过注解来实现* */
@WebService // 默认静态的方式是不能发布ws服务的
(name="MyWebService1",  // 服务实现类的名称serviceName="MyWebServiceService1",  // 默认在发布的服务实现者的名称后面添加ServiceportName="MyWebServicePort1",   // 服务类型的名称: 默认在 发布的服务实现者(MyWebService) 后面添加 porttargetNamespace="ws.client.test"    // 发布ws服务的命名空间,此空间默认为当前服务包路径的 "倒写"此名称也是 wsimport 命令生成 java类时默认的包路径 -p
)
public class MyWebService {@WebMethod(exclude=true)  // 默认public方法可以发布为ws服务, 如果要排除则配置  exclude=truepublic String sayHello(String name){System.out.println("name:" + name);return name + ",你好!";}//可以指定wsdl中的方法名,参数名和返回值@WebMethod(operationName="sayHello")public @WebResult(name="result") String sayHello2(@WebParam(name="name") String name,@WebParam(name="age") int age){System.out.println("name:" + name);return name + ",你好!,年龄为:" + age;}public static void main(String[] args) {// 一个端口可以发布多个ws服务String address="http://192.168.1.105/ws";// 创建一个服务端点, banding服务的实现类Endpoint.publish(address, new MyWebService());System.out.println("访问wsdl的地址为:" + address + "?WSDL");}
}

通过上面这些注解,我将ws服务相关的信息给重新配置了,运行一下,来对比注解看一下生成的wsdl:
这里写图片描述

这里写图片描述
  可以看出,生成的wsdl中的配置完全按照我们自己指定的来,这样通过解析该wsdl文件得到的java代码中的类以及方法也是按照自定义的来,这就能满足实际中具体的要求了。
  

文末福利:“程序员私房菜”,一个有温度的公众号~
程序员私房菜


—–乐于分享,共同进步!
—–我的博客主页:http://blog.csdn.net/eson_15


http://chatgpt.dhexx.cn/article/4MyrdY3T.shtml

相关文章

WSDL实例解析

WSDL的主要文档元素 WSDL文档可以分为两部分。顶部分由抽象定义组成,而底部分则由具体描述组成。抽象部分以独立于平台和语言的方式定义SOAP消息,它们并不包含任何随 机器或语言而变的元素。这就定义了一系列服务,截然不同的应用都可以实现。…

WSDL、详解

WebService中的WSDL详解 有人在WebService开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户(或后台)给你一个WSDL文件(或网址),说按照上面的进行适配, 这…

wsdl和wadl区别

1、Java开发WebService最重要的两个规范: JSR-224 (JAX-WS:Java API for XML-Based Web Services ) ,主要使用soap协议,使用wsdl来描述;JSR-311 (JAX-RS:The Java API for RESTful Web Services)&#xff…

WebService中的WSDL详细解析

WebService中的WSDL详解 有人在WebService开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户(或后台)给你一个WSDL文件(或网址),说按照上面的进行适配, 这…

WSDL详解

原文链接:WebService中的WSDL详解 有人在WebService开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户(或后台)给你一个WSDL文件(或网址),说按照上面的进…

WebService的WSDL详解以及远程访问WebService

一、WSDL详解 1.wsdl是一个用于精确描述Web服务的文档,是一个遵循wsdl-xml模式的xml文档。 2.一个wsdl文档通常包括8个重要元素,即definitions、types、import、message、portType、operation、binding、service元素。 3.这些元素嵌套在definitions元…

WebService中的WSDL详解

WebService中的WSDL详解 有人在WebService开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户(或后台)给你一个WSDL文件(或网址),说按照上面的进行适配, 这…

云计算与网格计算关系有别

导读:最近不断有人或询问云计算与网格计算的区别,或认为云计算是网格计算的延伸,甚至有学者写出比较的论文。事实上,云计算和网格计算本没有任何关系,但本文将澄清云计算和网格计算的区别,至于云计算和分布…

SOA、网格计算、云计算与P2P技术

1.面向服务的体系结构SOA 1)定义:Service-Oriented Architecture,一种应用的体系结构,其中所有的功能都定义为独立的具有可调用的接口的服务。这些服务可以在一个流程中被调用从而完成相应的商业处理过程。服务可以位于同一个应用…

简单理解串行计算、并行计算、分布式计算、网格计算与云计算

并行计算 并行计算可以划分成时间并行和空间并行。时间并行即流水线技术,空间并行使用多个处理器执行并发计算,当前研究的主要是空间的并行问题。 并行计算是相对于串行计算来说的。要理解并行计算,首先需要了解串行计算。串行计算是不将任…

网格计算和云计算之间的比较

转自:http://www.chinacloud.cn/show.aspx?id15020&cid14 随着网络技术的不断的发展和深入,网络信息越来越多,数据海量的进行挖挖取,而随之而来的就是新概念和新技术的诞生,目前有两种网络的计算方法最受人们关注…

云计算机基于什么网络吗,什么是云计算,什么是网格计算,他们之间有什么区别...

原标题:什么是云计算,什么是网格计算,他们之间有什么区别 随着网络技术的广泛应用和深化,网络信息与服务趋于海量,海量数据挖掘处理、分布异构等问题逐渐显现,随之新概念新技术也层出不穷,以云计…

高性能计算中的并行计算、分布式计算、网格计算和云计算之间的区别与联系

并行计算、分布式计算、网格计算与云计算都属于高性能计算(High Performance Computing,HPC)的范畴,主要目的在于对大数据的分析与处理,但它们却存在很多差异。电子海图云服务是基于高性能计算的理论技术、通过对传统服…

云计算、分布式计算和网格计算,主要有什么区别,基本概念是什么?

分布式计算 分布式计算是利用互联网上的计算机的中央处理器的闲置处理能力来解决大型计算问题的一种计算科学。研究如何把巨大的问题分成许多小的部分,然后把这些小任务分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。在两个或多…

并行计算、分布式计算、集群计算和网格计算的介绍,以及主要有哪些区别?

并行计算(Parallel Computing)      并行计算或称平行计算是相对于串行计算来说的。并行计算(Parallel Computing)是指同时使用多种计算资源解决计算问题的过程。为执行并行计算,计算资源应包括一台配有多处理机&a…

什么是云计算,什么是网格计算,两者之间有什么区别?

在此表述云计算和网格计算的区别,至于云计算和分布式计算、效用计算等等概念,读者可以以此类推。 狭义云计算是指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需的资源(硬件、平台、软件)。提供…

云计算、网格计算、效用计算、自主计算的区别辨析

云计算 什么是云? 云计算中的资源池称为“云”。”云”是一些可以自我维护和管理的虚拟资源,通常是一些大型服务器集群,包括计算服务器、存储服务器和宽带资源等。 为什么叫云? 因为云计算中的云在某些方面具有现实中云的特征&…

网格计算介绍

网格计算(Grid computing)是分布式计算的一种,是一门计算机科学。它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最…

网格计算简介

内容提要 主要介绍如下内容:1)什么是网格计算2) 网格计算能做什么3) 主要组成部分是什么4) 网格计算的标准5) 现在可以建设网格了吗6) IBM为网格计算提供什么工具7) 如何为我的应用提…

XSS基础

文章目录 一、XSS是什么?二、XSS漏洞原理1.XSS和SQL注入的区别2.反射型XSS3.存储型XSS4.DOM型XSS5.防范xss 一、XSS是什么? XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执…