今天学习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的更多相关文章

  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. codefoces384A-Mafia心得

    题目描述:One day n friends gathered together to play "Mafia". During each round of the game so ...

  2. gcc调试 学习1

    gdb进入调试 b 6 在第6行设置断点 d 2 删除num为2的断点 info b 查看断点 run 运行 n 执行到断点1 s 如果下一条是函数就进入函数 n 继续执行 print i  输出i的 ...

  3. Grafana+Prometheus系统监控之MySql

    架构 grafana和prometheus之前安装配置过,见:Grafana+Prometheus打造全方位立体监控系统 MySql安装 MySql的地位和重要性就不言而喻了,作为开源产品深受广大中小 ...

  4. concurrent.futures

    concurrent.futures concurrent.futures提供高层次的接口,用来实现异步调用. 这个异步执行可以使用threads(ThreadPoolExecutor)或者proce ...

  5. springmvc跨域+token验证(app后台框架搭建二)

    这是app后台框架搭建的第二课,主要针对app应用是跨域的运用,讲解怎么配置跨域服务:其次讲解怎么进行token验证,通过拦截器设置token验证和把token设置到http报文中.主要有如下:   ...

  6. StackExchange.Redis学习笔记(三)

    这一章主要写一些StackExchange.Redis的配置及不太经常用到的函数 数据库连接 下面是我的连接字符串,里面指定了地址,密码,及默认的数据库 Redis启动后默认会分成0-15个数据库,不 ...

  7. 发现大量的TIME_WAIT解决办法 -- 修改内核参数

    今天早上一上班,有同事就反映公司好几个网站都打不开,登陆数据库 服务器(windows),发现很卡,于是重启了下服务器,进入系统后,没过一会问题依旧,查看了下系统进程,发现mysql占用率达到99%, ...

  8. VMWare安装Centos 6.9

    VMWare下Centos 6.9安装教程,记录如下 1.新建虚拟机 (1)点击文件-->新建虚拟机 (2)选择 自定义(高级)-->下一步 (3)选择Workstation 12.0-- ...

  9. ip地址与整数相互转换

    一.将ip地址转成long数值 将IP地址转化成整数的方法如下: 1.通过String的split方法按.分隔得到4个长度的数组 2.通过左移位操作(<<)给每一段的数字加权,第一段的权为 ...

  10. Ubuntu 17.04 安装

    不忘初心,方得始终. 今天听别人说17.04发布了,我是开心的不得了,赶紧下载了一个,准备安装在自己的本子上.这段时间已经花费了更多的时间在docker和OpenStack上面,没时间看新闻了,因此今 ...