1. 程式人生 > >java利用CXF實現WebService 例項

java利用CXF實現WebService 例項

一、Web Service基本概念

Web Service也叫XML Web Service. WebService是一種可以接收從Internet或者Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通訊技術。通過SOAP在Web上提供的軟體服務,使用WSDL檔案進行說明,並通過UDDI進行註冊

XML:(Extensible Markup Language)擴充套件型可標記語言。面向短期的臨時資料處理、面向全球資訊網絡,是Soap的基礎。

Soap:(Simple Object Access Protocol)簡單物件存取協議。是XML Web Service 的通訊協議。當用戶通過UDDI找到你的WSDL描述文件後,他可以通過SOAP呼叫你建立的Web服務中的一個或多個操作

。SOAP是XML文件形式的呼叫方法的規範,它可以支援不同的底層介面,像HTTP(S)或者SMTP。

WSDL:(Web Services Description Language) WSDL 檔案是一個 XML 文件,用於說明一組 SOAP 訊息以及如何交換這些訊息。大多數情況下由軟體自動生成和使用。

UDDI (Universal Description, Discovery, and Integration) 是一個主要針對Web服務供應商和使用者的新專案。在使用者能夠呼叫Web服務之前,必須確定這個服務內包含哪些商務方法,找到被呼叫的介面定義,還要在服務端來編制軟體,UDDI是一種根據描述文件來引導系統查詢相應服務的機制。UDDI利用SOAP訊息機制(標準的XML/HTTP)來發布,編輯,瀏覽以及查詢註冊資訊。它採用XML格式來封裝各種不同型別的資料,並且傳送到註冊中心或者由註冊中心來返回需要的資料。

二、呼叫方式

1.wsimport命令列生成:wsimport工具是java jdk提供的工具。cmd進入,輸入如下命令:

wsimport -d D:\test -keep -verbose  http://127.0.0.1:8080/hello?wsdl

-d 表示輸出的目錄,目錄必須事先存在,否則匯出失敗。

-keep 表示匯出webservice的class檔案時是否也匯出原始碼java檔案

-verbose verbose表示詳細資訊

注:也可以利用Eclipse,新建Web Service Client專案,輸入已有的wsdl地址,並自己指定包名,生成客戶端的生成,呼叫webservice服務

2.HttpClient:可以用來呼叫webservie服務,也可以抓取網頁資料

三、WebService例項(使用CXF工具包)

引入CXF工具包到專案中(這邊我使用的是Apache-CXF-3.1.6),可以到 官網 自行下載

1.WebService服務端:

①介面類:在類上註解WebService

import javax.jws.WebService;

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


②實現類:

import java.util.Date;

import javax.jws.WebService;

import com.ywx.HelloWorld;

@WebService(endpointInterface="com.ywx.HelloWorld",serviceName="HelloWorldWs")//指定webservice所實現的介面以及服務名稱
public class HellowWorlds implements HelloWorld{
	@Override  
    public String sayHi(String name) {  
        return name+"您好!現在時間是:"+new Date();  
    } 
}
③Web Service暴露WSDL地址函式(釋出Web Service):
import javax.xml.ws.Endpoint;

import com.ywx.HelloWorld;
import com.ywx.impl.HellowWorlds;

public class ServiceMain {
	public static void main(String args[]){  
        HelloWorld hw = new HellowWorlds();  
        //呼叫Endpoint的publish方法釋出Web Service  
        Endpoint.publish("http://192.168.1.105/wstest", hw);  
        System.out.println("Web Service暴露成功!");  
    } 
}
寫完3個類後,執行main方法,通過publish方法釋出Web Service,在瀏覽器輸入http://192.168.1.105/wstest?wsdl顯示如下,則釋出成功(注意這邊測試的時候IP對應的是本機的IP):


2.WebService客戶端:

①新建 Web Service Client 專案



然後點選next直至Finish,生成Web Service Client 客戶端,自動生成如下幾個檔案:


②寫一個測試類,呼叫WebService介面方法:

public class TestServiceClient {
	public static void main(String[] args) {
			HelloWorldWs service = new HelloWorldWs();
			HelloWorld hw = service.getHellowWorldsPort();
			//hw.sayHi("wuyijun");
			System.out.println(hw.sayHi("wuyijun"));
	}
}
控制檯顯示呼叫成功:


到這為止,Web Service例項已經測試成功,下一節將會對CXF和Spring進行整合,通過配置檔案,把Web Service服務放到Tomcat伺服器上,並用另一個專案進行呼叫。。。

相關推薦

java利用CXF實現WebService 例項

一、Web Service基本概念 Web Service也叫XML Web Service. WebService是一種可以接收從Internet或者Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通訊技術。通過SOAP在Web上提供的軟體服務,使用WSDL檔

java通過cxf實現webservice服務端,客戶端接收不到響應資訊處理方法

最近在做專案時與客戶進行webservice聯調,響應成功後返回1,服務端正常返回,客戶端表示沒有收到,針對其中的問題分析和處理方法。 1.判斷是否是服務寫的有問題,寫了個測試方式試了下,發現服務端返回沒有問題 String xmlStr = "<?xml vers

