在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(键值对),按照存储的内容分为两种,一种是存简单数据,即数字 ...
随机推荐
- C# Dapper 轻量ORM调试对SQLServer
Dapper简介 Dapper只有一个代码文件,完全开源,你可以放在项目里的任何位置,来实现数据到对象的ORM操作,体积小速度快. 使用ORM的好处是增.删.改很快,不用自己写sql,因为这都是重复技 ...
- 《项目架构那点儿事》——浅析web层struts2的构建
[前言]所谓快速开发,实质上为了节省项目的开支成本,减少程序员的开发时 间,固然就形成了种种二次封装的框架,也就是造轮子,然后我们的程序就按照这个轮子去画瓢,这里我就把公司这几次开发系统的框架源码贴出 ...
- phpcms 的getcache()函数
一直没有去研究phpcms 的getcache()函数是干嘛的,今天有空去看了一下,原来就那样. 1 function getcache($name, $filepath='', $type='fil ...
- SimpleMembership续
自上篇SimpleMembership之后,好久不用,也没有研究,最近把以前写的老程序改进下,原有用户系统升级为SimpleMembership,在升级的过程中发现还有许多问题,经过几天的试验,小有收 ...
- python基础-------函数(二)
闭包函数与装饰器 一.闭包函数 闭包函数:函数内部定义函数,成为内部函数,该内部函数包含对外部作用域,而不是对全局作用域名字的引用那么该内部函数成为闭包函数 name='alex' # def fun ...
- 【转】在SAE部署WordPress
原文:http://blog.csdn.net/jackrex/article/details/9305835 虽然几个月前我是以安装应用的形式将wordpress部署在sae,虽然当时sae应用商店 ...
- git命令提交项目
相关的操作命令,总是忘记,故在此记录下: 此为linux下的命, windows的话,去掉sudo即可 1.进入项目代码根目录,执行: sudo git init 把这个目录变成git可以管理的仓库. ...
- 十四、Hadoop学习笔记————Zookeeper概述与基本概念
顺序一致性:严格按照顺序在zookeeper上执行 原子性:所有事物请求的结果,在整个集群的应用情况一致 单一视图:无论从哪个服务器进入集群,看到的东西都是一致的 可靠性:服务端成功响应后,状态会 一 ...
- 3255:十进制到六进制-poj
3255:十进制到六进制 总时间限制: 1000ms 内存限制: 65536kB 描述 进制转换: 将十进制(不超过int类型表示的范围)的数转换为六进制的数. 输入 输入为第一行是组数n,后面n ...
- 高性能、高可用、高扩展ERP系统架构设计
ERP之痛 曾几何时,我混迹于电商.珠宝行业4年多,为这两个行业开发过两套大型业务系统(ERP).作为一个ERP系统,系统主要功能模块无非是订单管理.商品管理.生产采购.仓库管理.物流管理.财务管理等 ...