Java发布webservice

2023-11-02

先附上一个webservice的视频教程:

链接:https://pan.baidu.com/s/1qesv_A7cp-zYsL7fE5nmFw 
提取码:3d6k 

创建服务端(提供接口):

方式一:创建一个web工程,创建一个ServiceHello类,如下:

 
  1. package com.test;

  2.  
  3. import javax.jws.WebService;

  4. import javax.xml.ws.Endpoint;

  5.  
  6. @WebService

  7. public class ServiceHello {

  8.  
  9. public String sayHello(String name){

  10. System.out.println("---BB---------ServiceHello--------------");

  11. return "欢迎你! "+name;

  12. }

  13.  
  14. public static void main(String[] args) {

  15. Endpoint.publish("http://127.0.0.1:8080/BB/ServiceHello", new ServiceHello());

  16. System.out.println("发布成功!");

  17. }

  18. }

创建webservice接口比较简单,在类上面加上@WebService注解,提供一个接口方法如sayHello,最后在main方法去发布接口。控制台打印出“发布成功”后,把main方法中的那个地址加上?wsdl复制到浏览器中,可以查看到这个wsdl文件。

但是这种方式是main方法运行的,一关闭就访问不到,一般都是通过tomcat发布的,所以这种方式只了解下。

方式二:创建一个web工程,创建一个ServiceHello类,类和上面相同,可以去掉main方法。

选中这个类右键,new一个web service,如下图:

点击next:

点击next,下图中选择提供接口的方法,因为这个类main方法我没去掉,所以显示两个方法,但是不选择main方法就行,点击finish完成。

会自动在项目下生产以下文件:

项目用tomcat启动,打开ServiceHello.wsdl文件,下面这个地址是接口地址,后面加?wsdl在浏览器中可以访问到。

 这种方式只是简单web项目,运行tomcat提供接口。视频中有基于Spring的WebService教程。

方式三: 对方提供一个wsdl文件,根据这个文件去生成服务端来提供服务。

创建一个web项目,把wsdl文件放在webcontent目录下:

 选择src或者项目右键,去new一个web service:

在“web service type”选择下面选项,然后点击Browser:

然后在新的弹出框中选择browser,去现在这个项目下的wsdl文件,点击OK:

点击OK:

点击finish:

会在项目下自动生成一些类,依赖jar包等文件,会生成新的wsdl文件,原先的wsdl文件就可以删除掉,项目通过tomcat启动即可访问到接口,访问和方式二的访问相同。

注意:这种方式有些是需要接口方法里面的逻辑的,把接口方法自己补充完整。

创建客户端(调用接口): 

方式一:通过提供的接口地址去生成客户端。我们用上面的http://localhost:8082/BB/services/ServiceHello?wsdl这个接口地址。

创建一个web项目:

选择项目右键去new一个web service client:

把接口地址填入service definition,这个地址一定是能访问得到的,不然会提示“The service definition selected is invalid.”,点击finish:

会自动生成一些接口文件。 

 生成之后去创建一个测试接口的类:

 
  1. package com.test;

  2.  
  3. public class Test {

  4. public static void main(String[] args) throws Exception {

  5. ServiceHelloServiceLocator l =new ServiceHelloServiceLocator();

  6. ServiceHello service = l.getServiceHello();

  7. String s = service.getValue("test");

  8. System.out.println(s);

  9. }

  10. }

 运行main方法,打印返回数据,测试成功:

方式二:通过给的wsdl生成客户端,来调用接口 。

创建一个web项目,把wsdl文件放在webcontent目录下,右键项目去new一个web service client:

点击browser去选择本项目下的wsdl文件,操作和根据wsdl创建服务端的操作相同。

点击finish,完成:

生成接口的类和依赖jar包:

这种方式需要注意一点,就是拿到的wsdl文件,文件最下面有接口地址:

 需要注意这个接口地址是不是可以访问的地址,或者是正式的接口地址,有时候是一个假的地址,访问不到,如下图:

这样生成的接口类,去测试是访问不到的,这时候去给对方要正式的接口地址,一般是在带有locator的这个类去改一下接口地址即可:

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