java中使用spring整合cxf實現webservice

在java中實現webservice有兩種常用的方式,一種是cxf,另一種是axis。這兩種方式的區別大家可以自己在網上找找參考一下。cxf可以與spring進行整合,是一款不錯的webservice產品。今天給大家講解一下使用spring整合cxf實現we

Java利用Redis實現消息隊列

.get keys rpo throws max del 鍵值 先進先出 instance 應用場景 為什麽要用redis?二進制存儲、java序列化傳輸、IO連接數高、連接頻繁 一、序列化   這裏編寫了一個java序列化的工具,主要是將對象轉化為byte數組,和根

Java利用MethodHandle實現反射時調用super的method

AS sta port 沒有 ase handle test ble pub 一:實現 1.Base類的實現 package me.silentdoer.reflecsuper; /** * @author silentdoer * @version

java利用socket實現客戶端與伺服器的連線與資料傳遞

網路上的兩個程式通過一個雙向的通訊連線實現資料的交換,這個雙向鏈路的一端稱為一個 socket。socket 也就是套接字,可以用來實現不同虛擬機器或者不同計算機之間的通訊。在 Java 語言中,socket 可以分為兩種型別:面向連線的 socket 通訊協議(TCP)和麵向無連線的 socket

Java 利用Map實現快取

一、快取工具類 package com.zsplat.yyzx.util; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 快取機制

Java 利用列舉實現單例模式

引言 單例模式比較常見的實現方法有懶漢模式,DCL模式公有靜態成員等,從Java 1.5版本起,單元素列舉實現單例模式成為最佳的方法。 Java列舉 基本用法 列舉的用法比較多,本文主要旨在介紹利用列舉實現單例模式的原理,所以這裡也主要介紹一

java利用classfier4j實現模糊查詢、文章摘要、餘弦相似度、Tfidf、單詞糾正

jar包下載: https://download.csdn.net/download/dreamzuora/10853888 程式碼使用: 餘弦相似度: Double result=cosSimilarityByString("關於王立軍,有幾個基本事實。首先,1月28日我是初次

利用CXF釋出webService的小demo

其實webService的釋出不僅僅只有xfire,今天,給大家介紹一下用CXF釋出一個webService的小demo,CXF也是我做webService用的第一個框架。。。 先將相關的jar引進來,在pom檔案中新增 <dependency>       &

CXF實現webService服務(一)

以前工作中也用CXF,但都是用別人現成搭好的環境,這次自己重頭搭建一遍環境。過程中也有遇到的問題,也做了簡單的整理。 對於CXF是幹什麼用的,我不想多說,大家都知道這是我們在java程式設計中webService技術的一種實現工具。我們說說為什麼用CXF來實現webSer

java利用POI實現Excel匯入匯出詳解-支援97-2013版本以及2017版本

package com.kero99.ygc.excel; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import org.apache.

java利用cors實現跨域請求

什麼是跨域? 跨域,指的是瀏覽器不能執行其他網站的指令碼。它是由瀏覽器的同源策略造成的,是瀏覽器對JavaScript施加的安全限制。 ajax本身實際上是通過XMLHttpRequest物件來進行資料的互動,而瀏覽器出於安全考慮,不允許js程式碼進行跨域操作,所以會警告。

Java利用POI實現匯入匯出Excel表格示例程式碼

介紹Jakarta POI 是一套用於訪問微軟格式文件的Java API。Jakarta POI有很多元件組成,其中有用於操作Excel格式檔案的HSSF和用於操作Word的HWPF,在各種元件中目前只有用於操作Excel的HSSF相對成熟。官方主頁http://poi.ap

CXF框架的使用,利用cxf開發webservice(六)

1.CXF介紹 CXF 簡介 關於 Apache CXF Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,現在已經正式更名為 Apache CXF 了,以下簡稱為 CXF。CXF 繼承了 Cel

java利用RedisTemplate實現zset條件查詢

直接上程式碼在做解釋Cursor<ZSetOperations.TypedTuple<Object>> cursor = zSetOperations.scan(key,ScanOptions.NONE); while (cur

Java使用SOAP獲取webservice例項解析

這篇文章是根據一位cnblogs上的一位大大,做了些修改而已 他的文章:走嘍~~ 進入正文,為了怕資源丟失,我選擇了全部黏貼複製了一遍! 以下是 SOAP 1.1 請求和響應示例。所顯示的佔位符需替換為實際值。 [http://www.webxml.com.cn/we

CXF實現WebService對物件和XML檔案的釋出

搭建工程前文以及介紹 1..........................建立POJO類User.java package ObjectInterface; public class User { private String username; private S

JAVA 利用Comparator實現自定義排序

/* 有個Person類,包括姓、名、性別、年齡屬性:現在有個需求,需要對Person進行以下規則的排序  * 誰的姓拼音靠前,誰就排前面。  * 然後對名字進行排序。如果同名,女性排前頭。  * 如果名字和性別都相同,年齡小的排前頭。  * int compare(O

Java讀取XML實現反射例項

* XML(Extensible Markup Language,可擴充套件標記語言)1、XML DOM解析:DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuil