webService-WSDL文件的修改

本文介绍了如何通过在Java类上添加@WebService及相关注解来修改WSDL文件,避免暴露包结构,并详细说明了各个注解的作用,如@WebMethod、@WebResult和@WebParam。示例代码展示了如何定义服务名称、操作名称以及SOAP Action,强调了修改注解后客户端代码需重新生成的重要性。
l.
WSDL文件的内容,一般由服务默认生成,但为了更好的向开发人员提供使用说明书,一般应做一些简单的修改。至少不应该暴露我们的包结构。而targetNamespace默认情况下为倒置的包名,这已经暴露了我们的包结构。
l通过在类文件上添加以下注解,可以修改wsdl生成的各元素,而不是直接去修改wsdl文件直接去修改wsdl文件是无效的
WebService的注解包括:
@WebService-定义服务   --类上
@WebMethod-定义方法   - 方法
@WebResult-定义返回值– 返回值
@WebParam-定义参数– 参数 
package com.itcast;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.WebParam.Mode;
import javax.xml.ws.Endpoint;
/**
 * 一个加了很多注解的代码
 */
@WebService(name="myName",//对应portType name="myName"
portName="myPort",  //对应服务中的port name="myPort"
serviceName="myService",//对应service name="myService"
targetNamespace="http://leaf.com/mynamespace")//可以随意书写类似于java中的package
public class HelloWorld{
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@WebMethod(action="myAction",//定义一个soapAction="myAction"用于找到这个方法以执行
   operationName="myOperationName")//定义可以调用的方法,会生成相应类的具体方法,operation name=".."
public @WebResult(name="mySayHelloResult")String//定义返回值的名称
sayHello(){
return "HelloWorld";
}
@WebMethod(action="mySayHiAction",operationName="mySayHiOperationName")
public @WebResult(name="mySayHiResult")String sayHi(@WebParam(name="myParaName",
//将参数放到头信息中,用于保护参数,默认在body中
                                                      header=true,
  mode=Mode.IN)
String name){
String str = "你好:"+name+",当前时间是:"+sdf.format(new Date());
return str;
}

public static void main(String[] args) {
Endpoint.publish("http://127.0.0.1:6666/helloworld",new HelloWorld());
}
}



2.
通过WebService的注解,可以更加形像的描述Web服务。从而生成WSDL文档。
当修改了WebService注解之后,同时会影响客户端生成的代码。
调用的方法名和参数名也发生了变化。

即使是没有修改源代码,只修改了注解,客户端的代码也必须要重新生成(注意是生成而不是下载)。否则调用将会失败。
生成本地调用代码,依然使用wsimport工具
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值