怒得网友100000赞,webservice中常用注解——@WebParam @WebResult详细描述

@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的映射:

@WebParam用于定义WSDL中的参数映射:


 

想要实时关注更多干货好文,扫描下图关注:

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
非常抱歉,我的回答还是有误。在@WebParam注解的targetNamespace属性与@WebService注解的targetNamespace属性相同时,并不能保证参数的元素限定名被解释为qualified形式。正确的设置方式应该是在@WebService注解设置endpointInterface属性,然后在对应的SEI(Service Endpoint Interface)接口使用@WebParam注解设置element属性。 下面是一个更新后的示例代码: ``` @WebService(targetNamespace = "http://example.com/namespace", name = "MyWebService", endpointInterface = "my.package.MyWebServiceInterface") public class MyWebServiceImpl implements MyWebServiceInterface { @Override public void myMethod(@WebParam(name = "myParam", targetNamespace = "http://example.com/namespace", mode = WebParam.Mode.IN, partName = "myParamPart", header = false) String myParam) { // method implementation } } @WebService(targetNamespace = "http://example.com/namespace", name = "MyWebServiceInterface") public interface MyWebServiceInterface { @WebMethod void myMethod(@WebParam(name = "myParam", targetNamespace = "http://example.com/namespace", mode = WebParam.Mode.IN, partName = "myParamPart", header = false) String myParam); } ``` 在这个示例,@WebService注解的targetNamespace和name属性指定了Web服务的命名空间和名称,endpointInterface属性指定了SEI接口的类名。在SEI接口@WebParam注解的targetNamespace属性设置为与@WebService注解的targetNamespace属性相同,而element属性设置为true,表示参数是一个元素而不是一个类型,这样就可以将elementFormDefault属性设置为qualified。同时,@WebParam注解的partName属性设置了参数的部件名称,header属性设置为false,表示参数不是一个SOAP头部元素。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐 城

小朋友,你是不是有很多问号?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值