Java发布webservice 的相关文章

  • 使用 JDBC 获取 Oracle 11g 的最后插入 ID

    我是使用 Oracle 的新手 所以我将放弃之前已经回答过的内容这个问题 https stackoverflow com questions 3131064 get id of last inserted record in oracle
  • NoInitialContextException:heroku 战争部署

    我一直在开发一个 J2EE 项目 并且在其中使用连接池 也通过部署在 heroku 上的数据库进行访问 我使用以下代码来设置 Connection 对象 Context initContext new InitialContext Cont
  • 带有 Android 支持库 v7 的 Maven Android 插件

    我使用 maven android plugin 构建我的 android 应用程序 它依赖于 android 支持库 v4 和 v7 由于我没有找到如何从developer android com下载整个sdk 因此我无法使用maven
  • Java 7 默认语言环境

    我刚刚安装了 jre7 我很惊讶地发现我的默认区域设置现在是 en US 对于jre6 它是de CH 与jre7有什么不同 默认区域设置不再是操作系统之一吗 顺便说一句 我使用的是Windows7 谢谢你的回答 编辑 我已经看到了语言环境
  • 如何使用 JAVA 代码以编程方式捕获线程转储?

    我想通过 java 代码生成线程转储 我尝试使用 ThreadMXBean 为此 但我没有以正确的格式获得线程转储 因为我们正在使用jstack命令 请任何人提供一些帮助 他们是否有其他方式获取线程转储 使用任何其他 API 我想要的线程转
  • 删除优先级队列的尾部元素

    如何删除优先级队列的尾部元素 我正在尝试使用优先级队列实现波束搜索 一旦优先级队列已满 我想删除最后一个元素 优先级最低的元素 Thanks 没有简单的方法 将元素从原始元素复制到新元素 最后一个除外 PriorityQueue remov
  • 在 Struts 2 中传递 URL 参数而不使用查询字符串

    我想使用类似的 URL host ActionName 123 abc 而不是像这样传递查询字符串 host ActionName parm1 123 parm2 abc 我怎样才能在 Struts 2 中做到这一点 我按照下面的方法做了
  • Java:从集合中获取第一项

    如果我有一个集合 例如Collection
  • 如何使用正则表达式验证 1-99 范围?

    我需要验证一些用户输入 以确保输入的数字在 1 99 范围内 含 这些必须是整数 Integer 值 允许前面加 0 但可选 有效值 1 01 10 99 09 无效值 0 007 100 10 5 010 到目前为止 我已经制定了以下正则
  • org/codehaus/plexus/archiver/jar/JarArchiver(不支持的major.minor版本49.0)-Maven构建错误

    下午大家 我在尝试构建项目时收到上述错误 我很确定这与使用 Java 1 6 编译的 Maven 最新更新有关 而我们尝试构建的项目是 1 4 项目 在此之前的插件工作没有问题 因此我将以下内容添加到 POM xml 文件中以尝试强制使用现
  • 虽然我的类已加载,但 Class.forName 抛出 ClassNotFoundException

    代码如下 它的作用是加载我放在主目录中的 jar 文件中的所有类 import java io File import java util jar JarFile import java util jar JarEntry import j
  • Eclipse - 安装新的 JRE (Java SE 8 1.8.0)

    我正在尝试安装 Java 8 到目前为止我所做的 安装最新版本的 Eclipse 下载并安装 Java SE 运行时环境 8http www oracle com technetwork java javase downloads jre8
  • 寻找局部最小值

    下面的代码正确地找到了数组的局部最大值 但未能找到局部最小值 我已经进行了网络搜索 以找到找到最小值的最佳方法 并且根据这些搜索 我认为我正在使用下面的正确方法 但是 在几天的时间里多次检查每一行之后 下面的代码中有一些我仍然没有看到的错误
  • 如何停止执行的 Jar 文件

    这感觉像是一个愚蠢的问题 但我似乎无法弄清楚 当我在 Windows 上运行 jar 文件时 它不会出现在任务管理器进程中 我怎样才能终止它 我已经尝试过 TASKKILL 但它对我也不起作用 On Linux ps ef grep jav
  • Karaf / Maven - 无法解决:缺少需求 osgi.wiring.package

    我无法在 Karaf 版本 3 0 1 中启动捆绑包 该包是使用 Maven 构建的并导入gson http mvnrepository com artifact com google code gson gson 2 3 1 我按照要求将
  • IntelliJ 组织导入

    IntelliJ 是否具有类似于 Eclipse 中的组织导入功能 我拥有的是一个 Java 文件 其中多个类缺少导入 例子 package com test public class Foo public Map map public J
  • 如何处理 StaleElementReferenceException

    我正在为鼠标悬停工作 我想通过使用 for 循环单击每个链接来测试所有链接的工作条件 在我的程序中 迭代进行一次 而对于下一次迭代 它不起作用并显示 StaleElementReferenceException 如果需要 请修改代码 pub
  • Hadoop NoSuchMethodError apache.commons.cli

    我在用着hadoop 2 7 2我用 IntelliJ 做了一个 MapReduce 工作 在我的工作中 我正在使用apache commons cli 1 3 1我把库放在罐子里 当我在 Hadoop 集群上使用 MapReduceJob
  • 源值 1.5 的错误已过时,将在未来版本中删除

    我使用 scala maven plugin 来编译包含 scala 和 java 代码的项目 我已经将源和目标设置为1 7 但不知道为什么maven仍然使用1 5 这是我在 pom xml 中的插件
  • 何时在 hibernate 中使用 DiscriminatorValue 注解

    在 hibernate 中使用 DiscriminatorValue 注释的最佳场景是什么以及何时 这两个链接最能帮助我理解继承概念 http docs oracle com javaee 6 tutorial doc bnbqn html

