Web Service是什么?

Web Service不是框架。更甚至不是一种技术。

而是一种跨平台,跨语言的规范

Web Service解决什么问题:

为了解决不同平台,不同语言所编写的应用之间怎样调用问题。比如。有一个C语言写的程序。它想去调用java语言写的某个方法。

集中解决:1,远程调用 2。跨平台调用 3,跨语言调用

实际应用:

1。同一个公司的新,旧系统的整合。Linux上的java应用,去调用windows平台的C应用

2,不同公司的业务整合。业务整合就带来不同公司的系统整合。不同公司的系统可能存在平台不同,语言不同的问题

3,内容聚合。一个应用,比方须要提供,天气预报,股票行情,黄金行情等。

CXF与Web Service的关系

CXF是apache旗下的开源框架,由Celtix+ XFire这两门经典的框架合成。是一套很流行的web service框架。

CXF方式实现Web Service服务demo

1,配置环境变量

在CLASSPATH中加入E:\apache-cxf-2.6.2\lib

新建CXF_HOMEE:\apache-cxf-2.6.2

在PATH中加入 %CXF_HOME%\bin

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

2。使用CXF开发Web Service开发server端

整个项目的文件夹结构(普通java项目):

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

接口:

package com.tgb.service;

import javax.jws.WebService;

@WebService
public interface HelloWorld{ public String sayHi(String name); }

实现类:

package com.tgb.service.impl;

import java.util.Date;

import javax.jws.WebService;

import com.tgb.service.HelloWorld;

@WebService(endpointInterface="com.tgb.service.HelloWorld",serviceName="HelloWorldImpl")
public class HelloWorldImpl implements HelloWorld{ public String sayHi(String name) { return name+"您好! 如今时间为:"+new Date();
} }

測试client:

package com.tgb.client;

import javax.xml.ws.Endpoint;

import com.tgb.service.HelloWorld;
import com.tgb.service.impl.HelloWorldImpl; public class ServerMain { public static void main(String[] args){ HelloWorld hw=new HelloWorldImpl();
//调用endpoint的publish方法,来公布web service
Endpoint.publish("http://192.168.24.215/hjy",hw);
System.out.println("Web Service暴露成功");
}
}

启动程序:

查看wsdl

3,使用CXF开发WebServiceclient

运行例如以下命令(找到webService的client的工作空间运行)

刷新client项目,可看到例如以下生成的代码:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

编写client调用代码:

package hjy;

import com.tgb.service.HelloWorld;
import com.tgb.service.impl.HelloWorldImpl; public class ClientMain { public static void main(String[] args){
HelloWorldImpl factory=new HelloWorldImpl();
//此处返回的仅仅是远程Web Service的代理
HelloWorld hw=factory.getHelloWorldImplPort();
System.out.println(hw.sayHi("hejingyuan"));
}
}

运行结果:

hejingyuan您好!如今时间为:TueJul 28 14:09:07 CST 2015

总结:

使用CXF开发Web Service共同拥有例如以下几个步骤:

1,server端

(1)开发一个Web Service业务接口。

该接口要用@WebService修饰

(2)开发一个Web Service业务实现类。该实现类也须要用@WebService修饰

(3)公布Web Service

2,client

(1)调用CXF提供的wsdl2java工具,依据WSDL文档生成对应的java代码。

WSDL-Web Service Definition Language

不论什么语言实现了Web Service,都须要提供,并暴露WSDL文档

(2)找到wsdl2java所生成类中,一个继承了Service的类

该类的实例可当成工厂来使用

(3)调用Service子类的实例的getXxxPort方法。返回远程Web Service的代理

源代码下载

