博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转载]【WebService】wsdl配置详解以及使用注解修改wsdl配置
阅读量:5272 次
发布时间:2019-06-14

本文共 2341 字,大约阅读时间需要 7 分钟。

本文转自 http://blog.csdn.net/eson_15/article/details/52051801

  我们知道,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服务,请求即可看到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",  // 默认在发布的服务实现者的名称后面添加Service        portName="MyWebServicePort1",   // 服务类型的名称: 默认在 发布的服务实现者(MyWebService) 后面添加 port        targetNamespace="ws.client.test"    // 发布ws服务的命名空间,此空间默认为当前服务包路径的 "倒写"此名称也是 wsimport 命令生成 java类时默认的包路径 -p)public class MyWebService {    @WebMethod(exclude=true)  // 默认public方法可以发布为ws服务, 如果要排除则配置  exclude=true    public 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代码中的类以及方法也是按照自定义的来,这就能满足实际中具体的要求了。 

 

转载于:https://www.cnblogs.com/liyumin200603/p/6207172.html

你可能感兴趣的文章
string与stringbuilder的区别
查看>>
2012-01-12 16:01 hibernate注解以及简单实例
查看>>
iOS8统一的系统提示控件——UIAlertController
查看>>
PAT甲级——1101 Quick Sort (快速排序)
查看>>
python创建进程的两种方式
查看>>
1.2 基础知识——关于猪皮(GP,Generic Practice)
查看>>
迭代器Iterator
查看>>
java易错题----静态方法的调用
查看>>
php建立MySQL数据表
查看>>
最简单的线程同步的例子
查看>>
JSP、Servlet乱码终极解决方案
查看>>
旅途上看的电影和观后感
查看>>
qt实现类似QQ伸缩窗口--鼠标事件应用
查看>>
Ztree异步树加载
查看>>
复杂问题的简单抽象:魔兽世界中的兔子们
查看>>
UVA 10529-Dumb Bones(概率dp)
查看>>
关于IE和火狐,谷歌,Safari对Html标签Object和Embed的支持问题
查看>>
MyEclipse DB Browser使用图文全攻略
查看>>
poj3320 Jessica's Reading Problem(尺取思路+STL)
查看>>
A - Vasya and Socks
查看>>