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

【WebService】——入门实例

发布时间:2020-12-16 22:22:48 所属栏目:安全 来源:网络整理
导读:服务端 服务: 1、add(int a,int b) 2、minus(int a,int b) 具体如下: pre name="code" class="java"@WebServicepublic interface IMyService {//两数相加public int add(int a,int b);//两数相减public int minus(int a,int b);} 实现类 (注意:引用正确


服务端


服务:

1、add(int a,int b)

2、minus(int a,int b)


具体如下:

<pre name="code" class="java">@WebService
public interface IMyService {
	//两数相加
	public int add(int a,int b);
	//两数相减
	public int minus(int a,int b);
}

 
实现类 

(注意:引用正确的包)

@WebService(endpointInterface="com.zttc.service.IMyService")
public class MyServiceImpl implements IMyService {

	@Override
	public int add(int a,int b) {
		System.out.println(a+"+"+b+"="+(a+b));
		return a+b;
	}

	@Override
	public int minus(int a,int b) {
		System.out.println(a+"-"+b+"="+(a-b));
		return a-b;
	}
	
}


发布服务:

注意:要确保端口号未被占用,发布地址不能重复使用。

//发布地址
		String address="http://localhost:5555/service";
		//发布
		Endpoint.publish(address,new MyServiceImpl());
		
		System.out.println("Service Success!!!");



查看服务:

在浏览器地址栏输入?http://localhost:5555/service?wsdl(自定义的发布地址+"?wsdl"),查看服务。

之后我们需要用到其中的targetNamespace 和name

<definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://service.zttc.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://service.zttc.com/" name="MyServiceImplService">
<types>
<xsd:schema>
<xsd:import namespace="http://service.zttc.com/" schemaLocation="http://localhost:5555/service?xsd=1"/>
</xsd:schema>
</types>
<message name="add">
<part name="parameters" element="tns:add"/>
</message>
<message name="addResponse">
<part name="parameters" element="tns:addResponse"/>
</message>
<message name="minus">
<part name="parameters" element="tns:minus"/>
</message>
<message name="minusResponse">
<part name="parameters" element="tns:minusResponse"/>
</message>
<portType name="IMyService">
<operation name="add">
<input wsam:Action="http://service.zttc.com/IMyService/addRequest" message="tns:add"/>
<output wsam:Action="http://service.zttc.com/IMyService/addResponse" message="tns:addResponse"/>
</operation>
<operation name="minus">
<input wsam:Action="http://service.zttc.com/IMyService/minusRequest" message="tns:minus"/>
<output wsam:Action="http://service.zttc.com/IMyService/minusResponse" message="tns:minusResponse"/>
</operation>
</portType>
<binding name="MyServiceImplPortBinding" type="tns:IMyService">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="add">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="minus">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="MyServiceImplService">
<port name="MyServiceImplPort" binding="tns:MyServiceImplPortBinding">
<soap:address location="http://localhost:5555/service"/>
</port>
</service>
</definitions>


客户端

调用服务:


1)伪客户端调用

? ?这种调用方式中,调用和被调用者都在同一个java项目中,并不是真正意义上的调用。先在这里介绍下这种方式,其他的在第二种方法中介绍。

            try {
			//服务地址
			URL url=new URL("http://localhost:5555/service?wsdl");
			//使用targetNamespace和name
			QName sname=new QName("http://service.zttc.com/","MyServiceImplService");//命名空间,提供的名称
			Service service=Service.create(url,sname);
			//实现接口
			IMyService ms=service.getPort(IMyService.class);
			System.out.println("1+2="+ms.add(1,2));
		} catch (MalformedURLException e) {
		
			e.printStackTrace();
		}




2)远程调用——使用wsimport生成服务端


新建一个java project,使用命令wsimport

语法:wsimport -d ?本地存放路径 -keep -verbose wsdl地址



现在将操作之前发布好的服务



在本地目录中可以找到生成的文件,有java文件和class文件。


将wsimport生成的文件拷贝到新的project中,新建Test类,进行测试,代码与1)伪客户端调用类似,不再重复。这样,我们就模拟了远程调用模式。


小结:

?今天主要介绍了WebService的入门demo,下篇介绍wsdl的具体配置。

(编辑:李大同)

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

    推荐文章
      热点阅读