WebService实例

2023-05-16

一.发布webservice服务

1.编写服务接口

package com.nari.test.webservice;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
/**
 * 基于soap协议(http+xml)的服务
 */
@WebService
(
name = "Login",// 定义Port名称
serviceName = "WeatherInterface", // 修改WebService服务名称
targetNamespace = "http://webservice.test.nari.com/" // 定义命名空间,默认为倒置的包名
)
public interface WeatherInterface {
	
	// 提供一个对外公开的服务
	@WebMethod(operationName = "queryWeather")
	// 修改方法名
    public String queryWeather(@WebParam(name = "cityName")String cityName);
}

2.服务实现类

package com.nari.test.webservice;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
/**
 * 服务实现类
 */
@WebService
(
//endpointInterface = "com.nari.test.webservice.WeatherInterface",
name = "Login",// 定义Port名称
serviceName = "WeatherInterface", // 修改WebService服务名称
targetNamespace = "http://webservice.test.nari.com/" // 定义命名空间,默认为倒置的包名
//服务实现类和接口的注解要一样全
)
public class WeatherInterfaceImpl implements WeatherInterface {
	
	@WebMethod(operationName = "queryWeather")
    public String queryWeather(@WebParam(name = "cityName")String cityName) {
        System.out.println("城市:"+cityName);
        String weather="小雨";    
        return weather;
    }

}

3.发布服务

package com.nari.test.webservice;
import javax.xml.ws.Endpoint;

//3.  第三步:发布服务,Endpoint类发布服务,publish方法,两个参数:1.服务地址;2.服务实现类 

public class WeatherServer {
    public static void main(String[] args) {
        Endpoint.publish("http://127.0.0.1:9998/weather", new WeatherInterfaceImpl());
    }
}

4.浏览器查看是否成功

http://127.0.0.1:9998/weather?wsdl

二.客户端的调取方式

1.axis方式调取

package com.demo1.test;
import java.net.MalformedURLException;
import java.net.URL;
import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;

//axis调用方式
public class WsClient2 {
	
     /**
	 * 跨平台调用Web Service出现
	 *  faultString: 服务器未能识别 HTTP 头 SOAPAction 的值: 
	 * JAX-WS规范不需要SoapAction,但是.NET需要,所以产生了这个错误。 
	 * options.setAction("目标的TargetNameSpace"+"调用的方法名");
	 */
	public static void main(String[] args) {
		String url = "http://127.0.0.1:9998/weather?wsdl";
		Service service = new Service();
		try {
			Call call = (Call) service.createCall();
			call.setTargetEndpointAddress(new URL(url));
			
			// WSDL里面描述的接口名称(要调用的方法)
			call.setOperationName(new QName("http://webservice.test.nari.com/","queryWeather"));
            call.setEncodingStyle("utf-8");//设置传入服务端的字符集格式如utf-8等
            
			//跨平台调用加上这个
		    call.setUseSOAPAction(true);
//		    call.setSOAPActionURI("http://webservice.test.nari.com/queryWeather");
		    
			// 接口方法的参数名, 参数类型,参数模式 IN(输入), OUT(输出) or INOUT(输入输出)
			call.addParameter("cityName", XMLType.XSD_STRING, ParameterMode.IN);
			call.setReturnType(XMLType.XSD_STRING);
			
			// 设置方法中参数的值
			Object result = call.invoke(new Object[] { "南京"});

			System.out.println(result.toString());
		} catch (ServiceException | RemoteException | MalformedURLException e) {
			e.printStackTrace();
		}
	}

}

 2.cxf类库调用

package com.demo1.test;
import javax.xml.namespace.QName;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;

//cxf类库调用
public class WsClient1 {

	public static void main(String[] args) throws Exception {
		// 采用动态工厂方式 不需要指定服务接口
		JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
		Client client = dcf.createClient("http://127.0.0.1:9998/weather?wsdl");
		QName qName = new QName("http://webservice.test.nari.com/", "queryWeather");
		Object[] result = client.invoke(qName, new Object[] { "南京" });
		System.out.println(result[0]);
	}

}

 

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

