WebService入门一、Hello WebService
2019独角兽企业重金招聘Python工程师标准>>>
准备工作
![](http://static.oschina.net/uploads/img/201508/09233543_g6Ir.jpg)
- bin目录下是两个自动生成一些文件的工具,分别是wsgen.bat(对应linux环境的wsgen.sh)和wsimport.bat(对应linux环境的wsimport.sh)。wsgen命令主要用于Server端通过Java类编译成WebService及相关的wsdl文件;wsimport则主要用于Client端(即调用端)通过wsdl文件编译出调用Server端的Java文件。
- doc目录下是JAX-WS的发布文档。包括一些发布日志和用户手册,还有wsgen和wsimport工具的使用法及一些常见问题等等。
- lib目录下包含Java工程所需的所有Jar包,在后面开发时需要将这些jar包导入到工程中。
- samples目录下包含一些WebService的示例。
服务端的Hello WebService
![](http://static.oschina.net/uploads/img/201508/09233543_EVMo.jpg)
![](http://static.oschina.net/uploads/img/201508/09233543_AWbd.jpg)
![](http://static.oschina.net/uploads/img/201508/09233543_HdMI.jpg)
![](http://static.oschina.net/uploads/img/201508/09233543_3BaS.jpg)
package com.ws;import javax.jws.WebMethod;
import javax.jws.WebService;/*** WebService入门学习* WebService注解是告诉JAXWS,这是一个WebService类* * @author 14040875**/
@WebService
public class Hello {/*** 向接收的名字问好* WebMethod注解告诉JAXWS,此方法为soap方法* * @param name* @return*/@WebMethodpublic String say(String name){return "Hello, " + name;}}
至此,关于WebService所需要的类就编写完成了。接下来我们需要做一些配置和生成的工作。
![](http://static.oschina.net/uploads/img/201508/09233543_nI4b.jpg)
生成JAXWS相关文件
![](http://static.oschina.net/uploads/img/201508/09233543_kUCI.jpg)
![](http://static.oschina.net/uploads/img/201508/09233543_8obW.jpg)
![](http://static.oschina.net/uploads/img/201508/09233543_EydT.jpg)
wsgen -cp D:\dev\apache-tomcat-7.0.53\webapps\HelloWebService\WEB-INF\classes com.ws.Hello -wsdl -s wssrc -d build -r wsdl
- -wsdl 表示生成的是webservice
- -s 指出生成的.java文件放置位置
- -d 用于提示要生成的编译class文件在何处
- -r 表示生成.wsdl和xsd文件放于何处
- -cp 代表classpath,也就是Hello.class的位置
![](http://static.oschina.net/uploads/img/201508/09233543_G8Wi.jpg)
![](http://static.oschina.net/uploads/img/201508/09233544_6dZU.jpg)
![](http://static.oschina.net/uploads/img/201508/09233544_U2o1.jpg)
HelloService.wsdl
![](http://static.oschina.net/uploads/img/201508/09233544_9BAr.jpg)
<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime'version='2.0'><endpoint name='Hello' implementation='com.ws.Hello'url-pattern='/HelloService' />
</endpoints>
<?xml version="1.0" encoding="UTF-8"?>
<web-app><servlet><span style="white-space:pre"> </span><servlet-name>Hello</servlet-name><span style="white-space:pre"> </span><servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class><span style="white-space:pre"> </span><load-on-startup>2</load-on-startup></servlet><servlet-mapping><span style="white-space:pre"> </span><servlet-name>Hello</servlet-name><span style="white-space:pre"> </span><url-pattern>/HelloService</url-pattern></servlet-mapping>
</web-app>
再次发布工程,在浏览器地址栏输入路径 http://127.0.0.1:8080/HelloWebService/HelloService?wsdl,就可以看到如下结果:
![](http://static.oschina.net/uploads/img/201508/09233544_tSzR.jpg)
使用WebService接口
WebService接口有同步调用和异步调用来年高中方式,同步调用即为请求发出后,直到得到结果才继续执行后面的任务;异步调用则为,请求发出后,不等待返回结果,继续处理其它任务。一旦请求返回结果,再通知请求发送方。
![](http://static.oschina.net/uploads/img/201508/09233544_D9SJ.jpg)
wsimport -keep -d bin -s src wsdl/HelloService.wsdl
![](http://static.oschina.net/uploads/img/201508/09233544_HBs4.jpg)
package com.ws;public class HelloClient {public static void main(String[] args) {HelloService service = new HelloService();Hello port = service.getHelloPort();System.out.println(port.say("Mike"));}}
![](http://static.oschina.net/uploads/img/201508/09233544_Phe2.jpg)
异步调用WebService
<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" wsdlLocation="wsdl/HelloService.wsdl"xmlns="http://java.sun.com/xml/ns/jaxws"><bindings node="wsdl:definitions"><enableAsyncMapping>true</enableAsyncMapping></bindings>
</bindings>
同时生产Java类的命令也与同步的生成类的命令不同:
wsimport -keep –b binding.xml -d bin -s src wsdl/HelloService.wsdl
同样,将HelloService类中的两处路径修改为 http://127.0.0.1:8080/HelloWebService/HelloService?wsdl。
package com.ws;import javax.xml.ws.Response;public class HelloClient {public static void main(String[] args) throws Exception {HelloService service = new HelloService();Hello port = service.getHelloPort();Response<SayResponse> sayAsync = port.sayAsync("Mike");while (!sayAsync.isDone()) {System.out.println("waiting...");}try {SayResponse callNameResponse = sayAsync.get();String message = callNameResponse.getReturn();System.out.println(message);} catch (Exception ex) {}}
}
运行程序,得到如下结果:
![](http://static.oschina.net/uploads/img/201508/09233545_l8LX.jpg)
package com.ws;
import javax.xml.ws.AsyncHandler;
import javax.xml.ws.Response;
public class HelloClient {public static void main(String[] args) throws Exception {HelloService service = new HelloService();Hello port = service.getHelloPort();port.sayAsync("Mike", new AsyncHandler<SayResponse>() {public void handleResponse(Response<SayResponse> res) {try {SayResponse response = null;response = res.get();String message = response.getReturn();System.out.println(message);} catch (Exception e) {e.printStackTrace();}System.out.println("Callback!");}});System.out.println("begin waiting...");Thread.sleep(1000);}
}
运行程序,得到如下结果:
![](http://static.oschina.net/uploads/img/201508/09233545_YDJI.jpg)
版权声明:本文为博主原创文章,未经博主允许不得转载。
转载于:https://my.oschina.net/treenewbee/blog/489952
WebService入门一、Hello WebService相关推荐
- Webservice入门教程_教程目录以及地址
场景 项目专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37726 实现 1.WebService入门简介教程 https://b ...
- Webservice入门教程_用Eclipse的TCP_IP工具监听请求实现端口转接
场景 项目专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37726 Webservice入门教程_用JDK开发Webservice ...
- WebService入门Demo
以前写博客最主要的就是不知道写什么东西,现在感觉能写点东西,就是感觉博客随笔的标题挺难取的,最近工作中刚好用到了WebService,刚好可以写一篇博客.去年工作的时候自己也用到过,只是知道调用一些W ...
- axis2 webservice入门学识(JS,Java,PHP调用实例源码)
来源:http://www.myexception.cn/web/952419.html axis2 webservice入门知识(JS,Java,PHP调用实例源码) 背景简介 最近接触到一个银行接 ...
- WebService入门学习一
参考:https://blog.csdn.net/c99463904/article/details/76018436 1.WebService简介? Web Service技术, 能使得运行在不同机 ...
- WebService入门讲解
一.序言 当前的应用程序开发逐步的呈现了两种迥然不同的倾向:一种是基于浏览器的瘦客户端应用程序,一种是基于浏览器的富客户端应用程序(RIA),当然后一种技术相对来说更加的时髦一些(如现在很流行的Htm ...
- Java程序员从笨鸟到菜鸟之(一百零八)一步一步学习webservice(二)webservice基本原理
本来这第二篇打算讲解"开发第一个基于XFire的webservice"的内容来着.但是想想.开发实例只是局限于了会用的层面上.如果想真正的理解webservice还是需要挖掘其原理 ...
- WEBSERVICE之JDK开发webservice
转自:https://www.cnblogs.com/w-essay/p/7357262.html 一.开发工具与环境 1. jdk1.6版本以上(jdk1.6.0_21及以上版本) 2 .eclip ...
- 【webservice】spring整合webservice RS风格
[webservice]spring整合webservice RS风格 UserService package cn.zxl.cxf.service;import java.util.List;imp ...
最新文章
- linux apache2.4 php,php5.6+apache2.4+linux如何搭建php环境
- cookie和session的理解
- 如何为javascript代码编写注释以支持智能感知
- 从Setting.settings到Resource.resx
- 用百度开放地图api在代码中获得两地距离
- 代码环复杂度的计算公式
- oracle hibernate 自动创建表,自动创建表时,多了一张表hibernate_sequence,为什么?
- Android开发时的多点触控是如何实现的?
- 数字盲打怎么练_数字键盘区的功能及指法技巧
- 【竞赛总结】安全AI之人脸识别对抗
- PyQT5一起学做图书管理系统(2)初始化数据库
- 银行对公账户编码规则
- Layui表单自定义验证规则
- python怎么开发服务器_Python服务器开发(1)
- Mysql增加传输数据量或连接时间,防止mysql server has gone away报错
- 关于两个RS485模块的线路连接问题
- SourceTree安装跳过注册
- Ubuntu 16.04下载编译Android11源码
- 李文胜oracle,2014年下期解放学校防火演练方案.doc
- cesium 关于feature的知识点
热门文章
- linux系统——Shell编程之变量解释
- “强中台+灵动应用”,奥哲邓儒佳:低代码成为建筑企业数字化转型的核心引擎
- 天线越大越好吗_天线越多无线WIFI信号就越强?选购无线路由器常见三大误区...
- chatgpt赋能python:Python恶搞代码:娱乐和学习的完美结合
- 2022年一级建造师通信与广电工程考试模拟试题卷及答案
- 自媒体运营主要做些什么
- 12个帮助实现超棒数据可视化效果的Javascript框架
- Unity之OpenXR+XR Interaction Toolkit实现 监听VR手柄按键
- Linux驱动开发 --- IIC总线
- python中文词频排序_Python中文词频统计