首页 > 代码库 > Java的Annotation标签

Java的Annotation标签

只需要简单的使用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标签