国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

WebService

2019-11-14 23:56:32
字體:
供稿:網(wǎng)友
WebService一、WebService

WebService是基于網(wǎng)絡的、分布式的模塊化組件,它執(zhí)行特定的任務,遵守具體的技術(shù)規(guī)范,能夠與其它兼容的組件進行相互操作。

WebService是一種部署在網(wǎng)絡上的對象或者組件。

二、SOA

SOA(Service-Oriented Architecture)面向服務的體系結(jié)構(gòu)

SOA是一個組件模型,它將應用程序的不同功能單元(服務),通過這些服務之間定義良好的接口和契約聯(lián)系起來。

SOA與Web Service的區(qū)別與聯(lián)系

Soa服務和Web Service之間的區(qū)別在于設計

SOA并沒有確切的定義服務具體如何交互,而僅僅定義服務如何相互理解以及如何交互

其中的區(qū)別也就是如何執(zhí)行流程的戰(zhàn)略與如何執(zhí)行流程的戰(zhàn)術(shù)之間的區(qū)別

Web Service在需要交互的服務之間如何傳遞消息有具體的指導原則。

Web Service也是實現(xiàn)SOA具體方式之一。

SOA的特征:

  • 服務的重用(Reuse)
  • 服務的互操作性(interOperability)
  • 服務是自治的(autonomous)功能實體
  • 服務之間的松耦合度(Loosly Coupled)
  • 服務是位置透明的(location transparency)

SOA的優(yōu)勢:

  • 集成現(xiàn)有系統(tǒng),不必另起爐灶
  • 服務設計松耦合,帶來多方面優(yōu)點
  • 統(tǒng)一了業(yè)務架構(gòu),可擴展性增強
  • 加快了開發(fā)速度,減少了開發(fā)成本
  • 持續(xù)改進業(yè)務過程,降低激變風險

SOA的不足:

  • 可靠性:還沒有完全 為事務的最高可靠性,不可否認性,消息一定會被傳送且僅傳送一次以及事務撤回做好準備。
  • 安全性:由于一個應用軟件的組件容易去與屬于不同域的其他組件進行對話,確保不同又要相互連接的系統(tǒng)之間的安全必就復雜的多。
三、WSDL

WSDL(Web Service decription Language)-web服務描述語言

Web 服務描述語言規(guī)范定義了一個xml詞匯表,該詞匯表依照請求和響應消息,在服務請求都和服務提供都之間定義了一種契約。

3.1、基本結(jié)構(gòu)

WSDL文檔可以分為兩部分,頂部分由抽象定義組成;

底層部分則由具體描述組成。

抽象定義

  • Types:獨立于機器和語言的類型定義,
  • Message:包括函數(shù)參數(shù)(輸入與輸出分開)或者文檔描述
  • PortTypes:引用消息部分中消息定義來描述函數(shù)簽名(操作史、輸入?yún)?shù)、輸出參數(shù))

具體定義

  • Bindings:PortTypes部分的每一個操作在引綁定實現(xiàn)
  • Servies:確定每一綁定的端口地址

抽象元素:

Types元素-數(shù)據(jù)類型定義的容器

Message元素-通信消息的數(shù)據(jù)結(jié)構(gòu)的抽象類型定義

PortType元素--可以描述一個Web Service可被執(zhí)行的操作以及相關(guān)消息

具體元素:

Binding元素-特定端口類型的具體協(xié)議和數(shù)據(jù)格式規(guī)范的綁定

Service元素-相關(guān)服務訪問點的集合

四、SOAP概述

SOAP(Simple Object access PRotocol),簡單對象訪問協(xié)議,是一個基于XML的用于在分布式環(huán)境下交換信息的輕量級協(xié)議

SOAP包含4個部分:

  • SOAP封裝:封裝定義了一個描述消息中的內(nèi)容是什么,是誰發(fā)送 ,誰應該接受并處理它以及如何處理它們的框架。
  • SOAP編碼規(guī)則:用于表示應用程序需要使用的數(shù)據(jù)庫類型的實例。
  • SOAP RPC表示:表示遠程過程調(diào)用和應答的協(xié)定
  • SOAP綁定:使用底層協(xié)議交換信息。

SOAP的優(yōu)點:

  • 相對于廠商無關(guān)
  • 相對于平臺獨立
  • 相對于操作系統(tǒng)獨立
  • 相對于編程語言獨立

傳輸和語言綁定以及數(shù)據(jù)編碼的參數(shù)選擇都是由實現(xiàn)決定的

4.1、SOAP
  • SOAP是簡易對象訪問協(xié)議
  • SOAP是一種通信協(xié)議
  • SOAP是用于應用程序之間的通信
  • SOAP是一種用于發(fā)送消息的格式
  • SOAP被設計用來通過因特網(wǎng)進行通信
  • SOAP獨立于平臺
  • SOAP獨立于語言
  • SOAP基于XML
  • SOAP可擴展
  • SOAP允許繞過防火墻
  • SOAP將被作為W3C標淮來發(fā)展

五、Web Service發(fā)展歷史

java API for XML-based Web Service

六、創(chuàng)建WebService
  • 1.創(chuàng)建WebService工程
  • 2.創(chuàng)建服務java類
  • 3.創(chuàng)建WebService
  • 4.添加jax-ws支持的jar包
  • 5.發(fā)布WebService工程和發(fā)布WEB項目一樣
  • 6.通過URL訪問 http://localhost:8080/PB_WebService/CalculatorPort?wsdl
創(chuàng)建服務端WebService

java類

