在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 {
- @WebMethod
- public 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启动了");
- //启动webservice
- Endpoint.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;
- }
效果如下
在java项目中使用webservice的更多相关文章
- JAVA项目中公布WebService服务——简单实例
1.在Java项目中公布一个WebService服务: 怎样公布? --JDK1.6中JAX-WS规范定义了怎样公布一个WebService服务. (1)用jdk1.6.0_21以后的版本号公布. ( ...
- java web项目(spring项目)中集成webservice ,实现对外开放接口
什么是WebService?webService小示例 点此了解 下面进入正题: Javaweb项目(spring项目)中集成webservice ,实现对外开放接口步骤: 准备: 采用与spring ...
- 如何在SpringMVC项目中部署WebService服务并打包生成客户端
场景 某SpringMVC项目原本为一个HTTP的WEB服务项目,之后想在该项目中添加WebService支持,使该项目同时提供HTTP服务和WebService服务.其中WebService服务通过 ...
- eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错? java.lang.ClassNotFoundException: com.branchitech.app.startup.AppStartupContextListener java.lang.ClassN
eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错?java. ...
- java项目中build path的设置
右键点击项目新建文件libs 添加jtds jar包引用本地动态链接库(dll)的设置方法 配置LibraryJRE的添加和更换 Java项目中build path的设置总结,包括JRE的添加和更 ...
- 在Java项目中整合Scala
Scala是一个运行在Java JVM上的面向对象的语言.它支持函数编程,在语法上比Java更加灵活,同时通过Akka库,Scala支持强大的基于Actor的多线程编程.具有这些优势,使得我最近很想在 ...
- XML在JAVA项目中的作用
java项目中,xml文件一般都是用来存储一些配置信息 一般的编程, 多数用来存储配置信息 . 拿JDBC来说,可以把数据库连接字符串写到xml,如果要修改数据源,只需要改xml就可以了,没必要再去重 ...
- ckeditor编辑器在java项目中配置
一.基本使用: 1.所需文件架包 A. Ckeditor基本文件包,比如:ckeditor_3.6.2.zip 下载地址:http://ckeditor.com/download 2.配置使用 A.将 ...
- redis在java项目中的使用
在上一篇文章中已经讲了redis的spring配置,这篇将会描述redis在java项目中的使用. redis存储形式都是key-value(键值对),按照存储的内容分为两种,一种是存简单数据,即数字 ...
随机推荐
- 为JS内置对象添加常用方法
1.字符串全部替换: String.prototype.replaceAll = function(s1,s2){ return this.replace(new RegExp(s1,"gm ...
- Python之argparse模块
argparse 命令行参数解析模块,原optparse已经停止开发,建议替换为argparse 在python2.7后默认加入 parser ArgumentParser默认解析来源sys.argv ...
- ubuntu16.04安装交叉编译链
我使用的是arm-linux-gcc 4.3.2版本,其他版本类似,附上下载链接: https://pan.baidu.com/s/1geUOfab 密码: frzy 首先我的安装包是tar.bz2的 ...
- Python 动态导入模块
动态导入模块 目录结构: zhangsandeMacBook-Air:1110 zhangsan$ tree . . ├── lib │ └── aa.py ├── test1.py lib目录下 ...
- MD5摘要算法简析
1 MD5简介 1.1 概述 MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主 ...
- css一些简单的例子
1.http协议 一:HTTP协议:hypertext transport protocol(超文本传输协议) 特点: 1.请求与响应 2.无状态的协议 请求协议: 请求首行: 请求头信息: Acce ...
- 利用python web框架django实现py-faster-rcnn demo实例
操作系统.编程环境及其他: window7 cpu python2.7 pycharm5.0 django1.8x 说明:本blog是上一篇blog(http://www.cnblogs.co ...
- MongoDB优化与一些需要注意的细节
这里总结下这段时间使用mongo的心得,列出了几个需要注意的地方. 1. 系统参数及mongo参数设置 mongo参数主要是storageEngine和directoryperdb,这两个参数一开始不 ...
- IntelliJ IDEA(三) :常用快捷键
说IDEA对新手来说难,可能其中一个原因就是快捷键组合多而且复杂但是它也很全,基本所有功能都可以通过快捷键来完成,可以这么说,如果你掌握了所有IDEA的快捷键使用,那么你完全可以丢掉鼠标,而且不影响开 ...
- Laravel 框架安装
Composer 在命令行执行 create-project 来安装 Laravel:就是下面这一句话就OK了!composer create-project laravel/laravel --pr ...