今天学习webservice,主要参考了网络上的一些文章。

1.关于原理的介绍:个人认为这篇文章写得不错了,戳这里。

2.关于demo的编写:个人认为这篇文章很简洁,也能运行成功,戳这里。

按照上面那篇文章的demo运行成功以后,我想在java web中加入一个webservice服务,供其他的java web项目调用。

1.首先,在项目中添加com.xdx.webservice包,如图所示。

2.在其中加入WetherServiceInter接口和其实现类WeatherService类。代码如下。

  1. package com.xdx.webservice;
  2.  
  3. import javax.jws.WebMethod;
  4. import javax.jws.WebService;
  5.  
  6. import com.xdx.entity.TAdmin;
  7.  
  8. @WebService
  9. public interface WeatherServiceInter {
  10. @WebMethod
  11. public String getWeatherByCityname(String name);
  12. public TAdmin getAdminById(int adminId);
  13.  
  14. }
  1. package com.xdx.webservice;
  2.  
  3. import javax.jws.WebService;
  4.  
  5. import org.springframework.web.context.ContextLoader;
  6. import org.springframework.web.context.WebApplicationContext;
  7.  
  8. import com.xdx.entity.TAdmin;
  9. import com.xdx.service.AdminService;
  10.  
  11. @WebService
  12. public class WeatherService implements WeatherServiceInter {
  13.  
  14. public String getWeatherByCityname(String name) {
  15. System.out.println(name+"天气晴朗");
  16. return name+"天气晴朗";
  17. }
  18. public TAdmin getAdminById(int adminId){
  19. WebApplicationContext webApplicationContext = ContextLoader
  20. .getCurrentWebApplicationContext();
  21. AdminService adminService=(AdminService) webApplicationContext.getBean("adminService");
  22. TAdmin admin = adminService.getAdminById(adminId);
  23. return admin;
  24. }
  25.  
  26. }

3.发布webservice服务,这边我们在web项目启动的时候发布webservice服务,建立一个filter,在filter中写入如下代码,负责启动websocket(之前的demo)和webservice。这边我们选用8085端口作为webservice的端口。

  1. package com.xdx.filter;
  2.  
  3. import java.io.IOException;
  4.  
  5. import javax.servlet.Filter;
  6. import javax.servlet.FilterChain;
  7. import javax.servlet.FilterConfig;
  8. import javax.servlet.ServletException;
  9. import javax.servlet.ServletRequest;
  10. import javax.servlet.ServletResponse;
  11. import javax.xml.ws.Endpoint;
  12.  
  13. import org.java_websocket.WebSocketImpl;
  14.  
  15. import com.xdx.webservice.WeatherService;
  16. import com.xdx.websocket.WsServer;
  17.  
  18. public class StartFilter implements Filter {
  19.  
  20. public void destroy() {
  21.  
  22. }
  23.  
  24. public void doFilter(ServletRequest arg0, ServletResponse arg1,
  25. FilterChain arg2) throws IOException, ServletException {
  26.  
  27. }
  28.  
  29. public void init(FilterConfig arg0) throws ServletException {
  30. this.startWebsocketInstantMsg();
  31. }
  32.  
  33. /**
  34. * 启动即时聊天服务
  35. */
  36. public void startWebsocketInstantMsg() {
  37. WebSocketImpl.DEBUG = false;
  38. WsServer s;
  39. s = new WsServer(8887);
  40. s.start();
  41. System.err.println("websocket启动了");
  42. //启动webservice
  43. Endpoint.publish("http://localhost:8085/ws_server/weather", new WeatherService());
  44. System.out.println("webservice启动了");
  45. }
  46. }

4.在web.xml中配置filter,配置如下。

  1. <!-- filter -->
  2. <filter>
  3. <filter-name>startFilter</filter-name>
  4. <filter-class>com.xdx.filter.StartFilter</filter-class>
  5. </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方法。

  1.     @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方法。

  1. @ResponseBody
  2. @RequestMapping(value="webserviceDemo2")
  3. public TAdmin webserviceDemo2(){
  4. WeatherServiceService factory=new WeatherServiceService();
  5. WeatherService service=factory.getWeatherServicePort();
  6. TAdmin admin=service.getAdminById(5);
  7. return admin;
  8. }

效果如下

