服务端



服务:

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的具体配置。

【WebService】——入门实例的更多相关文章

  1. WebService入门实例教程

    什么是WebService 通过使用WebService,您的应用程序可以向全世界发布信息,或提供某项功能,它是基于Web的服务,通过Web进行发布.查找和使用. WebService脚本平台需支持X ...

  2. Java WebService入门实例

    Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务. Web Service的关键技术和规则: 1.XML:描述 ...

  3. webservice入门实例,CXF方式

    1.下载CXF,及先关jar包. CXF 下载地址:http://cxf.apache.org/download.html,选择"File"列中的zip格式下载.解压后可以看到一些 ...

  4. RESTful WebService 入门实例

      /* 新建MavenProject,使用以下代码,创建类和POM文件.使用命令行切换到Project根目录,运行mvn package(或者,选中pom.xml 文件右键单击 > run a ...

  5. React 入门实例教程(转载)

    本人转载自: React 入门实例教程

  6. struts入门实例

    入门实例 1  .下载struts-2.3.16.3-all  .不摆了.看哈就会下载了. 2  . 解压  后 找到 apps 文件夹. 3.    打开后将 struts2-blank.war   ...

  7. Vue.js2.0从入门到放弃---入门实例

    最近,vue.js越来越火.在这样的大浪潮下,我也开始进入vue的学习行列中,在网上也搜了很多教程,按着教程来做,也总会出现这样那样的问题(坑啊,由于网上那些教程都是Vue.js 1.x版本的,现在用 ...

  8. webservice测试实例

    webservice测试实例(LR8.1) 接口声明:这个接口是sina的短信服务接口,我只是用来做脚本学习使用,不会对其产生压力:希望读者也只是用来进行录制学习,而不是产生压力. 接口文档:http ...

  9. wxPython中文教程入门实例

    这篇文章主要为大家分享下python编程中有关wxPython的中文教程,分享一些wxPython入门实例,有需要的朋友参考下     wxPython中文教程入门实例 wx.Window 是一个基类 ...

  10. RESTful WebService入门(转)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lavasoft.blog.51cto.com/62575/229206 REST ...

随机推荐

  1. [SHOI2015]脑洞治疗仪(恶心的线段树,区间最大子段和)

    题目描述: 曾经发明了自动刷题机的发明家 SHTSC 又公开了他的新发明:脑洞治疗仪--一种可以治疗他因为发明而日益增大的脑洞的神秘装置. 为了简单起见,我们将大脑视作一个 01 序列.11代表这个位 ...

  2. 如何用hexo搭建个人博客. 亲测有效

    搭建博客: 安装node.js和git 以管理员身份进入cmd. 输入:  npm install -g cnpm --registry=https://registry.npm.taobao.org ...

  3. Linux系统运维基础测试题

    1    Linux运维基础测试题(第一关) 通过这段时间学习Linux基础命令,为了检测自己对Linux基础命令掌握的情况,从网上整理13到测试题,并将其整理出来供大家参考学习. 1.1    习题 ...

  4. js 判断两个时间相差的天数

    judgeDay(sDate1, sDate2) { const sDate1 = `${new Date(sDate1).getFullYear()}-${new Date(sDate1).getM ...

  5. symfony 安装使用(一)

    Symfony安装教程网上已经存在很多了,但是这里还是要写一下: 1.symfony 安装有以下几种,对应不同的环境 1.1通过composer 命令安装 composer create-projec ...

  6. 响应式布局--设置rem自适应

    //designWidth:设计稿的实际宽度值,需要根据实际设置 //maxWidth:制作稿的最大宽度值,需要根据实际设置 //这段js的最后面有两个参数记得要设置,一个为设计稿实际宽度,一个为制作 ...

  7. Python学习笔记:第2天while循环 运算符 格式化输出 编码

    目录 1. while循环 continue.break和else语句 2. 格式化输出 3. 运算符 3.1 算数运算 3.2 比较运算符 3.3 赋值运算符 3.4 逻辑运算符 3.5 成员运算符 ...

  8. struts2学习

    struts2是一种基于mvc模式的轻量级web框架,它本质上相当于一个servlet,在mvc设计模式中,struts2作为控制器(Controller)来建立模型与视图的数据交互,struts2采 ...

  9. Leecode刷题之旅-C语言/python-26.删除数组中的重复项

    /* * @lc app=leetcode.cn id=26 lang=c * * [26] 删除排序数组中的重复项 * * https://leetcode-cn.com/problems/remo ...

  10. 45-Identity MVC:注册逻辑实现

    1-注册页Register.cshtml <h3>Register</h3> @model MvcCookieAuthSample.ViewModel.RegisterView ...