只需要简单的使用Java的Annotation标签即可将标准的Java方法发布成Web Service,但不是所有的Java类都可以发布成Web Service。Java类若要成为一个实现了Web Service的bean,它需要遵循下边这些原则:

  • 这个类必须是public类

  • 这些类不能是final的或者abstract

  • 这个类必须有一个公共的默认构造函数

  • 这个类绝对不能有finalize()方法

    Annotation 1@WebService(name="Example", targetNamespace="http://www.jsoso.com/wstest", serviceName="Example")
    @WebService标签主要将类暴露为WebService,其中targetNamespace属性定义了自己的命名空间,serviceName则定义了< definitions >标签和<service>标签的name属性。

    Annotation 2:@SOAPBinding(style=SOAPBinding.Style.RPC)
    @SOAPBinding标签定义了WSDL文档中SOAP的消息协议,其中style属性对应SOAP的文档类型,可选的有RPC和DOCUMENT

    Annotation 3:@WebMethod(operationName="toSayHello",action="sayHello",exclude=false)
    @WebMethod定义Web Service运作的方法,
    属性action 对应操作的活动 ,如<soap:operation soapAction="sayHello" />
    属性operationName匹配的wsdl:operation 的名称,如<operation name="toSayHello" parameterOrder="userName">
    属性exclude 用于阻止将某一继承方法公开为web服务,默认为false

    Annotation 4:@WebResult(name="returnWord")
    @ WebResult定义方法返回值得名称,如<part name="returnWord" type="xsd:string" />

    Annotation 5:@WebParam(partName="person", mode=Mode.IN
    @WebParam定义方法的参数名称,如<part name="person" type="tns:person" />,其中mode属性表示参数的流向,可选值有IN / OUT / INOUT

  • package org.jsoso.jws.server;  
      
    import java.util.ArrayList;  
    import javax.jws.WebMethod;  
    import javax.jws.WebParam;  
    import javax.jws.WebResult;  
    import javax.jws.WebService;  
    import javax.jws.WebParam.Mode;  
    import javax.jws.soap.SOAPBinding;  
    /  
     * 提供WebService服务的类  
     */  
    @WebService(name="Example", targetNamespace="http://www.jsoso.com/wstest", serviceName="Example")  
    @SOAPBinding(style=SOAPBinding.Style.RPC)  
    public class Example {  
        private ArrayList<Person> persons = new ArrayList<Person>();;  
        /** 
         *  
         * 返回一个字符串 
         * @param userName 
         * @return 
         */  
        @WebMethod(operationName="toSayHello",action="sayHello",exclude=false)  
        @WebResult(name="returnWord")//自定义该方法返回值在WSDL中相关的描述  
        public String sayHello(@WebParam(name="userName")String userName) {  
            return "Hello:" + userName;  
        }  
      
        /** 
         * web services 方法的返回值与参数的类型不能为接口 
         * @param person 
         * @return 
         * @throws HelloException 
         */  
        @WebMethod(operationName="sayHello", action="sayHello")  
        @WebResult(partName="personList")  
        public Person[] sayHello(@WebParam(partName="person", mode=Mode.IN)Person person,   
                String userName) throws HelloException {  
            if (person == null || person.getName() == null) {  
                throw new HelloException("说hello出错,对像为空。。");  
            }  
            System.out.println(person.getName() + " 对 " + userName + " 说:Hello,我今年" + person.getAge() + "岁");  
            persons.add(person);  
            return persons.toArray(new Person[0]);  
        }  
    }

Java的Annotation标签的更多相关文章

  1. XML注释与Description标签及Java:注解(Annotation)的关系

    NET中的规范标准注释(一) -- XML注释标签讲解 一.摘要 .Net允许开发人员在源代码中插入XML注释,这在多人协作开发的时候显得特别有用. C#解析器可以把代码文件中的这些XML标记提取出来 ...

  2. 秒懂,Java 注解 (Annotation)你可以这样学 - CSDN博客

    https://blog.csdn.net/briblue/article/details/73824058 文章开头先引入一处图片. 这处图片引自老罗的博客.为了避免不必要的麻烦,首先声明我个人比较 ...

  3. Java注解Annotation的用法 - 自定义Annotation实现

    Java注解又称Java标注,是Java语言5.0版本开始支持加入源代码的特殊语法元数据. Java语言中的类.方法.变量.参数和包等都可以被标注.和Javadoc不同,Java标注可以通过反射获取标 ...

  4. 深入JAVA注解-Annotation(学习过程)

    JAVA注解-Annotation学习 本文目的:项目开发过程中遇到自定义注解,想要弄清楚其原理,但是自己的基础知识不足以支撑自己去探索此问题,所以先记录问题,然后补充基础知识,然后解决其问题.记录此 ...

  5. 深入学习JAVA注解-Annotation(学习过程)

    JAVA注解-Annotation学习 本文目的:项目开发过程中遇到自定义注解,想要弄清楚其原理,但是自己的基础知识不足以支撑自己去探索此问题,所以先记录问题,然后补充基础知识,然后解决其问题.记录此 ...

  6. Java Basic - Annotation

    使用注解最主要的部分在于对注解的处理,那么就会涉及到注解处理器.      从原理上讲,注解处理器就是通过反射机制获取被检查方法上的注解信息,然后根据注解元素的值进行特定的处理.   注解处理器类库( ...

  7. java注解(Annotation)解析

    注解(Annotation)在java中应用非常广泛.它既能帮助我们在编码中减少错误,(比如最常见的Override注解),还可以帮助我们减少各种xml文件的配置,比如定义AOP切面用@AspectJ ...

  8. java自定义Annotation(载自百度文库)

    java中自定义annotation需要@interface关键字和用到几个内置annotation. 用到的注解有@Target,@Retention,@Documented,@Inherited  ...

  9. Java注解Annotation学习

    学习注解Annotation的原理,这篇讲的不错:http://blog.csdn.net/lylwo317/article/details/52163304 先自定义一个运行时注解 @Target( ...

随机推荐

  1. hdu-6438-贪心

    Buy and Resell Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  2. 在ASP.NET MVC 框架中调用 html文件及解析get请求中的参数值

    在ASP.NET MVC 框架中调用 html文件: public ActionResult Index() { using (StreamReader sr = new StreamReader(P ...

  3. InnoDB存储引擎介绍-(1)InnoDB存储引擎结构

    首先以一张图简单展示 InnoDB 的存储引擎的体系架构. 从图中可见, InnoDB 存储引擎有多个内存块,这些内存块组成了一个大的内存池,主要负责如下工作: 维护所有进程/线程需要访问的多个内部数 ...

  4. 【转】借助System.Linq.Dynamic, IQueryable根据排序字符串排序

    在使用Entity Framework时,若有多个排序,需要OrderBy (OrderByDescending)再ThenBy (ThenByDescending) 假设需要根据Name升序排序,再 ...

  5. SPA单页面应用

    什么是单页应用 单页Web应用,就是只有一张Web页面的应用.浏览器一开始会加载必需的HTML.CSS和JavaScript,之后所有的操作都在这张页面完成,这一切都由JavaScript来控制.因此 ...

  6. 【HTTP】boundary 中一个 = 导致HTTP上传文件失败

    (1)#define ABOUNDARY "----=_Resume_002_0CE7_01D1C649.298A8070" (2)#define ABOUNDARY " ...

  7. 重绘(Repaint)和回流(Reflow)

    重绘(Repaint)和回流(Reflow) 1.回流和重绘只是渲染步骤的一小节,是怎么做到影响性能的? css 会影响 javascrip 执行时间导致 javascript 脚本变慢 浏览器渲染一 ...

  8. 尚学堂java 答案解析 第五章

    本答案为本人个人编辑,仅供参考,如果读者发现,请私信本人或在下方评论,提醒本人修改 一.选择题 1.AB 解析:A可以被所有类访问,B可以被当前包的所有类访问,也可以被所有子类访问 2.A 解析:所有 ...

  9. xml的方式配置AOP:Aspect Oriented Programming

    在某些类中, 什么时机, 做什么事情 切入点(point-cut): 在某些类中(Class<?>[] itfc = new Class<?>[] { IStudentServ ...

  10. day31-python阶段性复习五

    打印目录下所有文件 os 模块 os.listdir(‘/home’) 列出目录下所有文件 os.path.isdir(‘/home’) 判断一个文件是不是一个目录 os.path.isfile(‘/ ...