随机推荐

  • 55 openEuler搭建Mariadb数据库服务器-配置环境

    文章目录 55 openEuler搭建Mariadb数据库服务器 配置环境 55 1 关闭防火墙并取消开机自启动 55 2 修改SELINUX为disabled 55 3 创建组和用户 55 4 创建数据盘 55 4 1 方法一 在root
  • Linux下段错误信息的获取

    1 段错误是什么 一旦一个程序发生了越界访问 cpu 就会产生相应的保护 于是 段错误 segmentation fault 就出现了 所以段错误通常是指访问了不可访问的内存 2 产生段错误常见的原因 1 访问不存在的内存地址 2 访问系统
  • Arduino跨平台开发——TM1650数码管

    1 文件资料获取方式 博客文章链接 https blog yyzt site 856 html 2 开发环境搭建方式 关于如何搭建ArduinoIDE Platformio跨平台开发环境 请详看下面的文章 ArduinoIDE开发板安装 自
  • 12.14

    1 The movie is about to start 电影快开始了 2 what would you like to have 你要吃什么 3 I m going to buy some snacks 我去买点儿零食 snack sn
  • 利用keras自带影评数据集进行评价正面与否的二分类训练

    1 from keras datasets import imdb 2 from keras import layers 3 from keras import models 4 from keras import optimizers 5
  • 王学丹 确定测试原始需求

  • g2plot 水滴图,包含数据更新时渲染问题

    官网地址 https g2plot antv vision zh docs manual introduction 第一步 vue安装对应插件 网上很多 可以百度一下 npm install antv g2plot save 第二步 引入
  • Class.forName用法(详解)

    主要功能 Class forName xxx xx xx 返回的是一个类 Class forName xxx xx xx 的作用是要求JVM查找并加载指定的类 也就是说JVM会执行该类的静态代码段 下面 通过解答以下三个问题的来详细讲解下C
  • Word embedding techniques

    Word embedding techniques Word embedding techniques are methods used to represent words in a numerical format such as a
  • 文件相关操作

    1 文件相关概念 1 1文件的概念 一个文件通常就是磁盘上一段命名的存储区 但是对于操作系统来说 文件就会更复杂一些 例如 一个大文件可以存储在一些分散的区段中 或者还会包含一些操作系统可以确定其文件类型的附加数据 但是这些是操作系统 而不
  • 安卓逆向(工具篇)

    安卓逆向 1 下载工具 1 apktool 可以反编译软件的布局文件 图片等资源 方便大家学习一些很好的布局 2 dex2jar 将apk反编译成java源码 classes dex转化成jar文件 3 jd gui 查看APK中class
  • java 微信开发图片发送,微信开发?Java上传Base64图片

    class java gt import org apache commons codec binary Base64 import org apache log4j LogManager import org apache log4j L
  • 2021-07-11 layer与tier的区别(英语)

    layer与tier的区别 英语 都是层的意思 但是两个词不太一样 layer指的是多层相同的东西 比如天冷的时候盖两层被 用layer tier指的是多层不同的东西 以某种目的叠加在一起 起到一定作用 比如人的消化系统有三个层次 咀嚼破碎
  • SpringCloud集成RocketMQ实现事务消息方案

    前边的话 当前SpringCloud作为微服务开发的首选开源方案提供了完善的微服务开发技术套件 不过针对分布式领域的难题 分布式事务控制并没有成熟的方案 本篇将介绍作为柔性事务控制的优秀方案RocketMQ的使用原理和方法 通过本案例的学习
  • 升级你的GitHub终端认证方式:从密码到令牌

    升级你的GitHub终端认证方式 从密码到令牌 前言 GitHub官方在2021年8月14日进行了一次重大改变 它将终端推送代码时所需的身份认证方式从密码验证升级为使用个人访问令牌 Personal Access Token 这个改变引起了
  • 三角剖分算法(delaunay)

    开篇 在做一个Low Poly的课题 而这种低多边形的成像效果在现在设计中越来越被喜欢 其中的低多边形都是由三角形组成的 而如何自动生成这些看起来很特殊的三角形 就是本章要讨论的内容 项目地址 https github com zhiyis
  • 阿里云OSS对象存储上传文件(一)SDK安装

    因为实际项目需求 需要使用阿里云oss的对象存储来上传文件 在写代码操作之前 需要先安装SDK 编译你能使用的lib 其实前后找了不少文章 但都不太细致 所以分享一下我本人使用的经验 不代表适用所有人 仅供参考 环境是windows系统 v
  • 安装使用NVIDIA-Docker——可使用GPU的Docker容器

    参考网址 https www cnblogs com wuchangsoft p 9767074 html nvidia docker是一个可以使用GPU的docker nvidia docker是在docker上做了一层封装 通过nvid
  • 【LeetCode题解】子序列问题

    文章目录 参考资料 子序列问题模板 动态规划 一 两种思路 例题 128 最长连续序列 思路一 代码 动态规划设计 300 最长递增子序列 动态规划设计 1143 最长公共子序列 动态规划设计 516 最长回文子序列 392 判断子序列 参
  • Java发布webservice

    先附上一个webservice的视频教程 链接 https pan baidu com s 1qesv A7cp zYsL7fE5nmFw 提取码 3d6k 创建服务端 提供接口 方式一 创建一个web工程 创建一个ServiceHello