SOA与Web Service技术实验报告【全集】

2023-11-03

所用教材:《Java Web服务 构建与运行》若本文对你有用的话请点赞、关注我哦!

6学时 实验题目:①Web Service环境搭建;②REST式服务作为一个HttpServlet类;③JAX-RS Web Service;④JAX-RS Client;⑤JAX-RS客户端;⑥WSDL服务合同

本实验所需的所有代码(已整理得明明白白的):https://download.csdn.net/download/qq_41587612/12517176

上面的需要积分,没积分的话可以到Github上下载:https://github.com/PigeonIsSmart/SOA-WebService

● 常见报错:Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use?

   解决:https://blog.csdn.net/xiaopingga/article/details/84988526

常见问题:Windows控制台cmd中文乱码?

   永久解决:https://blog.csdn.net/qq_35038153/article/details/78430359

● 常见的Http响应状态码?

实验一 Web Service环境搭建(非小白的可以跳过,简略放图) 

一、实验目的

  1. 掌握Java环境的安装。
  2. 掌握eclipse的基本使用方法。
  3. 学会创建一个Java web 项目。

二、实验内容

      1.  Java环境的安装与配置。

           1)Java下载地址

                http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

                 根据网站上的版本下载适合自己系统的版本。

          2)Java安装

          3)JAVA_HOME配置。

                i.  打开高级系统设置

               ii.  点击环境变量

              iii.  在系统变量中创建一个名为JAVA_HOME的环境变量,变量值为JAVA的安装目录。

          4)在系统变量中找到path,在变量值最后加一个分号“;”,再把你安装java的路径+bin复制进来,点击确定。

          5)查看是否安装成功。

                i.  在CMD中输入java -version,出现Java版本号则证明安装成功。

      2.  使用eclipse创建一个新的Java Web项目。

          1)配置tomcat

                i.  打开 window选项卡下的preferences

               ii.  配置tomcat

          2)新建一个java_web一个用程序

                i.  选择Dynamic Web Project

               ii.  取项目名并选中tomcat,点击next

              iii.  选中Generate点击finish。

      3.  运行程序并输出输出结果。

          1)在WebContext新建index.jsp

          2)更改jsp,右键项目选择run as server(要求显示学生自己的姓名学号)

三、实验要求

  1. 要求学生熟练掌握Java环境的安装过程。
  2. 学会在eclisp上搭建tomcat。
  3. 学会使用eclipse创建一个Web项目。
  4. 学会使用tomcat服务器运行Java Web程序。

四、实验结果

实验二 REST式服务作为一个HttpServlet类

一、实验目的

  1. 熟悉REST式服务作为一个HttpServlet类。

二、实验内容

      1. 新建predictions2项目。

      2. 新建predictions2包,创建JerseyClient、Prediction、Predictions、PredictionsServlet类。(下方会给资源包!)

      3. 导入所需要的Jar包,导入data文件。

      4. 更改web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  <servlet>
    <servlet-name>predictor</servlet-name>
    <servlet-class>predictions2.PredictionsServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>predictor</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
</web-app>

      5. 运行项目

三、实验要求

  1. 掌握predictions2 式servlet 服务的搭建。

四、实验过程及截图

区别:在Eclipse上的运行结果第一行无文字说明,但在浏览器上有。

实验三 JAX-RS Web Service

可参考http://www.jquerycn.cn/a_17530虽然排版不忍直视,但部分代码有详细中文注释,我给的资料包里的代码是英文注释。

一、实验目的

  1. 学习如何使用JAX-RS实现RESTful服务框架。
  2. 学习使用curl发送HTTP请求。

二、实验内容

      1. JAX-RS即Java API for RESTful Web Services,是一种 Java API,可使 Java Restful 服务的开发变得迅速而轻松。这个 API 提供了一种基于注释的模型来描述分布式资源。注释被用来提供资源的位置、资源的表示和可移植的(pluggable)数据绑定架构。

      2. curl下载及配置

          1)下载地址:https://curl.haxx.se/download.html选择适合自己系统版本的curl

          2)curl的安装和配置(win64)

                i.  解压安装包

               ii.  配置curl环境变量(路径为解压后curl的文件路径)

 

为小白补充说明:右键桌面上的“此电脑”,选择“属性”,在弹出窗口左侧选择“高级系统设置”,在弹出窗口下方选择“环境变量”,再在弹出窗口的“系统变量”处,①新建“CURL_HOME”,变量值为“curl的解压路径”;②编辑“Path”,按键盘右侧“end”按钮(若无效,则先按“num lock / scr lock”【简写为“num lk”别不认识啊喂】再按“end”)回到“变量值”末尾,分号后面添加“curl的bin路径”。

      3. 使用JAX-RS搭建RESTful服务框架。

          1)新建Prediction、PredictionsList、PredictonsRS、RestfulPrediction类。

          2)新建一个web项目

          3)导入jar包和data文件 

          4)修改web.xml 

