Web服务优点

互操作性:实现不同系统间的相互调用(语言无关、平台无关)

Web服务是什么

Web 服务是一类应用程序,是能够用编程的方法通过Web调用来实现某个功能的应用程序


Web服务的体系结构


Web服务需要遵守的技术标准

1. XML(描述WEB服务数据的标准方法)

2. SOAP(表示WEB服务信息交换的协议)

3. WSDL(WEB服务描述语言)

4. UDDI(统一描述发现和集成)


这里关于WebService就不多加详细介绍了,如果有兴趣可以查看百度百科 WebService,我这里收藏了一份:
http://pan.baidu.com/s/1bnpLo43

Java中比较流行的两种Web服务开源框架axis和XFire比较


使用Web服务的一个例子

添加XFire用户库

点击工具Window→Preferences

Add JARs添加lib下的所以jar包和xfire-all-1.2.6.jar;

客户端调用Web服务

训练要点:

掌握利用XFire创建客户端,调用Web服务

需求说明:

任意输入一个数字n,返回1+2+…+n的累加和, 并在控制台显示出来

实现思路:

1、创建服务接口SumService.java

2、创建客户端调用类Client.java

3、运行求数字累加和Web服务

4、运行客户端调用服务,传入参数,获得运行结果


创建Web Service Project

点击新建 Web Service Project :SumWebService 
WebService选择第二个REST 点击Next
现在User Libraries 选择刚刚创建的XFire完成

配置web.xml
  <servlet>
  	<display-name>XFireServlet</display-name>
  	<servlet-name>XFireServlet</servlet-name>
  	<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
  	<init-param>
  		<param-name>config</param-name>
  		<param-value>services.xml</param-value>
  	</init-param>
  	<load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  	<servlet-name>XFireServlet</servlet-name>
  	<url-pattern>/services/*</url-pattern>
  </servlet-mapping>

新建接口和实现类:

新建接口:

cn.edu.hqu.service下SumService;

package cn.edu.hqu.service;

public interface SumService {
	/**
	 * 返回1-n的累加和
	 * @param n
	 * @return
	 */
	public int getSum(int n);
}
新建实现类 实现 SumService

cn.edu.hqu.service.impl下SumServiceImpl:

package cn.edu.hqu.service.impl;

import com.service.SumService;

public class SumServiceImpl implements SumService {

	public int getSum(int n) {
		int sum = 0;
		for (int i = 1; i <= n; i++) {
			sum += i;
		}
		return sum;
	}

}

在src下新建services.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
	<service>
		<name>SumService</name>
		<serviceClass>cn.edu.hqu.service.SumService</serviceClass>
		<implementationClass>cn.edu.hqu.service.impl.SumServiceImpl</implementationClass>
		<style>wrapped</style>
		<use>literal</use>
		<scope>application</scope>
	</service>
</beans>

部署到tomcat启动,访问localhost:8080/SumWebService/services 


Web服务的调用


获取有效WSDL地址

新建一个客户端Web project: Client

引入服务端那个项目SumWebService

右击项目,Properties 


引入自己建的XFire标签库:右击项目 build path →add libra..→User Library Next 选择XFire完成;

 

Client新建SumClinet类
	public static void main(String[] args) throws Exception {
		//加载xfire
		//创建服务
		Service service =  new ObjectServiceFactory().create(SumService.class);
		//WSDL地址
		String url = "http://localhost:8080/SumWebService/services/SumService";
		XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
		SumService sumService = (SumService) factory.create(service, url);
		//保证服务端有开启
		System.out.println(sumService.getSum(100));
	}

运行之前,webService服务端(SumWebService)要先部署启动;

运行main,控制台输出5050 ;


 但是这样两个项目耦合在一起了;

另外一种方式 SumClinet:

	public static void main(String[] args) throws Exception {
				String wsdlLocation = "http://localhost:8080/SumWebService/services/SumService?wsdl";
		Client client = new Client(new URL(wsdlLocation));
		Object[] o =client.invoke("getSum",new Object[]{100});
		System.out.println(o[0]);
	}

运行main输出结果;


补充说明:点击web.xml 

下的org.codehaus.xfire.transport.http.XfireConfigurableServlet进到该类:

我们可以看到

private final static String CONFIG_FILE = "META-INF/xfire/services.xml";

默认路径是在META-INF/xfire/services.xml

源码里:
private String getConfigPath()
    {
        if (configPath == null || configPath.length() == 0)
        {
            return CONFIG_FILE;
        }
        return configPath;
    }

一开始会得到这个路径,如果路径为空的话,就会使用默认的路径;

所以我们在wen.xml里买指定 configPath路径,src下直接写文件名

  	<init-param>
  		<param-name>config</param-name>
  		<param-value>services.xml</param-value>
  	</init-param>

这样就不会报错了,或者可以将services.xml放在新建的META-INF/xfire/services.xml下;

