java webservice 实例

                                                                                             by hgwayen

版权声明:本文为CSDN博主「hgwayen」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_46013859/article/details/121299644

实验目的

1.实现一个具有WebService功能的分布式对象类,能够实现求两个整数的最大值的功能。

2.在另一台计算机(虚拟机)上,编写客户端程序,通过WebService技术访问远程的基于WebService的分布式对象Max, 达到求两个整数的最大值的功能。


一、创建并运行HelloWorldWebService.java。

1.在classpath路径下新建/rs_midtest/rs_midtest/service/rs_midtest/client文件夹,在service包中编写HelloWorldWebService.java。例如,我的classpath为D:\Coding\javaSave。项目的主目录就为D:\Coding\javaSave\rs_midtest

注意包名为classpath后的新增路径,防止无法找到主类。

package rs_midtest.service;import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;  @WebService
public class HelloWorldWebService {public String EchoHelloWorld(String name){  System.out.println("service HelloWorld: "+name);  return"HelloWorld: "+name;  } public int GetMax(int x,int y){int result=0;result=x>y?x:y;return result;}@WebMethod(exclude=true)  public String EchoHelloWord2(String name){  System.out.println("service HelloWorld2: "+name);  return"HelloWorld2: "+name;  }  public static void main(String[] args) {  Endpoint.publish("http://127.0.0.1:456/helloworld",new HelloWorldWebService());System.out.println("webservice has started.");}
}

2.打开cmd,cd到项目位置。

通过javac编译以及java运行该程序,如图所示:

同时,在浏览器中输入http://127.0.0.1:456/helloworld?wsdl能够看到xml的页面,说明服务器启动成功。

二、使用wsimport根据WSDL文档生成客户端访问服务器端服务所需的代码。

使用命令行cmd跳转至rs_midtest\client的路径下,输入如下命令:

wsimport -s . http://127.0.0.1:456/helloworld?wsdl

wsimport是jdk自带的,可以根据wsdl文档生成客户端调用代码的工具.当然,无论服务器端的WebService是用什么语言写的,都将在客户端生成Java代码.服务器端用什么写的并不重要.

wsimport.exe位于JAVA_HOME\bin目录下.

常用参数为:

-d<目录> - 将生成.class文件。默认参数。

-s<目录> - 将生成.java文件。

-p<生成的新包名> -将生成的类,放于指定的包下。

(wsdlurl) - http://server:port/service?wsdl,必须的参数

命令执行如图所示。

​ 执行完毕后,由于使用-s会生成两份文件 .class 和 .java。复制所有的.java文件至项目地址/rs_midtest/client即可。同时由于之前编写的HelloWorldWebService.java文件中带有包名,因此生成的文件自动生成对应目录./rs_midtest/service。需要将生成文件中的包名package rs_midtest.service;改成package rs_midtest.client.rs_midtest.service;,如图所示。

切换至client路径下,通过javac编译/rs_midtest/service下的所有java文件。

三、编写客户端代码MyClient.java。

1.在/rs_midtest/client/test中编写MyClient.java文件。仍然注意包名。

package rs_midtest.client.test;
import rs_midtest.client.rs_midtest.service.*;public class MyClient {  public static void main(String[] args) {  HelloWorldWebServiceService hwss = new HelloWorldWebServiceService(); HelloWorldWebService hws =hwss.getHelloWorldWebServicePort();  String result=hws.echoHelloWorld("hgwayen");System.out.println(result);  int max=hws.getMax(2,3);System.out.println("max 2,3: "+max);}
}

2.重新打开一个命令行窗口,切换到对应MyClient.java路径,编译并运行MyClient。需要开启服务器,即先运行HelloWorldWebService.java,再运行MyClient。

可能遇到的问题

1.找不到主类,由于设置了package,通过java命令运行时需要加上正确的路径。可以简单理解为classpath下对应的路径。

2.找不到某些jar包,这是由于jdk版本过高的原因,经过测试,jdk15上无法运行HelloWorldWebService.java文件,需要使用jdk8。

3.运行MyClient.java时报错,如图所示。

这是由于使用wsimport命令生成的java文件,缺少namespace导致的。需要修改对应java文件,如图,在@XmlType(name = "EchoHelloWorld"...)的最后添加如下代码namespace = "http://namespace.thats.not.the.same.as.the.generated",注意需要用逗号将前后分隔。

|

完整代码

代码已打包至github,下载地址 :https://github.com/HGWAYEN/java-webservice
提供bat批处理命令,快速运行项目。

