1,我们不能直接在wsdl中修改他的内容,比如我们想修改service的name属性,来改变生成的类名,是不可以直接在文档中修改的,需要在发布类上使用注解方式修改。
在类上加注解:
即可。
通过wsimport生成Java文件,可以发现生成的类变成了MyHelloWorld.java
2,从wsdl中可以看到我们的包结构,即targetNamespace后面的数据,是倒置的包名,如果不希望暴露我们的包名,可以通过注解解决。
添加这个注解后,真实的包路径还是cn.ws,但是现实在wsdl页面中的就变成了我们修改后的名字:
3,发布服务的时候,不发布其中的一个方法,通过 @WebMethod(exclude=”true”)搞定。
那么发布之后将会不包含这个方法。
4,如果想将发布的一个方法在发布后显示另外一个名字,通过注解:@WebMethod(operationName=”sayHello”),将sayHi方法改成sayHello。
发布后,在wsdl页面看到的sayHi方法的名字为sayHello。
5,发布后的参数名是arg0,可以通过注解修改。在方法的参数前添加注解@WebParam(name=”YourName”)即可。
Arg0就变成了yourname。
6,想改变发布后的返回值的名字,返回值默认是return,可以在返回值上添加注解。
@WebResult(name=”backParam”)
在MyEclipse的SOAPWeb Service中也可以看到返回的xml中元素的改变。
因为之前用注解修改了类名和方法名,所以new的时候要new MyHelloWorld,调用方法的时候要调用sayHello而不是sayHi。
新建一个java工程,将之前工程中的接口复制到这个项目中。
QName:完全限定名。
import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; /** * 调用远程代码的实现是Service类实现的。 * 内部包装了Socket * @author Administrator */ public class Demo { public static void main(String[] args) throws Exception { String uri = "http://wj.com"; URL url = new URL("http://192.168.1.254:2345/hello?wsdl"); //包名+类名 QName qname = new QName(uri,"MyHelloWorld"); Service service = Service.create(url,qname);//new MyHelloWorld(); //获取 //new MyHelloWorld().getHelloWorldPort(); HelloWorld hw = service.getPort(new QName(uri,"HelloWorldPort"),HelloWorld.class); String ss = hw.sayHello("王健同学"); System.err.println("ss"+ss); System.err.println("----------------"); Object obj = service.getPort(new QName(uri,null); System.err.println(">>:"+obj); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。