Xfire下载:http://pan.baidu.com/s/1ntx8yLF

代码:http://pan.baidu.com/s/1vmXtG


Web服务,XFire的一个例子的更多相关文章

  1. 【记录一个问题】铁威马NAS存储中的人人影视APP,其WEB服务占满一个CPU核

    终端登录后,top命令发现rrshareweb这个进程把单个CPU核占满了. 发现其实是人人影视的web服务,而这个服务里面我还根本未使用. 卸载这个app后正常.

  2. 使用Spring进行远程访问与Web服务

    1.1. 简介   Spring为各种远程访问技术的集成提供了整合类.Spring使得开发具有远程访问功能的服务变得相当容易,而这些远程访问服务由普通Spring POJO实现.目前,Spring支持 ...

  3. (转)Web Service入门简介(一个简单的WebService示例)

    Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...

  4. Web Service入门简介(一个简单的WebService示例)

    Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...

  5. Nginx Web服务(一)

    一.Nginx原理介绍 1.1:什么是Nginx Nginx是一个开源的,支持高性能.高并发的WWW服务和代理服务软件 1.2:Nginx的功能特点及应用场合 ① 支持高并发:能支持几万并发连接,特别 ...

  6. J2EE基础之Web服务简介

    J2EE基础之Web服务简介 1.什么是Web服务? 在人们的日常生活中,经常会查询网页上某城市的天气信息,这些信息都是动态的.实时的,它是专业的气象站提供的一种服务.例如,在网上购物时,通常采用网上 ...

  7. 【Java】Web 服务编程技巧与窍门: 在 UDDI 注册中心为 Web 服务注册开发 UDDI Java 应用程序

    本技巧建立了一个使用统一描述.发现和集成 (Universal Description, Discovery, and Integration,UDDI) 来注册应用程序级消费的 Web 服务实例.作 ...

  8. IIS Web服务扩展中添加ASP.NET4.0

    问题 服务器上安装了ASP.NET 4.0.30319组件,但是在IIS的Web服务扩展中并没有找到ASP.NET v4.0.30319这项,这导致基于.NET4.0开发的网页都无法正常浏览(404错 ...

  9. EJB_开发EJB容器模型的WEB服务

    开发EJB容器模型的WEB服务 WEB服务 Web服务也是一种分布式技术,它与EJB最大的不同是,Web服务属于行业规范,可以跨平台及语言.而EJB属于Java平台的规范,尽管理论上可以跨平台,但实现 ...

随机推荐

  1. Mac 下安装 MySQL 经历

    1.使用 homebrew 安装: brew install mysql 结果报错: $ brew install mysql ==> Downloading http://dev.mysql. ...

  2. [USACO14DEC]后卫马克Guard Mark

    题目描述 FJ将飞盘抛向身高为H(1 <= H <= 1,000,000,000)的Mark,但是Mark 被N(2 <= N <= 20)头牛包围.牛们可以叠成一个牛塔,如果 ...

  3. hdu 5830 FFT + cdq分治

    Shell Necklace Time Limit: 16000/8000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  4. hdu 5428

    题意:一个数是这n个数的乘,找出它一个不是素数的最小因子 求出所有数的所有质因子中最小的两个,相乘就是答案.如果所有数字的质因子个数不到两个,那么就是无解. #include<iostream& ...

  5. CentOS7快速配置nginx node mysql8.0

    目录: (一)基础准备 (二)安装node (三)安装nginx (四)安装mySql8.0 (五)整体配置 (六)安装PM2守护进程 (一)基础准备1.1 概述 服务器操作系统为 centos7.4 ...

  6. input中v-model和value不能同时调用时解决方案

    <input type="text" v-model="keyWord" value="请输入地名地址" > 当使用如上代码时, ...

  7. ASP.NET Core部署到Windows IIS

    网上已经有许多ASP.NET Core关于Widows IIS部署的文章,在部署到服务器时遇到了一些问题,在这里我就不再对原理进行阐释(复制)了,只写下一些关键环节,想看原理的同学请参考官网,此文章作 ...

  8. 微信小程序--试水

    应公司需求,接手小程序,在此之前我是一点也没有接触过,对此,拿过小程序文档和官方案例就一顿恶补,在此期间也看过一些小程序建立模型的视频,终于对小程序知晓一二,拿过项目开始研究.好了废话不多说,总结一下 ...

  9. jmeter录制APP时不能登录的问题

    问题描述: 录制APP时,其他一切挺顺利的,但在登录的时候提示"服务器发生未知错误,请稍后重试".一开始以为是接口问题,用python脚本调用了下,是可以登录的,排除接口问题.百度 ...

  10. 关于ubuntu14.04LTS 64位 播放优酷视频

    起因:chrome无法播放优酷视频,然后换firefox发现居然没有装flash 插件. 解释:关于chrome在网上看到了不少说法,说chrome新版本的不支持adobe flash之类的,但是这些 ...