@WebParam表示方法的参数,
@WebResult表示方法的返回值,根据下面的案例,我们看一下,加或者不加这两个注解对发布的方法的影响
一:不加这两个注解
@WebService public class SayWeb { @WebMethod(operationName="sayHello") public String sayHello(String name,int i){ i++; return "hello"+name; } @WebMethod(operationName="bye") public void sayBye(boolean f){ System.out.println("bye"); } /** * main方法中发布 * */ public static void main(String[] args) { String address="http://localhost:9001/service/sayweb"; Endpoint.publish(address, new SayWeb()); System.out.println("发布成功"); } }
发布之后,查看wsdl文档中的schemLocation的地址:
如图,两个方法的参数都从arg0,开始,随着参数增多,name不断增加为arg1,arg2..........;返回值名字为return
二:加上注解
@WebService public class SayWeb { @WebMethod(operationName="sayHello") @WebResult(name="helloName") public String sayHello(@WebParam(name="oldName")String name,@WebParam(name="age")int i){ i++; return "hello"+name; } @WebMethod(operationName="bye") public void sayBye(@WebParam(name="flag")boolean f){ System.out.println("bye"); } /** * main方法中发布 * */ public static void main(String[] args) { String address="http://localhost:9001/service/sayweb"; Endpoint.publish(address, new SayWeb()); System.out.println("发布成功"); } }
如图,方法参数以及方法返回值跟注解保持一致
了解 @WebService @WebMethod
@Webservice
l @WebService注解,作用在具体类上。而不是接口。
l 一个类只有添加了此注解才可以通过Endpoint发布为一个web服务。
l 一个添加了此注解的类,必须要至少包含一个实例方法。静态方法和final方法不能被发布为服务方法。
WebService注解包含以下参数:
@WebMethod
l 此注解用在方法上,用于修改对外暴露的方法。
@WebResult用于定制返回值到WSDL的映射: