java发布webService服务教程

article/2025/10/12 20:51:09

发布webService服务并使用soap UI测试

    • 发布简单的webService服务
    • 同时发布多个webService接口
    • 使用SoapUI测试webService接口
      • 下载SoapUI并安装
      • 打开WSDL文件
      • 测试文件上传
    • 示例源码

发布简单的webService服务

  1. 新建一个Maven项目
  2. pom引入 webService需要的依赖
<dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxws</artifactId><version>3.1.9</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-transports-http-jetty</artifactId><version>3.1.9</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-core</artifactId><version>3.1.9</version></dependency>
  1. 定义一个接口,并使用@WebService 注解,自定义当前接口的targetNamespace。定义自己需要对外提供的方法,并在方法的请求参数中,使用@WebParam注解对参数进行绑定,确保后续调用方生成的代码参数与该参数相同;
@WebService(endpointInterface = "com.ds.webServiceDemo.UserService",targetNamespace="http://cems.ds/userService")
public interface UserService {/*** 用户登录* @param userAccount	账号* @param password	密码* @return*/public Result login(@WebParam(name = "userAccount")String userAccount, @WebParam(name = "password")String password);/*** 获取用户详细信息* @param userId	用户ID* @return*/public Result getUserDetalis(@WebParam(name = "userId")String userId);}
  1. 定义一个实现类,实现接口,并在实现类上使用@WebService和@BindingType注解,@WebService注解需要指定endpointInterface,包含接口的所有包;BindingType
@WebService
public class UserServiceImpl implements UserService {@WebMethod@Overridepublic Result login(String userAccount, String password) {/*** 进行业务处理*/return null;}@WebMethod@Overridepublic Result getUserDetalis(String userId) {/*** 进行业务处理*/return null;}}
  1. 定义一个入口类,使用main方法发布该webService接口;
public class ServiceMain {public static void main( String[] args ){System.out.println("webService服务正在启动");String serverIp = "127.0.0.1";//使用时,ip可以通过配置文件获取String serverPort = "8080";//使用时,端口可以通过配置文件获取String userServiceUrl = "http://"+serverIp+":"+serverPort+"/userService";Endpoint.publish(userServiceUrl, new UserServiceImpl());System.out.println("userService发布地址:" + userServiceUrl);System.out.println("webService服务启动成功");}
}
  1. 使用浏览器访问发布的webService地址,http://127.0.0.1:8080/userService?wsdl,访问效果如下所示;
    在这里插入图片描述

同时发布多个webService接口