WebService实例 的相关文章

  • C# 调用WebService的方式汇总

    C 调用WebService的方式汇总 方式一 xff1a 根据提供的webservice地址 xff0c 用VS自带工具生成cs文件 xff0c 添加到项目中使用即可 方式二 xff1a 根据webservice地址 xff0c 动态在项
  • 使用RESTful风格api命名接口时,GET方法怎么传递多个参数

    点击上方 码农突围 马上关注 这里是码农充电第一站 回复 666 获取一份专属大礼包 真爱 请设置 星标 或点个 在看 在使用RESTful风格不同于普通借口命名的一点是 它规范使用 来表示资源之间的层级关系 对于普通形式命名的接口 假设需
  • WebService+Rxjava

    最近公司有了个新项目 是之前有个项目需要迭代 由于这个项目比较老 所以用的是WebService的接口 我之前都是写的是restful的接口 没有接触过WebServiece 看到之前的代码我也有点闷逼 于是就花了几天去研究了下WebSer
  • 程序员版孔乙己

    互联网的格局 是和别处不同的 都是格子衫 稀疏的头发 双肩包 男 写代码的人 傍午傍晚散了工 每每三两人 背着手 沿着软件园溜达一圈 倘肯花点钱 便还会走到星巴克 买一杯咖啡 那样便能再多摸几分钟的鱼 我从十九岁起 便在软件园的星巴克打工
  • Webservice实践(五)基于CXF的服务端开发

    本节将实践目前最流行的第二种web service 发布和调试框架 CXF Apache CXF 是一个开放源代码框架 提供了用于方便地构建和开发 Web 服务的可靠基础架构 它允许创建高性能和可扩展的服务 您可以将这样的服务部署在 Tom
  • WebService 与 SOAP、WSDL、UDDI

    什么是WebService Web Services 是一种基于组件的软件平台 是面向服务的Internet 应用 Web Services 是应用于Internet 的 而不是限于局域网或试验环境 这要求提出的Web Services 框
  • LeetCode 刷题 14. 最长公共前缀

    LeetCode 刷题 14 最长公共前缀 题目链接点此 class Solution def longestCommonPrefix self strs List str gt str strs sort re for i j in zi
  • api接口、RPC、WebService分别解决什么问题?

    api接口 RPC WebService分别解决什么问题
  • java调用 Myeclipse用jax-ws创建的webservice具体方法(三)

    首先需要下载所需的jar包 webservices所需全部jar包下载 点击打开链接 直接上代码 import java net MalformedURLException import java net URL import java r
  • Java HTTP方式请求ASP.NET(C#)WebService

    package com ideamov wap util import java io ByteArrayOutputStream import java io IOException import java io InputStream
  • v.douyin.com生成制作抖音缩短口令网址php接口方法

    v douyin com是抖音官方的接口 可以制作头条 火山 抖音短视频等官方域名的任意生成接口 可以推广抖音号 第三方网址 头条文章等 效果非常号 这里记录下api接口 纯技术php生成 具体规则可以去抖音的开放平台去申请对应接口 这里用
  • [亲测可用]springBoot调用对方webService接口的几种方法示例

    目录 前言 一 需要用到的maven 二 如何调用webservice接口 调用方法一 调用方法二 myEclipse生成的例子 idea生成的例子 前言 平常我们开发调用接口一般会用到几种数据格式 比如有restful的 这个是目前最流行
  • AXIS2+Myeclipse 开发 Webservices

    一 准备工作 1 安装JDK 我使用的是版本是JDK1 6 下载地址 http java sun com javase downloads index jsp 下载那个rpm的bin包 即jdk 6u1 linux i586 rpm bin
  • Apache CXF 在 WebLogic 9.2 上的问题定位分析及权宜之计

    Apache CXF 在 WebLogic 9 2 上的问题定位分析及权宜之计 本文关键词 技术 WebLogic Apache 中间件 http yulimin javaeye com blog 129015 同样的程序在 Tomcat
  • java调用webservice接口 几种方法

    webservice的 发布一般都是使用WSDL web service descriptive language 文件的样式来发布的 在WSDL文件里面 包含这个webservice暴露在外面可供使用的接口 今天搜索到了非常好的 webs
  • CXF开发WebService客户端

    开发必备 1 apache cxf 2 2 6 2 spring ws 1 5 8 3 eclipse jee galileo SR1 win32 开发步骤 一 新建一个普通的java工程 名字叫WebService CXF Client
  • WebService 四种发布方式总结

    1 CXF方式 CXF与spring搭建webservice是目前最流行的方式 但是传闻cxf与jdk1 5有些不兼容 我没有遇到过 我遇到的问题是cxf与was6 1 1不兼容 表现在cxf必须的jar包 wsdl4j 1 6 2 jar
  • 【转】开发基于ASP.NET WebService的图片验证码服务

    原文地址 http www webjx com htmldata 2006 01 21 1137824356 html 最近 工作中接到一项任务 开发一个页面验证码功能 查阅了一些网上的资料 并结合以前的绘图方面的知识 实现了如下的解决方案
  • SAP与 WebService接口的配置与调用

    SAP 能通过设置WebService与外部的webservice服务连接 1 进入事务 SE80 选择 Package 指定保存的开发包 如图 创建一个Enterprise Service 2 在弹出的下一个窗口中选择 URL HTTP
  • Eclipse+webservice简单实例搭建

    文章作为学习笔记和分享用 准备工作 下载安装eclipse和axis2 1 5 4 bin zip 最新版本的搭建有问题就选择了此版本 下载本地找一个目录解压 1 指定axis2路径 Window gt Preferences gt Web

随机推荐

  • 双向环形链表的C++增删改查完整实现

    tags C 43 43 DSA 写在前面 最后写一下双向循环链表吧 跟前面的没啥太大区别 注意取余操作以及循环跳出的条件 代码 GitHub 节点类 链表类 节点类 和双向链表一模一样 span class token keyword c
  • 牛客网ACM模式输入输出11道题目的C++解答(C标准IO版)

    tags C 43 43 Interview 写在前面 之前写过关于牛客网的输入输出的题目 但是是用C 43 43 的标准IO写的 虽然方便 但是据说速度会很慢 这里还是再用C重写一遍 主要用到了scanf和printf 地址 牛客竞赛 A
  • 面试题: C++类内静态成员必须在类外初始化吗? --分析与示例

    tags C 43 43 OOP 写在前面 最近看到了这样一个题 静态数据成员定义之后 xff0c 必须在类外进行初始化 看完了Effective系列之后 我会给出答案 错误 为什么呢 下面来深入分析一下 非常量静态数据成员 看下面这个例子
  • C++字符串+和push_back创建字符串的性能比较

    tags C 43 43 String 写在前面 刷力扣 415 字符串相加 时候发现这样一个现象 使用 s1 span class token operator 61 span span class token generic funct
  • C++并发编程实战笔记(一)线程概念与基本控制

    tags C 43 43 Concurrency 写在前面 在C 43 43 中实现多线程还是很容易的 不像C的pthreads接口 下面来总结一下C 43 43 多线程的一些基本操作 包括线程的创建 合并 分离 获取ID等操作 主要参考了
  • 差分数组C++实现与力扣题目总结

    tags DSA C 43 43 LeetCode 写在前面 总结一下经典的差分数组方法 华为机试刚考了 思路很简单 但是没遇到的话想写出来还是有点难度的 参考了 labuladong 的博客 里面的代码是 Java 实现的 这里用 C 4
  • 拓扑排序的C++实现

    tags C 43 43 DSA Sort GT 写在前面 写一下有向无环图 DAG Directed Acyclic Graph 上的拓扑排序 废话不多说了 介绍部分大家可以参考算法导论或者 oi wiki https oi wiki o
  • Windows上使用winedt提示系统找不到文件的情况分析+texlive安装与配置

    tags LaTeX Debug 问题 最近有同学问我在 Windows 上使用 WinEdt 这款编辑器为什么会提示系统找不到文件 我搜索一下发现大概率是 TeX L i v e
  • LaTeX常见错误与常用Debug方法总结

    tags LaTeX Debug 前言 在LaTeX中 常常会出现很多意想不到的错误 我一开始学习的时候 就常常被这种看似玄学的错误整的焦头烂额 常常是打开一堆CSDN界面各处翻找而没有一个合适的解决方案 之后在不断的使用和摸索中 我对于
  • SQL中的七种关联代数与额外关联代数总结

    tags SQL 写在前面 总结一下 cmu15445 第一节课的内容 前面的可以不听 主要是 40 分钟往后的内容 视频 01 Relational Model amp Relational Algebra CMU Intro to Da
  • 如何恢复MAC苹果电脑系统数据文件恢复详细教程

    Mac电脑也可以使用shift加delete进行文件的永久删除 xff0c 因为这样不仅方便快速 xff0c 还能够不占回收站的内存 但是如果你不小心永久删除了重要的数据 xff0c 也就意味着不能从回收站还原了 xff0c 该怎么办呢 x
  • 快速解决 MacOS 启动台程序删除之后图标仍存在显示问号的问题

    解决 第一个方案是更新 sqlite 数据库 但是这个方案会改动启动台图标的顺序 还是不推荐的 第二个方案最近摸索出来的 直接把图标拖拽到废纸篓即可 怒赞
  • Jekyll博客中添加分类与多目录存放博客的方法

    categories Frontend tags Frontend HTML 写在前面 最近发现一个问题 博客数量越来越多了 都放在 posts下实在是有点不方便 于是想着分个类 Google 了一圈 找到了一篇不错的博客 如下 Jekyl
  • 推荐三本wpf的书

    1 葵花宝典WPF 2 WPF深入浅出 3 WPF编程宝典 个人粗略浏览了一遍 xff0c 第二本收获比较多 xff0c 第三本比较全面 xff0c 第一本相对来说没那么枯燥 xff0c 前两本我有pfd的资源文件 xff0c 需要的留言我
  • C++实现A钱买A鸡问题

    总时间限制 10000ms 单个测试点时间限制 1000ms 内存限制 131072kB 描述 A钱买A鸡 的问题 xff1a 3文钱可以买1只公鸡 xff0c 2文钱可以买1只母鸡 xff0c 1文钱可以买3只小鸡 xff0c 要用A文钱
  • equals 和 hashCode 的区别

    1 equals 和 hashCode 的区别 equals 和 hashcode 这两个方法都是从 Object 类中继承过来的 hashCode xff1a 计算出对象实例的哈希码 xff0c 并返回哈希码 xff0c 又称为散列函数
  • (踩坑)windows下的linux子系统迁移至非系统盘

    踩坑如下 xff1a 先在微软应用市场下载linux然后安装完 xff0c 再做目录链接会出现linux启动失败问题 先做目录链接会导致应用市场下载linux失败 xff0c 如下图 xff1a 正确操作如下 xff1a 注意两个路径 xf
  • 2、Zabbix 添加主机和监控项

    一 修改用户密码 1 zabbix默认会监控zabbix server本机 xff0c 如果不想监控可以在 xff08 配置 主机 xff09 里禁用掉 2 zabbix的用户都属于某个用户组 xff0c 而权限的控制都是通过用户组的 xf
  • Ubuntu进入文件夹路径及查看文件夹目录

    在Ubuntu中 xff0c 我们进入了一个文件夹 xff0c 如何看这个文件夹此时的路径呢 xff1f 通过Ctrl 43 L 可以看到路径 xff0c 然后Ctrl 43 C复制路径 再通过命令行中cd 路径 进入刚刚的文件夹 如何查看
  • WebService实例

    一 发布webservice服务 1 编写服务接口 package com nari test webservice import javax jws WebMethod import javax jws WebParam import j