<?xml version="1.0" encoding="UTF-8"?>  
<web-app>  
  <servlet>  
    <servlet-name>jersey</servlet-name>  
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>  
    <load-on-startup>1</load-on-startup>
  </servlet>      
</web-app>

          5)运行项目(注意:资料包里readme文件中写的路径访问会404,但在该路径后面加/xml或/json就能访问了)

      4. Curl的使用

          1)依次在cmd中输入以下命令,查看输出结果。

                i.  curl http://localhost:8080/JAX-RS/resourcesP/xml

               ii.  curl http://localhost:8080/JAX-RS/resourcesP/json

          2)查看PredictionsRS.java,使用curl输出id为1的内容,格式为xml。

三、实验要求

  1. 要求学生掌握用JAX-RS实现简单的RESTful服务框架。
  2. 学会安装配置curl,并使用。

四、实验过程及截图

实验四 JAX-RS Client

一、 实验目的

  1. 掌握JAX-RS Client 的搭建。
  2. 针对基于predictions2 REST 式服务创建客户端。
  3. 了解客户端与服务器之间的交互。

二、实验内容

     1. 新建predictions2 Service。

    2. 右键项目Run on Server

     3. 在predictions2包下新建 JerseyClient 类,导入所需要的jar包。

     4. 右键JerseyClient类,选择 run as JavaApplication。查看控制台运行结果。

     5. 更改JerseyClient.java,要求输出并删除id = 10的数据,输出格式为JSON。更改后的代码▼

package predictions2;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import javax.ws.rs.core.MediaType;
import com.sun.jersey.api.representation.Form;

public class JerseyClient {
	private static final String baseUrl = "http://localhost:8080/predictions2";

	public static void main(String[] args) {
		new JerseyClient().demo();
	}

	private void demo() {
		Client client = Client.create();
		client.setFollowRedirects(true); // in case the service redirects

		WebResource resource = client.resource(baseUrl);
		getAllDemo(resource);
		postDemo(resource); // same resource but different verb

		String url = baseUrl + "?id=10";
		resource = client.resource(url);
		getOneDemo(resource);
		deleteDemo(resource); // delete id = 10
	}

	private void getAllDemo(WebResource resource) {
		String response = resource.accept(MediaType.APPLICATION_JSON_TYPE).get(String.class);
		report("GET all in JSON:\n", response);
	}

	private void getOneDemo(WebResource resource) {
		String response = resource.accept(MediaType.APPLICATION_JSON_TYPE).get(String.class);
		report("GET one in JSON:\n", response);
	}

	private void postDemo(WebResource resource) {
		Form form = new Form(); // HTTP body, a simple hash
		form.add("who", "William Butler Yeats");
		form.add("what", "I know that I shall meet my fate");

		String response = resource.type(MediaType.APPLICATION_FORM_URLENCODED_TYPE).accept
				(MediaType.TEXT_PLAIN_TYPE).post(String.class, form);
		report("POST:\n", response);
	}

	private void deleteDemo(WebResource resource) {
		String response = resource.accept(MediaType.TEXT_PLAIN_TYPE).delete(String.class);
		report("DELETE:\n", response);
	}

	private void report(String msg, String response) {
		System.out.println("\n" + msg + response);
	}
}

三、实验要求

  1. 要求学生掌握JAX-RS客户端的配置。
  2. 成功调通程序并对其进行更改。

四、实验过程及截图

以下图片都是执行JerseyClient.java的运行结果,内容很长,截了部分帮助理解!

 

上方三幅图是连续的,从第0条开始计数,可以看出程序原是删除了第31条(最后一条)prediction(预言)又添加一条prediction("I know that I shall meet my fate"成为新31条预言)【HTTP body, a simple Hash】,现要我们改成“输出并删除id = 10的数据,输出格式为JSON”。

你只需看JerseyClient.java(一共59行代码),改/读起来非常简单,不用怕!

改完后的运行(连续)结果如下所示:

 

如果你有以下情况 ,请重新 Run on Server,再 Run as JavaApplication!!!

JerseyClient.java已经运行过一次,再重复Run as JavaApplication运行的话就会这样▼

 实验五 JAX-RS客户端

一、实验目的

  1. 掌握REST Client 的搭建。
  2. 针对基于predictions3 service创建客户端。
  3. 熟悉客户端与服务器之间的交互。