java webservice 实例相关推荐

  1. java webservice实例教程

    原文:java webservice实例教程 源代码下载地址:http://www.zuidaima.com/share/1590350954564608.htm 最近在学习web services, ...

  2. Java 使用Axis实现WebService实例

    在上一篇WebService实例中,基于jdk1.6以上的javax.jws 发布webservice接口.这篇博文则主要用eclipse/myeclipse 使用axis插件进行发布和调用WebSe ...

  3. java .net webservice_Java客户端调用.NET的WebService实例

    项目需要去调用.NET的WebSrevice,本身是Java,研究了半天,终于有些头绪,记下来. 1,新建.NET WebService.只在原方法上加上一个string类型的参数str [WebMe ...

  4. webservice实例java_Java WebService(实战) 简单实例

    一.准备工作(以下为本实例使用工具) 1.MyEclipse10.7.1 2.JDK 1.6.0_22 二.创建服务端 1.创建[Web Service Project],命名为[TheService ...

  5. 孔浩老师 java 微信_孔浩老师JAVA WebService教程

    课程目录:01_webservice快速实例 02_wsimport的使用 03_wsdl和soap讲解(介入了tcpmon工具) 04_SOA的分析(纯属扯淡) 05_dtd讲解 06_schema ...

  6. Java Websocket实例【服务端与客户端实现全双工通讯】

    Java Websocket实例[服务端与客户端实现全双工通讯] 现很多网站为了实现即时通讯,所用的技术都是轮询(polling).轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发 出HTTP ...

  7. java 报文请求_http 请求报文和响应报文编写 (java socket实例)

    http 请求头由三部分组成:请求行.请求头部.请求体 GET / HTTP/1.1\r\n Host: 114.55.40.20\r\n Content-Type: text/html;charse ...

  8. java控制语句练习题_[Java初探实例篇02]__流程控制语句知识相关的实例练习

    本例就流程控制语句的应用方面,通过三个练习题来深入学习和巩固下学习的流程控制语句方面的知识,设计到,if条件判断语句,switch多分支语句,for循环语句及其嵌套多层使用,while循环语句. 练习 ...

  9. MapReduce Java API实例-排序

    场景 MapReduce Java API实例-统计单词出现频率: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/11941016 ...

  10. MapReduce Java API实例-统计平均成绩

    场景 MapReduce Java API实例-统计单词出现频率: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/11941016 ...

最新文章

  1. 《C++ Primer》7.3.1节练习
  2. 通过IDE生成和手动call调用webservice
  3. Java前端笔记-后端Springboot,前端vue,Nginx使前后端分离
  4. 宝塔搭建laravel所需要的lnmp环境linux-nginx-mysql-php-composer-git
  5. XML:DTD:Schema
  6. revit API 实现可停靠窗口
  7. ubuntu 安装 man 查看函数原型
  8. 树和二叉树定义、基本术语和性质
  9. win7一直显示正在关机_windows8.1和windows7哪个好_win8.1好还是win7好用
  10. python azure-storage-blob库 使用SAS key下载blob文件实例
  11. 能源路由器 :分布式智能电网应用的混合通信体系结构
  12. Servlet运行原理
  13. 推荐5款你用过之后不舍得卸载的小众软件
  14. Wekan 部署文档
  15. 360主机卫士linux安装软件,360主机卫士Linux专杀版0.4.1 官方版(32位+64位)下载_云间下载...
  16. python鸢尾花数据集_鸢尾花经典机器学习分类Python实现案例
  17. Win10+Ubuntu18.04双系统安装配置教程(二)——磁盘分区
  18. NumberRunningTextView(数字会滚动的TextView)
  19. Verilog 总结
  20. 2021-03-27 : Task05_DIN模型

热门文章

  1. HTML+CSS静态页面`西安旅游网站设计——西安旅游(7页) 大学生旅游网页作品 出行网页设计作业模板 学生游玩网页制作源代码下载
  2. label怎么换行 vb_ASP.NET Lable中进行换行
  3. delphi中webbrowser的用法
  4. stm32f103+znfat+ch375+vs1003实现简单mp3播放器功能
  5. 笔记本电池续航测试软件,电池续航测试和试用总结
  6. 【数学建模】CUMCM-2014A 嫦娥三号软着陆过程 避障阶段图像处理
  7. 基于大数据技术的全国高速公路通行数据 动态监测平台建设
  8. 现代计算机的存储体系 (转载)
  9. 机器码、序列号、认证码、注册码的生成算法(五)
  10. window.dialogArguments只兼容ie的问题解决