加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

通过注解修改wsdl和service类调用服务

发布时间:2020-12-17 00:01:02 所属栏目:安全 来源:网络整理
导读:1,我们不能直接在wsdl中修改他的内容,比如我们想修改service的name属性,来改变生成的类名,是不可以直接在文档中修改的,需要在发布类上使用注解方式修改。 在类上加注解: 即可。 通过wsimport生成Java文件,可以发现生成的类变成了MyHelloWorld.java 2

1,我们不能直接在wsdl中修改他的内容,比如我们想修改service的name属性,来改变生成的类名,是不可以直接在文档中修改的,需要在发布类上使用注解方式修改。


在类上加注解:

即可。

通过wsimport生成Java文件,可以发现生成的类变成了MyHelloWorld.java


2,从wsdl中可以看到我们的包结构,即targetNamespace后面的数据,是倒置的包名,如果不希望暴露我们的包名,可以通过注解解决。



添加这个注解后,真实的包路径还是cn.ws,但是现实在wsdl页面中的就变成了我们修改后的名字:


生成Java类的时候的包路径也变成了com.wj。

?

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中元素的改变。


7,本地通过底层Service类来调用服务方法。

先生成Java文件。将生成的包粘贴到项目中。

因为之前用注解修改了类名和方法名,所以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);
		
	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读