二、实验内容

     1. 新建predictions3 项目。

 

     2. 右键项目run on server。

     3. 创建client包,在其中创建Java类,并导入jar包。

     4. 右键JerseyClient类,选择 run as JavaApplication。查看控制台运行结果。

三、实验要求

  1. 要求学生掌握REST式客户端的配置。
  2. 成功调通程序并对其进行更改。

四、实验结果

日常无视警告。。。创建client包(Package),导入类和jar包,右键Predictions3Client类,Run as JavaApplication

 实验六 WSDL服务合同

一、实验目的

  1. 学会使用java代码发布endpoint。
  2. 了解WSDL的作用。

二、实验内容:

  1. 新建一个项目
  2. 新建RandPublisher、RandService类。

  3. 导入jar包和xml

  4. 更改web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:web="http://xmlns.jcp.org/xml/ns/javaee">
      <listener>
        <listener-class>
          com.sun.xml.ws.transport.http.servlet.WSServletContextListener
        </listener-class>
      </listener>
      <servlet>
        <servlet-name>jaxws</servlet-name>
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>jaxws</servlet-name>
        <url-pattern>/*</url-pattern>
      </servlet-mapping>
    </web-app>
  5. 运行项目
  6. 运行RandPublisher类,在浏览器输入http://localhost:8888/ws

三、实验要求

  1. 学会使用java代码发布endpoint。
  2. 掌握WSDL的作用。
  3. 成功调试出代码。

四、运行结果

先 Run on JavaApplication,再 Run as Server!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SOA与Web Service技术实验报告【全集】 的相关文章

  • 为 JerseyTest 配置带有 SSL 的 JettyTestContainer

    我的任务是为我的团队的代码设置集成测试 这些测试需要向 Jersey 2 27 中实现的 REST 端点执行 HTTPS 请求 在我寻找如何进行此类测试的过程中 我偶然发现这篇文章来自Baeldung https www baeldung
  • JAX-RS @HeaderParam 与列表,仅填充一个逗号分隔的元素

    这是一个 JAX RS 特定问题 根据 HeaderParam docs https docs oracle com javaee 7 api javax ws rs HeaderParam html https docs oracle c
  • 使用 jax-rs 从 REST 服务下载 xml,无需本地存储文件

    在一项服务中 我正在创建一个名为 doc 的 XML 文档 并且希望用户收到下载该文档的提示 而不必将其保存在本地 如显示打开或保存文件的提示 但是 我无法找到应该如何构建将返回的响应 甚至无法找到 Produce 的类型 到目前为止我有这
  • 客户端无权调用此 JAX-RS EJB 错误

    我已经寻找这个问题的解决方案有一段时间了 这里是 我按照本教程从数据库自动生成 jax rs Web 服务 https netbeans org kb docs websvc rest html https netbeans org kb
  • 球衣中后台调用的正确处理

    我必须在 Web 应用程序中对 Web 服务进行一些后台调用 电话的响应并不是真正的时间紧迫 而且对我来说几乎没有兴趣 它仅在极少数情况下发生变化 在这种情况下 我会通过抛出异常或记录失败或其他方式对其做出反应 我现在的具体问题是指在 Je
  • 如何让 JAXRS 2 (Jersey) 详细 Trace 与 ResourceConfig 配合使用

    我希望像这样输出 JAXRS 的调试日志记录 根据文档 https jersey java net documentation latest monitoring tracing html d0e16356 3 X Jersey Traci
  • 将 URI 路径传递给 JAX-RS 提供者

    我最近实现了 Jersey JAX RS Rest 服务 我创建了一个 JIBX 提供程序 它允许在 XML 和 Java 类型之间进行解组和编组 我还想通过在 URL 路径中指定版本来对我的服务进行版本控制 版本控制将包括用于编组和解组
  • Glassfish 3.1.1:在 RESTful Web 服务中检索 HTTP 身份验证

    我正在使用基于我的客户表的 HTTP 身份验证 用户通过身份验证后 将调用静态 Web 服务 但是我如何在 Web 服务中访问 HTTP 身份验证 HttpRequest 的标头数据 我的代码如下所示 GET Path id Produce
  • 无法在 JAX-RS 服务中注入 @ApplicationScoped bean

    我创建了 JAX RS 服务 我想在其中注入应用程序范围的 bean 问题是bean没有被注入 这是如何引起的以及如何解决 JAX RS 服务 Path room public class RoomService Inject GameCo
  • 提供 REST Web 服务的 JEE6 企业应用程序应该如何组织?

    从一个月前开始 我正在努力学习宁静的网络服务 现在我已经练习了语法并且理解了概念 我决定制作一个非常简单的企业应用程序 其中包括 EJB JPA 和 REST 我正在付出巨大的努力来尝试了解组织这种系统的最佳方式是什么 如果在该领域有经验的
  • RESTful服务中的资源级授权

    Let users id 是 RESTful 服务中的资源 url 启用基本身份验证 仅允许经过身份验证的用户访问该 url 示例场景 User 1 User 2是通过 userId 1 和 2 进行身份验证的用户 由于两者都经过身份验证
  • 如何从ContainerResponseFilter内部获取源地址/ip

    我正在编写一个日志过滤器 用于记录在 Jersey 中运行的 Web 应用程序的所有 HTTP 请求 响应 ContainerResponseFilter似乎是一个直接的解决方案 我已经设法让它发挥作用 下一步是记录请求的 IP 有没有办法
  • 从 JAX-RS 中的另一个 ExceptionMapper 调用 ExceptionMapper

    在我的 RESTEasy 应用程序中 我得到了java lang reflect UndeclaredThrowableException 因为未在 throws 子句中声明异常的方法会引发已检查异常 所以我正在写一个UndeclaredT
  • JAX-RS 和 JAX-WS 有什么区别?

    阅读了几篇有关 JAX RS 和 JAX WS 的文章后 我有几个问题想确认一下 JAX RS可以像JAX WS一样做异步请求吗 JAX RS 能否访问不在 Java 平台上运行的 Web 服务 反之亦然 REST 对于配置文件有限的设备
  • CXF/Jetty 相当于以下 Jersey/Jetty 代码

    我有一些 Jersey 2 7 和 Jetty 9 2 5 v2014112 的测试代码 我正在尝试将其移植到 CXF 3 0 x 和 Jetty 相同版本 有一个部分我无法弄清楚 相当于rc register resource 下面一行
  • Jersey/JAX-RS:如何自动使用@Valid递归级联bean验证?

    我正在 Jersey 的 REST 资源端点中验证我的 POJO public class Resource POST public Response post NotNull Valid final POJO pojo public cl
  • Jersey:返回字符串列表

    我尝试以 JSON 和 XML 形式返回 Jersey 中的字符串列表 我以为这会是微不足道的 我的第一次尝试是写这样的东西 GET Produces MediaType APPLICATION JSON MediaType APPLICA
  • REST 中子资源和路径变量冲突?

    设计路径解析可能含糊不清的 REST API 是否被认为是不好的做法 例如 GET animals id Returns the animal with the given ID GET animals dogs Returns all a
  • 在 ContainerResponseFilter 中获取响应 (JAX-RS 2)

    我正在尝试移植这个 CORS 过滤器 https raw github com ysangkok jax rs ng todo master topack WEB INF classes our package ResponseCorsFi
  • 如何在 JAX-RS 过滤器中记录请求处理时间

    我有 JAX RS Web 应用程序 我想记录从获取请求到响应的时间量 在 Spring Boot 中使用 servlet 过滤器很容易 但我的应用程序中的过滤器无法正常工作 Provider public class RequestLog

随机推荐

  • java 8 新特性,接口默认方法、lambda表达式、Optional、stream

    java 8 新特性 当面试官让我说几个java 8 的新特性 我巴拉巴拉把知道的都说了 然而 面试官接着问 stream里面如果按照分类过滤怎么做呢 map 是什么 嘀 扫码成功 哎呀 地铁里面的空调真不错啊 真不错 果然 只做到了解是不
  • qt常见问题

    1所有能够接受和发送消息的class必须存在有消息循环的线程环境中 2对象的消息处理默认环境是是存在于创建这个对象的线程环境中的 对于第二点如何理解 比如 subthread subthread connect this sigA this
  • Chisel学习2构建过程与测试

    要开始学习更有趣的Chisel代码 我们首先需要学习如何编译Chisel程序 如何生成在FPGA中执行的Verilog代码 以及如何编写调试测试并验证我们的电路是正确的 Chisel是用Scala编写的 因此任何支持Scala的构建过程都可
  • 基于Vue三大互联网企业级开箱即用中后台解决方案对比字节跳动Arco Design Pro,蚂蚁集团Ant Design Pro和腾讯TDesign Starter

    基于Vue中后台解决方案越来越多开源了 随着各大互联网企业的Vue UI框架开源和普及后 都又有新的中后台解决方案也开源 方便开发者使用了 下面来作一个主观和客观的对比一下 字节跳动Arco Pro 蚂蚁集团Ant Design Pro 腾
  • Android 新增一个自定义分区

    在某个项目中 有一个需求 需要新增一个xxx分区 这个分区类似于vendor oem分区 名字为指定的 此处有点好奇 为什么不直接使用oem分区 而是另外弄一个分区名出来 功能实现点 在root目录下新增分区的挂载目录 将自定义分区的内容生
  • Flask-数据库-SQLAlchemy

    SQLAlchemy是flask的扩展 是一个功能强大的OR映射器 支持多种数据库后台 可以将类的对象映射至数据库表 使用这个工具 可以创建数据库 创建表 并为数据库添加数据 进行查询操作等 参考 Flask SQLAlchemy Flas
  • kafka(一)kafka的基础与常用配置

    文章目录 一 kafka基础内容 二 kafka 中重要的参数配置 2 1 log dirs 2 2 unclean leader election enable 2 3 message max bytes 2 4 request requ
  • 基于LMI的输出反馈H∞控制及其仿真(含实现程序)

    目录 1 H 输出反馈控制 1 1 框架结构 1 2 广义系统 1 3 等价的LMI问题 2 参考文献 3 文献案例实现 3 1 二阶系统 3 2 H 最优输出反馈控制器 3 2 1 程序 3 1 2 时域和频域分析 3 3 H 次优输出反
  • 阿里Java学习路线:阶段 2:数据库开发-数据库及SQL/MySQL基础:课时8:DDL(数据定义语言)之操作数据库

    3 DDL 数据定义语言 3 1 基本操作 l 查看所有数据库名称 SHOW DATABASES l 切换数据库 USE mydb1 切换到mydb1数据库 3 2 操作数据库 l 创建数据库 CREATE DATABASE IF NOT
  • openai-chatGPT的API调用异常处理

    因为目前openai对地区限制的原因 即使设置了全局代理使用API调用时 还是会出现科学上网代理的错误问题 openai库 0 26 5 错误提示 raise error APIConnectionError openai error AP
  • 程序包org.apache.tools.zip不存在

    可以看出 org apache tools zip 是 ant jar里面的 然后在pom配置文件里面加上
  • LocalDateTime 相关方法

    文章目录 1 获取日期 时间 日期时间 2 获取年月日时分秒 3 给定数值生成日期时间 4 格式化 日期时间 gt 字符串 5 解析 字符串 gt 日期时间 6 设定具体值 7 日期时间的加减 8 小测试 日期 gt 日期时间 注意 本文中
  • 2021年9月电子学会Python等级考试试卷(三级)答案解析

    青少年软件编程 Python 等级考试试卷 三级 分数 100 00 题数 38 一 单选题 共25题 每题2分 共50分 1 使用map函数可以实现列表数据元素类型的转换 而无需通过循环 则将列表L 1 3 5 7 9 转换为列表 1 3
  • 微信小程序大作业 咖啡小店 适合初学者使用

    咖啡小店微信小程序 能正常运行无错误 含导航栏 轮播 咖啡售卖等等功能 详情如下图所示 下载链接在文末 点我下载资源 https download csdn net download weixin 43474701 58819009
  • c语言strcat()/strcat_s()函数详解

    前言 先看下strcat strcat s 函数调用报错 放大一点 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C4996 strcat This function or variable may be unsafe Consi
  • 环境篇-Linux下安装OpenSSL

    本文属于 OpenSSL加密算法库使用系列教程 之一 欢迎查看其它文章 linux下 一般系统都自带了OpenSSL 可以直接使用 包括 终端直接使用OpenSSL命令 直接调用OpenSSL库 故 一般不需要再安装 若系统中没有安装Ope
  • muduo网络库学习笔记(8):高效日志类的封装

    前言 在服务端编程中 日志是必不可少的 开发过程中 日志的存在能方便我们调试错误和更好地理解程序 运行过程中 日志能帮助我们诊断系统故障并处理 记录系统运行状态 muduo日志类封装细节 1 日志消息有多种级别 level 如TRACE D
  • sklearn之自定义转换器和流水线Pipeline

    自定义转换器 自定义一个类 添加TransformrMixin作为基类 则可以直接得到fit transform 方法 添加BaseEstimator作为基类 则可以获得两个调整超参数的方法 get params 和set params 实
  • c语言实现一个helloworld

    开发工具 Dev C 代码如下 include
  • SOA与Web Service技术实验报告【全集】

    所用教材 Java Web服务 构建与运行 若本文对你有用的话请点赞 关注我哦 6学时 实验题目 Web Service环境搭建 REST式服务作为一个HttpServlet类 JAX RS Web Service JAX RS Clien