java工程webservice的应用案例
在java项目中使用webservice
今天学习webservice,主要参考了网络上的一些文章。
1.关于原理的介绍:个人认为这篇文章写得不错了,戳这里。
2.关于demo的编写:个人认为这篇文章很简洁,也能运行成功,戳这里。
按照上面那篇文章的demo运行成功以后,我想在java web中加入一个webservice服务,供其他的java web项目调用。
1.首先,在项目中添加com.xdx.webservice包,如图所示。
2.在其中加入WetherServiceInter接口和其实现类WeatherService类。代码如下。
package com.xdx.webservice;import javax.jws.WebMethod;
import javax.jws.WebService;import com.xdx.entity.TAdmin;@WebService
public interface WeatherServiceInter {@WebMethodpublic String getWeatherByCityname(String name);public TAdmin getAdminById(int adminId);}
package com.xdx.webservice;import javax.jws.WebService;import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;import com.xdx.entity.TAdmin;
import com.xdx.service.AdminService;@WebService
public class WeatherService implements WeatherServiceInter {public String getWeatherByCityname(String name) {System.out.println(name+"天气晴朗");return name+"天气晴朗";}public TAdmin getAdminById(int adminId){WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();AdminService adminService=(AdminService) webApplicationContext.getBean("adminService");TAdmin admin = adminService.getAdminById(adminId);return admin;}}
3.发布webservice服务,这边我们在web项目启动的时候发布webservice服务,建立一个filter,在filter中写入如下代码,负责启动websocket(之前的demo)和webservice。这边我们选用8085端口作为webservice的端口。
package com.xdx.filter;import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.xml.ws.Endpoint;import org.java_websocket.WebSocketImpl;import com.xdx.webservice.WeatherService;
import com.xdx.websocket.WsServer;public class StartFilter implements Filter {public void destroy() {}public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {}public void init(FilterConfig arg0) throws ServletException {this.startWebsocketInstantMsg();}/*** 启动即时聊天服务*/public void startWebsocketInstantMsg() {WebSocketImpl.DEBUG = false;WsServer s;s = new WsServer(8887);s.start();System.err.println("websocket启动了");//启动webserviceEndpoint.publish("http://localhost:8085/ws_server/weather", new WeatherService());System.out.println("webservice启动了");}
}
4.在web.xml中配置filter,配置如下。
<!-- filter --><filter><filter-name>startFilter</filter-name><filter-class>com.xdx.filter.StartFilter</filter-class></filter>
5.运行项目,在浏览器输入http://localhost:8085/ws_server/weather?wsdl 测试一下,会出现如下的xml文件。
说明已经发布成功了。
6.接下来我们在另外一个web项目(名为m_gecko)中来调用该webservice服务里面的方法。首先,通过cmd进入m_gecko项目的src/main/java目录下,如图所示,输入wsimport -keep http://localhost:8085/ws_server/weather?wsdl
出现上述提示,说明已经在m_gecko项目中生成了webservice的客户端代码,我们刷新一下m_gecko项目看看。果然是的。
7.在m_gecko项目中我们来写调用webservice服务的方法。首先我们来调用getWeatherByCityname方法。
@ResponseBody@RequestMapping(value="webserviceDemo1", produces = "text/html; charset=utf-8")public String webserviceDemo1(){WeatherServiceService factory=new WeatherServiceService();WeatherService service=factory.getWeatherServicePort();String result=service.getWeatherByCityname("厦门");return result;}
运行m_gecko项目(同时也要运行webservice服务所在的项目warrior项目),在浏览器中输入http://localhost:8080/m_gecko/webserviceDemo1。
然后再来调用getAdminById方法。
@ResponseBody@RequestMapping(value="webserviceDemo2")public TAdmin webserviceDemo2(){WeatherServiceService factory=new WeatherServiceService();WeatherService service=factory.getWeatherServicePort();TAdmin admin=service.getAdminById(5);return admin;}
效果如下
相关文章:

Vijos1683 有根树的同构问题
题目大意: 给出一堆树,求同构(拓扑结构相同)树的集合思路: 一开始写了个前序求置换序列,然后对比后序是否相等,但wa了,还需要对子树进行排序输出其dfs序,但是直接输出按节点多少排序的序列太复杂,于是将一个节点的dfs抽象成\(()\),于是对树\(1 -> 2 , 1 -> 3\)输出的dfs序…

3D广告建模-C4D Octane渲染视频教程
3D广告建模-C4D Octane渲染视频教程 时长4h 58m 960X540 MP4 大小解压后:833M 语言:英语中英文字幕(根据原英文字幕机译更准确) 信息: 云桥网络 平台 huo取 教程 C4D中Octane渲染的三维广告建模视频教程 包含字幕 了解如何在…

vue实例没有挂载到html上,vue 源码学习 - 实例挂载
前言在学习vue源码之前需要先了解源码目录设计(了解各个模块的功能)丶Flow语法。src├── compiler # 把模板解析成 ast 语法树,ast 语法树优化,代码生成等功能。├── core # 核心代码 Vue.js 的灵魂├── platforms # 不同平台的支持 web 和 weex├…

为何Redis要比Memcached好用(转)
转载链接:http://blog.csdn.net/renfufei/article/details/40598889 GitHub版本地址: https://github.com/cncounter/translation/blob/master/tiemao_2014/Redis_beats_Memcached/Redis_beats_Memcached.md 副标题: Redis是新兴的通用存储系统,而Memcached仍有其适…

2022-2028年中国数字化制造产业研究及前瞻分析报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国数字化制造行业市场行业相关概述、中国数字化制造行业市场行业运行环境、分析了中国数字化…

转载知乎上的一篇:“ 面向对象编程的弊端是什么?”
2019独角兽企业重金招聘Python工程师标准>>> 弊端是,没有人还记得面向对象原本要解决的问题是什么。1、面向对象原本要解决什么(或者说有什么优良特性)似乎很简单,但实际又很不简单:面向对象三要素封装、继…

Windows Azure 如何学习Azure
通过上一篇博文可以得知,Azure其实是个平台,上面跑的服务五花八门,可以相互分开使用,同时也可以相互结合。 那我们应该如何来学习Azure呢? 其实有很多种选择,正所谓条条大路通罗马, 官方的training kit 提…

最全面的Unity游戏开发指南视频教程 第2卷
最全面的Unity游戏开发指南视频教程 第2卷 流派:电子学习| MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz 语言:英语中英文字幕(根据原英文字幕机译更准确)|大小解压后:4.2 GB |时长:9h 24m 含项目文件 Unity游戏开发…

IOS面试题(二)
50. 谈谈对Block 的理解?并写出一个使用Block执行UIVew动画? 答:Block是可以获取其他函数局部变量的匿名函数,其不但方便开发,并且可以大幅提高应用的执行效率(多核心CPU可直接处理Block指令) 1 2 3 4 5 [UIView transitionWithView:self.…

辽宁省计算机专业A类,辽宁省2008年中职升高职招生考试计算机专业综合试题
辽宁省2008年中职升高职招生考试计算机及应用专业综合课试卷第一部分 必答题(200分)一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案。每小题4分,共44分)1、在数据通信中,将模拟信号变换为数字信号的过程称为A 编码 B解码 C解调…

MyBatis的插入后获得主键的方式
需求: 使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值。 方法: 在mapper中指定keyProperty属性,示例如下: <insert id"insertUser" useGeneratedKeys"true" keyP…

JAVA 中 13 种锁的实现方式
分布式系统时代,线程并发,资源抢占,慢慢变得很重要。那么常见的锁都有哪些?

String的Intern()方法,详解字符串常量池!
字符串拼接最好使用StringBuilder调用append来拼接。使用加号“+”拼接,会new一个StringBuilder,并且在最后调用toString方法时还会new String()。内存中由于创建了较多的StringBuilder和String对象,还有一方面是内存占用,调用GC还会额外花费时间。所以,字符串拼接直接使用StringBuilder会大大提高性能,尤其是多个字符串拼接。

硬盘盘符双击无法打开,只能右键打开(解决方法)(转载)
开始---运行---cmd,例如D盘,就输入 D: dir /a (没有参数A是看不到的,A是显示所有的意思) 此时你会发现一个autorun.inf文件 attrib autorun.inf -s -h -r 去掉autorun.inf文件的系统、只读、隐藏属性࿰…

Unity 2021创建2D休闲点击器游戏视频教程
Unity 2021创建2D休闲点击器游戏视频教程 Learn how to create a 2D Idle Clicker Game in Unity 2021 了解如何在Unity 2021中创建2D闲置点击器游戏 MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz,2 Ch 语言:英语中英文字幕&…

html实现pdf预览打印机,Pdf操作(HTML转PDF,PDF直接网页连接打印机)
Pdf导出的操作:引用TuesPechkin.dll和TuesPechkin.Wkhtmltox.AnyCPU.dll程序集,新建PDF静态类 PDFConverter,在web.config配置保存dir/// ///pdf转换/// public static classPdfConvert {/// ///staticDeploymentPath/// private static read…

CUDA编程遇到的问题
1、总喜欢在core 代码中,访问device memory。 然后排错很久!!!!! 2、第一次cudaMalloc() 耗时很久 3、cudaMalloc对于大数据也耗时很久 4、一致内存使用错误,不知道为什么!ÿ…

2022-2028年中国数字化档案加工行业市场深度分析及发展策略分析报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国数字化档案加工行业市场行业相关概述、中国数字化档案加工行业市场行业运行环境、分析了中…

eclipse打开处于无响应状态解决办法
eclipse打开后处于无响应状态,变没有了反映,并且cup占用率为0。应该是非正常关机导致eclipse工作区的文件状态错误导致。 解决方案:在工作区目录中,有一个.metadata目录,里面是工作区及各插件的信息,删除此…

Unity创建在线多人游戏视频教程
Unity创建在线多人游戏视频教程 Learn To Create An Online Multiplayer Game In Unity 学会在Unity中创建在线多人游戏 MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz,2 Ch 语言:英语中英文字幕(根据原英文字幕机译更…

《需求分析》读后感之二
项目的目标是系统的业务需求。在很多情况下,涉众可以清晰地表达出系统的业务需求,这时可以通过安排和涉众的面谈来明确项目的动机。但也有很多情况下,涉众无法表达他们的业务需求,或者表达的业务需求不够清晰。因此,要…

统计学 计算机论文,统计学专业论文范文
1实验教学软件选择 目前流行的统计软件有SAS、SPSS、Statistica、EViews、Excel等,但上述软件的特点和功能优势各不相同,所以要根据学生的专业特点和教学要求选用不同的统计软件或者软件组合。但是由于专业统计软...2019-09-061非统计专业统计学教学过程…

JVM年轻代,老年代,永久代详解
秉承不重复造轮子的原则,查看印象笔记分享连接↓↓↓↓ 传送门:JVM年轻代,老年代,永久代详解 速读摘要 最近被问到了这个问题,解释的不是很清晰,有一些概念略微模糊,在此进行整理和记录&…

html中#include file的使用方法
有两个文件a.htm和b.htm,在同一文件夹下a.htm内容例如以下 <!-- #include file"b.htm" --> b.htm内容例如以下 今天:雨 31 ℃~26 ℃ <br />明天:雷阵雨 33 ℃~27 ℃ 直接在浏览器中打开a&#…

Linux服务之Samba服务篇
Samba服务 桑巴Smb是基于cs架构 作用:用于跨平台进行文件共享 优点:兼容性好,较为安全(具备身份验证) 缺点:仅限内网环境使用 应用:一般在办公环境下使用 rz 也是一种可以在Windows和Linux操作系统之间进行…

ue4商城素材 Cyberpunk City / Recife Environment 赛博朋克城市场景
ue4商城素材 Cyberpunk City / Recife Environment 赛博朋克城市场景 ue4商城素材 Cyberpunk City / Recife Environment 赛博朋克城市场景 ue4商城素材 Cyberpunk City / Recife Environment 赛博朋克城市场景 Unreal Engine虚幻游戏引擎素材资源 Unreal Engine Marketplace …

微型计算机系统外文,微型计算机控系统(单片机控制系统) 毕业论文外文翻译.doc...
微型计算机控系统(单片机控制系统) 毕业论文外文翻译英语翻译Microcontroller reset is to make the CPU and other system features are in a defined initial state, and from this state to work, reset PC 0000H, the microcontroller from the first - a unit to take co…

应用于cookie
将封装好的cookie函数 使用好cookie JavaScript代码 var aAdocument.getElementsByTagName(a); //使用var indexgetCookie(page_index);if(index){tab(index);}for(var i0; i<aA.length; i){(function(index){aA[i].onclickfunction(){tab(index); //设置一个cookiese…

2022-2028年中国数字电视产业投资分析及前景预测报告(全卷)
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国数字电视行业市场行业相关概述、中国数字电视行业市场行业运行环境、分析了中国数字电视行…

分形之闵可夫斯基(Minkowski)
与上一篇文章分形之正方形折线相似,闵可夫斯基分形也是分形出正方体,不同之处是它分出了两个正方体。 核心代码: static void FractalMinkowski(const Vector3& vStart, const Vector3& vEnd, Vector3* pVertices) {Vector3 vSub vEnd - vStart…