  1. 发布简单的webService服务步骤相同,再创建一个接口
@WebService(endpointInterface = "com.ds.webServiceDemo.FileService",targetNamespace="http://cems.ds/fileService")
@BindingType(SOAPBinding.SOAP12HTTP_BINDING)
public interface FileService {/*** 上传文件* @param fileName	文件名* @param file	文件信息,二进制文件* @return*/public Result uploadFile(@WebParam(name = "fileName")String fileName, @WebParam(name = "file")DataHandler file);/*** 下载文件* @param filePath	需要下载的文件路径,也可以是文件标识* @return*/public DataHandler downloadFile(@WebParam(name = "filePath")String filePath)throws FileNotFoundException ;
}
  1. 定义一个实现类,实现FileService
@WebService
public class FileServiceImpl implements FileService {@WebMethod@Overridepublic Result uploadFile(String fileName, DataHandler handler) {Result result = new Result();//就可以将文件存放到本地了File file = new File("文件存放路径" + fileName);try {FileUtils.copyInputStreamToFile(handler.getDataSource().getInputStream(), file);result.setFlag(0);result.setData("文件上传成功");} catch (IOException e) {e.printStackTrace();result.setFlag(-1);result.setData("文件上传出现异常");}return result;}@WebMethod@Overridepublic DataHandler downloadFile(String filePath) throws FileNotFoundException {File downloadFile = new File(filePath);if (!downloadFile.exists()) {System.out.println("需要下载的文件不存在");throw new FileNotFoundException(filePath + " does not exist");}DataHandler dataHandler = new DataHandler(new FileDataSource(filePath));return dataHandler;}}
  1. 使用入口类进行发布
public class ServiceMain {public static void main( String[] args ){System.out.println("webService服务正在启动");String serverIp = "127.0.0.1";String serverPort = "8080";String userServiceUrl = "http://"+serverIp+":"+serverPort+"/userService";String fileServiceUrl = "http://"+serverIp+":"+serverPort+"/fileService";Endpoint.publish(userServiceUrl, new UserServiceImpl());System.out.println("userService发布地址:" + userServiceUrl);Endpoint.publish(fileServiceUrl, new FileServiceImpl());System.out.println("fileService发布地址:" + fileServiceUrl);System.out.println("webService服务启动成功");}
}
  1. 使用浏览器访问发布的webService地址,http://127.0.0.1:8080/fileService?wsdl,访问效果如下所示;
    在这里插入图片描述

使用SoapUI测试webService接口

下载SoapUI并安装

可以从官网下载,也可以在我网盘中进行下载,安装使用时,电脑需要安装jdk
链接:https://pan.baidu.com/s/19bh1UNVH4Tfd7fDg8M83bA
提取码:jz63

打开WSDL文件

打开SoapUI后,在Projects上鼠标右击,选择New SOAP Project
在这里插入图片描述
在Initial WSDL中输入发布的webService接口的wsdl文件访问URL,然后点击OK按钮
在这里插入图片描述
在这里插入图片描述

测试文件上传

在fileName标签中输入上传的文件名,在file中,鼠标右击,选择Insert file as Base64,然后选择本地文件,点击打开即可完成文件的选择,点击Submit request to specified endpoint URL进行测试
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

示例源码

查看源码


http://chatgpt.dhexx.cn/article/CKneI85S.shtml

相关文章

WebService 教程(包含项目实践)

情景引入&#xff1a; 时间&#xff1a;早晨 8 : 00 am 小白&#xff1a;起床起床&#xff0c;&#xff0c;&#xff0c;公司又来需求了&#xff0c;你还在睡觉&#xff0c;快点起来~&#xff01; 我&#xff1a;大惊小怪&#xff0c;又怎么了呢&#xff1f;小白&#xff0c…

最详细的idea创建webservice教程

最详细的idea创建webservice教程 创建服务端 File->New Project 点击next&#xff0c;会自动生成demo将要发布的类加上WebService&#xff0c;方法加上WebMethod&#xff0c;设置服务发布address WebService() public class HelloWorld {WebMethodpublic String sayHello…

WebService简单入门

1. JAX-WS发布WebService 创建web工程 创建simple包&#xff0c;和server、client两个子包。正常情况下server和client应该是两个项目&#xff0c;这里我们只是演示效果&#xff0c;所以简化写到一个项目中&#xff1a; 1.1 创建服务类Server package simple.server;import ja…

WebService教程实例

一、准备工作 1、Myeclipse 2014 2、jdk8.0 二、创建服务端 1、创建【Web Service Project】&#xff0c;命名为【TheService】。 2、创建【Class】类&#xff0c;命名为【ServiceHello】&#xff0c;位于【com.hyan.service】包下。 3、编写供客户端调用的方法&#xff0c;即编…

Java小白翻身 - webservice教程2

来一个HelloWorld&#xff0c;SpringBoot发布WebService可简单啦。 1、搭建项目2、配置pom.xml3、建services服务包4、登陆接口类5、登陆接口实现类6、创建CXF配置类7、Parameter 0 of method errorPageCustomizer in ErrorMvcAutoConfiguration 异常解决8、访问webservice9、…

idea2021创建webservice教程

一、创建服务端 1、创建一个新的java工程 2、工程项目右键添加框架依赖 3、选择webservices 4、点击确定完成创建。创建后项目会添加相关依赖。以及测试服务类。 5、代码介绍 // 添加WebService注解 WebService() public class HelloWorld {// 方法添加WebMethod注解W…

WebService教程

最近在学习WebService&#xff0c;今天尝试用Eclipse的插件生成JAX-WS WebService&#xff0c;结果遇到了不少的问题啊&#xff0c;调试了大半天终于把程序跑通了。现在把步骤和问题记录一下&#xff0c;也为了以后遇到相同的问题时能够及时解决。首先利用Eclipse生成WebServic…

WebService入门教程(服务端发布WebService)

本篇内容过多&#xff0c;时间紧迫的朋友可以通过目录快速筛选自己想要看的内容&#xff0c;本人接触webservice也没多久&#xff0c;也处于学习阶段&#xff0c;如果有错误请指正&#xff0c;如果已经是大神请略过这篇文章&#xff0c;这篇文章不涉及webservice的底层原理&…

WebService最详细教程

WebService相关概念 基础概念 WebService是一种跨编程语言和跨操作系统平台的远程调用技术,就是说服务端程序采用java编写&#xff0c;客户端程序则可以采用其他编程语言编写&#xff0c;反之亦然&#xff01;跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统…

webSerivce简明使用教程

茫茫人海千千万万&#xff0c;感谢这一秒你看到这里。希望我的文章对你的有所帮助&#xff01; 愿你在未来的日子&#xff0c;保持热爱&#xff0c;奔赴山海&#xff01; &#x1f440; 前言 因为前段时间&#xff0c;需要使用到webService来调用公司的其他系统api接口&#x…

WebService详细讲解

1 学习目标2 webservice 基本概念 2.1 什么是web服务2.2 简介2.3 术语 2.3.1 webservice开发规范2.3.2 SOAP 协议2.3.3 wsdl说明书2.3.4 UDDI2.4 应用场景2.5 优缺点 2.5.1 优点&#xff1a;2.5.2 缺点&#xff1a;2.6 面向服务架构SOA3 ApacheCXF 框架介绍 3.1…

11步教你入门webservice

新建立一个javaWeb项目&#xff0c;一个java类&#xff0c;如图&#xff1a; 1.具体很简单 首先要创建一个web工程 2、接下来我们就要将项目中的TestService的这个类生成WebService服务端&#xff0c;选择new Web Service&#xff0c;如图&#xff1a; 3 4.Next,选择jav…

php 实现分页功能(class封装了功能)

前言 分页是一个很常见的功能&#xff0c;我这里提供了分类类(class)&#xff0c;用于前端页面中的四个按钮&#xff1a; 首页下一页上一页尾页 上面的演示非常不直观&#xff0c;但足可以证明这个类可以完成分页功能。 完整的代码 附有非常详细的注释&#xff0c;但需要有…

PHP分页技术详解

直接上代码&#xff0c;注释很详细了。 <?php /** * php分页技术详解 * author jahng */header("Content-type: text/html; charsetUTF-8");echo<link rel"stylesheet" type"text/css" href"css.css" media"all" /&g…

PHP的分页处理

HTML页面&#xff1a; <div class"page"> {$data->render()|raw} </div> 控制器页面&#xff1a; $data ArticleInfo:: where(cate_id, $this->cid)->whereLike(title,%.$get.%)->paginate([ query>[cid>$this->cid], l…

php分页

这是学生信息管理每三条一页> <?phpfunction news($pageNum 1, $pageSize 3){$array array();$mysqlnew mysql();$rs "select * from user limit " . (($pageNum - 1) * $pageSize) . "," . $pageSize;$r $mysql->query($rs);while ($obj…

PHP-分页

1.6 分页 1.6.1 分析 -- 1、获取当前页码的数据 页码 SQL语句 1 select * from products limit 0,10 2 select * from products limit 10,10 3 select * from products limit 20,10 结论&#xff1a; $pageno&#xff1a;页码 $startno:起始位置 $pagesize10:页面大小…

PHP分页查询

1、创建Page.php类&#xff0c;代码如下&#xff1a; <?php /*** 分页模板类*/ class Page {private $cur_page;//当前页private $total;//总条数private $page_size 10;//每页显示的条数private $total_page;//总页数private $first_page;//首页显示名称private $pre_pa…

全功能PHP分页条

网上可以找到的ASP、PHP分页条很多。我也不能免俗&#xff0c;发表一个献献丑。唯一聊以自慰的是这个分页条能生成的显示样式还是很多的&#xff0c;相信能满足大部分人的需要。另一个特点就是使用特别简单&#xff0c;一般传递两个参数即可使用。文档里有使用样例和效果图。发…

php原生分页

自己写一个原生php分页&#xff1a; <?php $linkMySQL_connect(localhost,用户名,密码); mysql_select_db(数据库名称,$link); mysql_query(set names utf8); $resultmysql_query("select * from 表名"); $count mysql_num_rows($result); $Page_size10; …