Web Service学习-CXF开发Web Service实例demo(一)的更多相关文章

  1. Web Service学习-CXF开发Web Service的权限控制(二)

    Web Service怎样进行权限控制? 解决思路:server端要求input消息总是携带实username.password信息,假设没实username和password信息.直接拒绝调用 解决 ...

  2. 使用CXF开发Web Service服务

    1.使用CXF开发Web Service服务端 1.1 开发一个Web Service业务接口,该接口要用@WebService修饰 (1)创建一个Java项目MyServer (2)在MyServe ...

  3. Web Service学习之一:Web Service原理

    一.定义 Web Service 不是框架也不是技术 而是解决远程调用.跨平台调用.跨语言调用问题的一种规范. 二.应用1.同一个公司新.旧系统的整合:比如CRM系统与OA.客服系统相互调用2.不同公 ...

  4. Web安全学习笔记之DES算法实例详解

    转自http://www.hankcs.com/security/des-algorithm-illustrated.html 译自J. Orlin Grabbe的名作<DES Algorith ...

  5. CTFHub Web题学习笔记(Web前置技能+信息泄露题解writeup)

    今天CTFHub正式上线了,https://www.ctfhub.com/#/index,之前有看到这个平台,不过没在上面做题,技能树还是很新颖的,不足的是有的方向的题目还没有题目,CTF比赛时间显示 ...

  6. Apache CXF实现Web Service(5)—— GZIP使用

    Apache CXF实现Web Service(5)-- GZIP使用 参考来源: CXF WebService整合Spring Apache CXF实现Web Service(1)--不借助重量级W ...

  7. Web Service--第一次接触web service

    Web Service 首发于开源中国 1. 背景 中国移动短信网关需求,要能够发送短信.开发材料只有一个短信发送配置:包括ID,password,code,url.一个jar包还有一个老旧的html ...

  8. 使用CXF开发简单的Web Service-HelloWorld(二)

    上篇博文我们介绍了Web Service的基本概念,了解它的基本概念之后,我们这篇博文介绍一个开源的WebService框架-Apache CXF,并实现一个HelloWorld实例. 一.开始之前 ...

  9. CXF开发WebService

    CXF开发Web Service 参考链接 使用 spring 框架来集成 Web Services 开发 浏览器调用接口 大概这样, 没成功 加@WebMethod(action="get ...

随机推荐

  1. 【SDOI 2010】 计算器

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2242 [算法] 第一问用快速幂解决 第二问用exgcd解决 第三问用BSGS算法解决 ...

  2. Nginx实战系列之功能篇----后端节点健康检查

    目前,nginx对后端节点健康检查的方式主要有3种,这里列出:   1.ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带)    官网地址: ...

  3. office2016专业版激活码

    office2016专业版激活密钥 Office 2016 Pro Plus Retail 版激活密钥:office2016专业版激活码 [Key]:3XJTG-YNBMY-TBH9M-CWB2Y-Y ...

  4. Ubuntu搭建docker环境

    一丶自己搭建Ubuntu的虚拟机(网上很多教程) PS:下带图形化界面的Ubuntu镜像,这里只说一下要装那些工具和做那些配置   安装vim         sudo apt-get install ...

  5. 利用python开发的flappy bird 游戏

    python 中 pygame模块能让我们很方便的编写游戏,16年我用python 仿制了flappy bird 游戏,下面是游戏的完整代码以及素材,分享给大家. 第一个python文件,flappy ...

  6. centos6.5 + Nat网络模式 +SecureCRT 的相关设置

    步骤1:先去查看子网掩码和子网ip 提示:打开后先不要关闭,后边还会使用 步骤2:查看本机名 输入: hostname 步骤3:修改本机名 vi /etc/sysconfig/network 在”Ho ...

  7. Ubuntu16.04下将hadoop2.7.3源代码导入到eclipse neon中

    0.为什么会有这篇: 这篇文章的目的在于帮助想学习hadoop源码的内容,却在导入的过程中出现了各种问题的人. 或许你一定找了很多博客都无果,那么不用担心,我和你一样,这也是这篇文章存在的意义,废话少 ...

  8. 第5章分布式系统模式 在 .NET 中使用 DataSet 实现 Data Transfer Object

    要在 .NET Framework 中实现分布式应用程序.客户端应用程序需要显示一个窗体,该窗体要求对 ASP.NET Web Service 进行多个调用以满足单个用户请求.基于性能方面的考虑,我们 ...

  9. 关于VS 2013连接Microsoft Access 2013的相关问题

      ①   下载安装Microsoft Access Database Engine 2010 Redistributable(28MB),共有32bit(下载)和64bit(下载)两个版本,具体要安 ...

  10. poj 2955 Brackets 【 区间dp 】

    话说这题自己折腾好久还是没有推出转移的公式来啊------------------ 只想出了dp[i][j]表示i到j的最大括号匹配的数目--ค(TㅅT)------------------- 后来搜 ...