在java项目中使用webservice的更多相关文章

  1. JAVA项目中公布WebService服务——简单实例

    1.在Java项目中公布一个WebService服务: 怎样公布? --JDK1.6中JAX-WS规范定义了怎样公布一个WebService服务. (1)用jdk1.6.0_21以后的版本号公布. ( ...

  2. java web项目(spring项目)中集成webservice ,实现对外开放接口

    什么是WebService?webService小示例 点此了解 下面进入正题: Javaweb项目(spring项目)中集成webservice ,实现对外开放接口步骤: 准备: 采用与spring ...

  3. 如何在SpringMVC项目中部署WebService服务并打包生成客户端

    场景 某SpringMVC项目原本为一个HTTP的WEB服务项目,之后想在该项目中添加WebService支持,使该项目同时提供HTTP服务和WebService服务.其中WebService服务通过 ...

  4. 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. ...

  5. java项目中build path的设置

    右键点击项目新建文件libs 添加jtds  jar包引用本地动态链接库(dll)的设置方法 配置LibraryJRE的添加和更换  Java项目中build path的设置总结,包括JRE的添加和更 ...

  6. 在Java项目中整合Scala

    Scala是一个运行在Java JVM上的面向对象的语言.它支持函数编程,在语法上比Java更加灵活,同时通过Akka库,Scala支持强大的基于Actor的多线程编程.具有这些优势,使得我最近很想在 ...

  7. XML在JAVA项目中的作用

    java项目中,xml文件一般都是用来存储一些配置信息 一般的编程, 多数用来存储配置信息 . 拿JDBC来说,可以把数据库连接字符串写到xml,如果要修改数据源,只需要改xml就可以了,没必要再去重 ...

  8. ckeditor编辑器在java项目中配置

    一.基本使用: 1.所需文件架包 A. Ckeditor基本文件包,比如:ckeditor_3.6.2.zip 下载地址:http://ckeditor.com/download 2.配置使用 A.将 ...

  9. redis在java项目中的使用

    在上一篇文章中已经讲了redis的spring配置,这篇将会描述redis在java项目中的使用. redis存储形式都是key-value(键值对),按照存储的内容分为两种,一种是存简单数据,即数字 ...

随机推荐

  1. 为JS内置对象添加常用方法

    1.字符串全部替换: String.prototype.replaceAll = function(s1,s2){ return this.replace(new RegExp(s1,"gm ...

  2. Python之argparse模块

    argparse 命令行参数解析模块,原optparse已经停止开发,建议替换为argparse 在python2.7后默认加入 parser ArgumentParser默认解析来源sys.argv ...

  3. ubuntu16.04安装交叉编译链

    我使用的是arm-linux-gcc 4.3.2版本,其他版本类似,附上下载链接: https://pan.baidu.com/s/1geUOfab 密码: frzy 首先我的安装包是tar.bz2的 ...

  4. Python 动态导入模块

    动态导入模块 目录结构: zhangsandeMacBook-Air:1110 zhangsan$ tree . . ├── lib │   └── aa.py ├── test1.py lib目录下 ...

  5. MD5摘要算法简析

    1 MD5简介 1.1  概述 MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主 ...

  6. css一些简单的例子

    1.http协议 一:HTTP协议:hypertext transport protocol(超文本传输协议) 特点: 1.请求与响应 2.无状态的协议 请求协议: 请求首行: 请求头信息: Acce ...

  7. 利用python web框架django实现py-faster-rcnn demo实例

    操作系统.编程环境及其他: window7  cpu  python2.7  pycharm5.0  django1.8x 说明:本blog是上一篇blog(http://www.cnblogs.co ...

  8. MongoDB优化与一些需要注意的细节

    这里总结下这段时间使用mongo的心得,列出了几个需要注意的地方. 1. 系统参数及mongo参数设置 mongo参数主要是storageEngine和directoryperdb,这两个参数一开始不 ...

  9. IntelliJ IDEA(三) :常用快捷键

    说IDEA对新手来说难,可能其中一个原因就是快捷键组合多而且复杂但是它也很全,基本所有功能都可以通过快捷键来完成,可以这么说,如果你掌握了所有IDEA的快捷键使用,那么你完全可以丢掉鼠标,而且不影响开 ...

  10. Laravel 框架安装

    Composer 在命令行执行 create-project 来安装 Laravel:就是下面这一句话就OK了!composer create-project laravel/laravel --pr ...