WebService(註解),CXF框架(jax-ws,Jax-rs,與spring整合)
1 webservice的註解
1.1 案例:
模擬查詢天氣資訊,返回三天的天氣情況。
1.1.1 實現步驟
服務端:
第一步:建立一個天氣資訊pojo,包含天氣的資訊、最高、最低溫度、日期。
第二步:編寫SEI
第三步:編寫SEI實現類,返回天氣list
第四步:釋出Webservice。
1.1.2 程式碼實現
1.1.2.1 Pojo
- publicclass WeatherModel {
- private String info;
-
privateint maxTemp;
- privateint minTemp;
- private Date date;
1.1.2.2 SEI
天氣查詢SEI,返回三天的天氣情況
- @WebService
- publicinterface WeatherInterface {
- List<WeatherModel> queryWeather(String cityName);
- }
1.1.2.3 SEI實現類
實現類使用@WebService實現wsdl文件元素名稱的修改
-
@WebService
- //endpointInterface="com.itheima.weather.service.WeatherInterface" //可以指定SEI介面
- name="WeatherInterface", //不使用SEI介面時規範portType的名稱
- serviceName="WeatherService", //服務檢視的名稱
- portName="WeatherPort", //Service節點中port節點的name屬性
-
targetNamespace="http://weather.itheima.com/"
- )
- publicclass WeatherInterfaceImpl implements WeatherInterface {
- @Override
- @WebMethod/*(exclude=true)*/
- @WebResult(name="WeatherInfo")
- public List<WeatherModel> queryWeather(@WebParam(name="cityName")String cityName) {
- System.out.println("客戶端傳送的城市:" + cityName);
- //查詢天氣資訊
- List<WeatherModel> info = getWeatherInfo(cityName);
- //返回天氣資訊
- return info;
- }
- private List<WeatherModel> getWeatherInfo(String cityName) {
- List<WeatherModel> weatherList = new ArrayList<>();
- Calendar calendar = Calendar.getInstance();
- //第一天
- WeatherModel model1 = new WeatherModel();
- model1.setInfo("雷陣雨");
- model1.setMaxTemp(31);
- model1.setMinTemp(22);
- model1.setDate(calendar.getTime());
- weatherList.add(model1);
- //第二天
- WeatherModel model2 = new WeatherModel();
- model2.setInfo("多雲");
- model2.setMaxTemp(33);
- model2.setMinTemp(25);
- calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) + 1);
- model2.setDate(calendar.getTime());
- weatherList.add(model2);
- //第三天
- WeatherModel model3 = new WeatherModel();
- model3.setInfo("多雲");
- model3.setMaxTemp(35);
- model3.setMinTemp(25);
- calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) + 1);
- model3.setDate(calendar.getTime());
- weatherList.add(model3);
- return weatherList;
- }
- }
1.1.2.4 客戶端
- publicclass WeatherClient {
- publicstaticvoid main(String[] args) throws Exception {
- //建立服務檢視
- Service service = Service.create(new URL("http://127.0.0.1:12345/weather"),
- new QName("http://service.weather.itheima.com/", "WeatherInterfaceImplService"));
- //從服務檢視獲得protType物件
- WeatherInterfaceImpl weatherInterfaceImpl = service.getPort(WeatherInterfaceImpl.class);
- //呼叫服務端方法
- List<WeatherModel> list = weatherInterfaceImpl.queryWeather("北京");
- //顯示天氣資訊
- for (WeatherModel weatherModel : list) {
- System.out.println(weatherModel.getDate().toGregorianCalendar().getTime().toLocaleString());
- System.out.println(weatherModel.getInfo());
- System.out.println(weatherModel.getMaxTemp());
- System.out.println(weatherModel.getMinTemp());
- }
- }
- }
1.2 要規範wsdl需要使用到webservice註解
1.2.1 @Webservice
@WebService(
//endpointInterface="com.itheima.weather.service.WeatherInterface"//可以指定SEI介面
name="WeatherInterface",//不使用SEI介面時規範portType的名稱
serviceName="WeatherService", //服務檢視的名稱
portName="WeatherPort", //Service節點中port節點的name屬性
targetNamespace="http://weather.itheima.com/" //wsdl的名稱空間
)
1.2.2 @WebMethod
如果不指定@WebMethod註解預設是吧實現類中所有的public方法都發布成服務方法。
如果類中有的public方法不想釋出成服務,就可以使用@WebMethod(exclude=true)把此方法排除,也就是不釋出為webservice方法。
注意:每個Porttype中,必須有一個public方法並且不能標註為@WebMethod(exclude=true)
1.2.3 @WebParam、@WebResult
可以規範引數的名稱
@WebResult(name="xxxx")修改返回值的元素的父標籤名字
@WebParam(name="xxxxx")修改傳入引數的元素的父標籤名字
2 CXF框架
2.1 什麼是CXF
Apache CXF = Celtix + Xfire,開始叫 Apache CeltiXfire,後來更名為 Apache CXF 了,以下簡稱為 CXF。Apache CXF
是一個開源的 web Services 框架,CXF 幫助您構建和開發 web Services ,它支援多種協議,比如:SOAP1.1,1,2、XML/HTTP、RESTful 或者 CORBA。
RESTful:一種風格而不是一個協議。它理念是網路上的所有事物都被抽象為資源,每個資源對應一個唯一的資源識別符號。
CORBA(Common Object Request Broker Architecture公共物件請求代理體系結構,早期語言使用的WS。C,c++,C#)
Cxf是基於SOA匯流排結構,依靠spring完成模組的整合,實現SOA方式。
靈活的部署:可以執行在Tomcat,Jboss,Jetty(內建),weblogic上面。
2.2 CXF的安裝及配置
從官網下載:cxf.apache.org
學習使用的版本是:3.0.2
使用的方法,直接把cxf的jar包新增到工程中就可以了。
環境配置
JAVA_HOME 需要jdk的支援
CXF_HOME 解壓目錄(bin的上層目錄) 需要使用bin目錄的可執行命令生成客戶端程式碼
path = %JAVA_HOME%\bin;%CXF_HOME%\bin;
2.3 使用CXF實現java-ws規範的webservice
Soap1.1:
2.3.1 服務端:
實現步驟:
第一步:建立一Java工程。
第二步:匯入jar包匯入cxf的jar包共138個。
第三步:編寫SEI,在SEI上新增@Webservice註解。
第三步:編寫SEI實現類。需要實現SEI介面,可以不加@Webservice註解
第四步:釋出服務。
1、建立一個JaxWsServerFactoryBean物件。
2、設定服務的釋出地址,是一個http url
3、設定SEI介面
4、設定SEI實現類物件
5、呼叫create方法釋出服務。
2.3.2 程式碼實現
2.3.2.1 SEI
- @WebService
- publicinterface WeatherInterface {
- String queryWeather(String cityName);
- }
2.3.2.2 實現類
- publicclass WeatherInterfaceImpl implements WeatherInterface {
- @Override
- public String queryWeather(String cityName) {
- System.out.println("城市名稱:" + cityName);
- String result = "多雲";
-
return
相關推薦
WebService(註解),CXF框架(jax-ws,Jax-rs,與spring整合)
1 webservice的註解 1.1 案例: 模擬查詢天氣資訊,返回三天的天氣情況。 1.1.1 實現步驟 服務端: 第一步:建立一個天氣資訊pojo,包含天氣的資訊、最高、最低溫度、日期。 第二步:編寫SEI
CXF系列之JAX-RS:CXF與spring整合釋出REST服務
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transition
WebService學習之旅(三)JAX-WS與Spring整合釋出WebService
Spring本身就提供了對JAX-WS的支援,有興趣的讀者可以研究下Spring的Spring-WS專案,專案地址: http://docs.spring.io/spring-ws/sites/1.5/downloads/releases.html 基於Sp
WebService的CXF框架與Spring的整合釋出服務入門
1、建立WEB專案,將CXF與SPRING的包引入專案(在下載的CXF的lib包裡,裡面已經整合好了,直接引入進去就行了) 2、建立介面 package com.ckinghan.cxf.server.service; import javax.jws
WebService之CXF框架入門小程式
其實CXF的服務建立及釋出相當簡單,建立方法如下: 安裝JDK1.7或以上(注意要設定環境變數,javac命令必須可用) 下載CXF,建議去官網下。 將下載 的CXF解壓,並配置環境變數(與JDK的環境變數配置差不多,配置完成後,需要wsdl2java -h
釋出webservice 方式 cxf框架
今天我在專案中需要釋出webservice服務,可是在這個webservice已經發布了一個服務,第二個感覺無從下手,感覺就是一個地址 怎麼能釋出兩個服務,而且我一開始只知道在main中釋出,專案中使用的是spring配置方式釋出 main中釋出
使用CXF與Spring整合實現RESTFul WebService
以下引用與網路中!!! 一種軟體架構風格,設計風格而不是標準,只是提供了一組設計原則和約束條件。它主要用於客戶端和伺服器互動類的軟體。基於這個風格設計的軟體可以更簡潔,更有層次,更易於實現快取等機制。 &nbs
WebService入門 - CXF與Spring整合 (maven專案)
可參考CXF官網-使用Spring編寫服務文件:http://cxf.apache.org/docs/writing-a-service-with-spring.html 1.新增依賴 <!-- spring與cxf 整合webservice 所需 -->
webservice之cxf實現[web專案中基於maven與spring整合]
webservice現開發的已實現元件不少,使用過的就有xfire及cxf. cxc基於maven與spring整合過程如下: STEP 1. 依賴包新增 在pom.xml檔案的標籤中增加如下(版本號依個人需要調整): <depende
CXF與Spring整合
WebService的主要目標是跨平臺的可互操作性。為了達到這一目標,WebService完全基於XML(可擴充套件標記語言)、XSD(XMLSchema)等獨立於平臺、獨立於軟體供應商的標準,是建立可互操作的、分散式應用程式的新平臺。簡單的說WebSe
一種古老的技術:axis1.4操作WebService,實現與Spring整合
這是pom檔案中需要的axis需要的依賴 <dependency> <groupId>org.springframework</groupId> <artifactId>spr
訊息佇列(三)--與spring整合(採用註解消費佇列)
一、簡介 這裡採用註解方式使用kafka。 二、新增maven依賴 <dependency> <groupId>org.springframework.kafka&l
WebService Spring整合Jax-rs規範 使用CXF框架Restful的程式設計風格 編寫服務端
前提是專案SSM框架搭建好。 搭建cxf框架, 一、首先,將框架所需要的jar匯入,pom.xml檔案中 <!-- cxf 進行rs開發 必須匯入 --> <dependency> <groupId>org.apache.cx
Spring Boot用Cxf的jax-ws開發WebService
contex 字符串 scope nap 1.0 地址 method ons lean 首先上項目的pom.xml: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http
webservice服務端釋出與呼叫 JAX-WS cxf axis2
之前專案中需要用到webservice的釋出最後做出了幾個例子如下: 1 基礎 JAX-WS例項 介面釋出: package com.test; import javax.jws.WebMethod; import javax.jws.WebSer
spring註解方式,使用jax-ws配置webservice,適合小白。看不會你打死我!
前提條件:java –spring框架,註解(能夠掃描@webService標籤) 1. 經過一天的煎熬和掙扎,終於把webservice的其中非常簡單的配置方法給弄明白了,就是JAX-WS配置webservice,真的非常簡單,只是細節一一旦出了點問題,全盤皆輸,為了
webservice快速入門-使用JAX-WS註解的方式快速搭建ws服務端和客戶端(一)
WEBSERVICE快速入門的示例: 首先定義介面: package com.whaty.platform.ws.server; import javax.jws.WebService; /** * @className:IMyservice.java * @De
Java JAX-WS和JAX-RS webservice的區別和特點
Java,,JAX-RS,webservice,區別,特點 首先說明一下:jaxb是java xml binding,是jax-rs jax-ws底層使用的物件與xml之間轉換的工具 全稱是JavaTM API forXML-Based WebServices JA
WebService:JAX-WS實現WebService
nload cal data- pos 接口 rri implement publish sni WebService和Java核心技術中的RMI一樣用於實現異構平臺上的應用程序之間數據的交互,唯一不同的是這樣的技術屏蔽了語言之間的差異。這也是其大行其道