package com.pb.service;/** * 一個簡單的計算器類 *  */public class Calculator {        // 加法    public int add(int num1,int num2) {        return num1+num2;    }    // 減法    public int sub(int num1,int num2) {        return num1-num2;    }    // 乖法    public int mul(int num1,int num2) {        return num1*num2;    }    // 除法    public int div(int num1,int num2) {        return num1/num2;    }    // 除模    public int mod(int num1,int num2) {        return num1%num2;    }    }

WebService

package com.pb.service;@javax.jws.WebService(targetNamespace = "http://service.pb.com/", serviceName = "CalculatorService", portName = "CalculatorPort")public class CalculatorDelegate {    com.pb.service.Calculator calculator = new com.pb.service.Calculator();    public int add(int num1, int num2) {        return calculator.add(num1, num2);    }    public int sub(int num1, int num2) {        return calculator.sub(num1, num2);    }    public int mul(int num1, int num2) {        return calculator.mul(num1, num2);    }    public int div(int num1, int num2) {        return calculator.div(num1, num2);    }    public int mod(int num1, int num2) {        return calculator.mod(num1, num2);    }}

web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">  <display-name></display-name>  <servlet>      <description>JAX-WS endpoint - CalculatorService</description>      <display-name>CalculatorService</display-name>      <servlet-name>CalculatorService</servlet-name>      <servlet-class>          com.sun.xml.ws.transport.http.servlet.WSServlet      </servlet-class>      <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>      <servlet-name>CalculatorService</servlet-name>      <url-pattern>/CalculatorPort</url-pattern>  </servlet-mapping>  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list>  <listener>      <listener-class>          com.sun.xml.ws.transport.http.servlet.WSServletContextListener      </listener-class>  </listener></web-app>

發(fā)布tomcat上

通過http://localhost:8080/PB_WebService/CalculatorPort?wsdl訪問

結(jié)果

說明成功

創(chuàng)建客戶端

創(chuàng)建Java項目

創(chuàng)建Web Service Client

測試類

package com.pb.client.test;import com.pb.service.CalculatorDelegate;import com.pb.service.CalculatorService;public class WebServiceClientTest {    public static void main(String[] args) {        //獲取服務實例        CalculatorService service=new CalculatorService();        //獲取服務的代理類接口        CalculatorDelegate cd=service.getCalculatorPort();                //調(diào)用方法        System.out.println("和:"+cd.add(10, 3));        System.out.println("差:"+cd.sub(10, 3));        System.out.println("積:"+cd.mul(10, 3));        System.out.println("商:"+cd.div(10, 3));        System.out.println("模:"+cd.mod(10, 3));    }}

七、Apache CXF

八、使用CXF創(chuàng)建HelloWorld

1.新建JAVA項目

2.導入jar包

3.創(chuàng)建WebService接口如:HelloWorldServcie

4.創(chuàng)建接口的實現(xiàn)類HelloWorldServiceImpl

5.

6.

接口

package com.pb.service;/** * HelloWorld接口 * */public interface HelloWorldService {        /**     * 說話的方法     */    public void sayHello(String name);}

實現(xiàn)類

package com.pb.service.impl;import com.pb.service.HelloWorldService;/** * HelloWorldService實現(xiàn)類 * */public class HelloWorldServiceImpl implements HelloWorldService {    @Override    public void sayHello(String name) {                System.out.println(name+"  say     HelloWorld!!!");    }}

服務類

package com.pb.webservice;import org.apache.cxf.frontend.ServerFactoryBean;import com.pb.service.HelloWorldService;import com.pb.service.impl.HelloWorldServiceImpl;public class WebService {    /**     * 發(fā)布WebService     */    public static void main(String[] args) {        // ServerFactoryBean對象        ServerFactoryBean bean=new ServerFactoryBean();        //創(chuàng)建接口實例對象        HelloWorldService hello=new HelloWorldServiceImpl();        //設置服務類型        bean.setServiceClass(HelloWorldService.class);        //設置發(fā)布地址 通過 http://localhost:8080/helloWorld?wsdl驗證訪問        bean.setAddress("http://localhost:8080/helloWorld");                //設置實體服務的類        bean.setServiceBean(hello);        //發(fā)布        bean.create();    }}

客戶端

package com.pb.client;import org.apache.cxf.frontend.ClientProxyFactoryBean;import com.pb.service.HelloWorldService;/** * 客戶端 */public class ClientService {    public static void main(String[] args) {        // 代理工廠bean        ClientProxyFactoryBean bean=new ClientProxyFactoryBean();        //設置類型        bean.setServiceClass(HelloWorldService.class);        //設置服務地址        bean.setAddress("http://localhost:8080/helloWorld");        //創(chuàng)建服務對象實例        HelloWorldService service=(HelloWorldService)bean.create();        //調(diào)用方法        service.sayHello("張三");    }}
九、和Spring集成

客戶端


上一篇:Java [leetcode 1] Two Sum

下一篇:事務管理

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 灵武市| 岳阳县| 塔城市| 扎鲁特旗| 西安市| 毕节市| 崇阳县| 靖州| 上杭县| 张家界市| 河津市| 环江| 巩留县| 宽城| 清涧县| 肃北| 恩平市| 西青区| 望江县| 双江| 谷城县| 新密市| 饶河县| 越西县| 鹤岗市| 平顶山市| 慈利县| 鄂托克旗| 高清| 遂宁市| 灵武市| 凤庆县| 宣武区| 奇台县| 汉沽区| 三门峡市| 丹巴县| 张家口市| 翁源县| 江孜县| 黎川县|