最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot使用webservice發(fā)布和調(diào)用接口的實(shí)例詳解

 更新時(shí)間:2024年10月12日 09:42:09   作者:z不像程序員的程序猿  
本文介紹了如何在Springboot中使用webservice發(fā)布和調(diào)用接口,涵蓋了必要的依賴添加和代碼示例,文中提供了服務(wù)端和客戶端的實(shí)現(xiàn)方法,以及如何設(shè)置端口和服務(wù)地址,幫助讀者更好地理解和應(yīng)用Springboot結(jié)合webservice的技術(shù)

springboot使用webservice發(fā)布和調(diào)用接口

加入以下依賴:

<!-- cxf框架依賴  -->
	<dependency>
		<groupId>org.apache.cxf</groupId>
		<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
		<version>3.2.4</version>
	</dependency>

服務(wù)端service代碼:

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
/**
 * TODO(描述這個(gè)類的作用) 
 * @author zyl
 * @date 2019年3月27日
 */
/**
 * 創(chuàng)建服務(wù)接口
 * @author oKong
 *
 */
@WebService()
public interface HelloWebService {
    @WebMethod
    public String Hello(@WebParam(name="name") String name);
}

服務(wù)端實(shí)現(xiàn)類代碼:

import javax.jws.WebParam;
import javax.jws.WebService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * TODO(描述這個(gè)類的作用) 
 * @author zyl
 * @date 2019年3月27日
 */
@WebService(
        targetNamespace = "demo.example.com", //wsdl命名空間 
        serviceName = "HelloWebService",                 //portType名稱 客戶端生成代碼時(shí) 為接口名稱
        endpointInterface = "com.example.demo.configuraction.webservice.HelloWebService")//指定發(fā)布webservcie的接口類,此類也需要接入@WebService注解
@Configuration
public class HelloWebServiceImpl implements HelloWebService{
    @Override
    public String Hello(@WebParam(name="name") String name) {
        System.out.println("歡迎你"+name);
        return "歡迎你"+name;
    }
}

服務(wù)端發(fā)布服務(wù)類:
我的端口設(shè)置為9999,所以我的服務(wù)地址為http://127.0.0.1:9090/ws/helloWebService?wsdl

import javax.xml.ws.Endpoint;
import org.apache.cxf.Bus;
import org.apache.cxf.bus.spring.SpringBus;
import org.apache.cxf.jaxws.EndpointImpl;
import org.apache.cxf.transport.servlet.CXFServlet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * cxf配置類
 * @author oKong
 *
 */
@Configuration
public class CxfWebServiceConfig {
    @Autowired
    private Bus bus;
    @Autowired
    private HelloWebService helloWebService;
    @Bean("cxfServletRegistration")
    public ServletRegistrationBean dispatcherServlet() {
        //注冊(cè)servlet 攔截/ws 開(kāi)頭的請(qǐng)求 不設(shè)置 默認(rèn)為:/services/*
        return new ServletRegistrationBean(new CXFServlet(), "/ws/*");
    }
    /*
     * 發(fā)布endpoint
     */
    @Bean
    public Endpoint endpoint() {
        EndpointImpl endpoint = new EndpointImpl(bus, helloWebService);
        endpoint.publish("/helloWebService");//發(fā)布地址
        return endpoint;
    }
}

客戶端調(diào)用服務(wù)代碼:
以下兩種方法選一即可

import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
/**
 * @ClassName:CxfClient
 * @Description:webservice客戶端:
 *                 該類提供兩種不同的方式來(lái)調(diào)用webservice服務(wù)
 *              1:代理工廠方式
 *              2:動(dòng)態(tài)調(diào)用webservice
 * @author Jerry
 * @date:2018年4月10日下午4:14:07
 */
public class CxfClient {
    public static void main(String[] args) {
        CxfClient.main1();
//        CxfClient.main2();
    }
    /**
     * 1.代理類工廠的方式,需要拿到對(duì)方的接口地址
     */
    public static void main1() {
        try {
            // 接口地址
            String address = "http://127.0.0.1:9090/ws/helloWebService?wsdl";
            // 代理工廠
            JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();
            // 設(shè)置代理地址
            jaxWsProxyFactoryBean.setAddress(address);
            // 設(shè)置接口類型
            jaxWsProxyFactoryBean.setServiceClass(HelloWebService.class);
            // 創(chuàng)建一個(gè)代理接口實(shí)現(xiàn)
            HelloWebService us = (HelloWebService) jaxWsProxyFactoryBean.create();
            // 數(shù)據(jù)準(zhǔn)備
            String userId = "zz";
            // 調(diào)用代理接口的方法調(diào)用并返回結(jié)果
            String result = us.Hello(userId);
            System.out.println("返回結(jié)果:" + result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 2:動(dòng)態(tài)調(diào)用
     */
    public static void main2() {
        // 創(chuàng)建動(dòng)態(tài)客戶端
        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
        Client client = dcf.createClient("http://127.0.0.1:9090/ws/helloWebService?wsdl");
        // 需要密碼的情況需要加上用戶名和密碼
        // client.getOutInterceptors().add(new ClientLoginInterceptor(USER_NAME, PASS_WORD));
        Object[] objects = new Object[0];
        try {
            // invoke("方法名",參數(shù)1,參數(shù)2,參數(shù)3....);
            objects = client.invoke("getUserName", "maple");
            System.out.println("返回?cái)?shù)據(jù):" + objects[0]);
        } catch (java.lang.Exception e) {
            e.printStackTrace();
        }
    }
}

到此這篇關(guān)于springboot使用webservice發(fā)布和調(diào)用接口的文章就介紹到這了,更多相關(guān)springboot webservice發(fā)布和調(diào)用接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JFileChooser實(shí)現(xiàn)對(duì)選定文件夾內(nèi)圖片自動(dòng)播放和暫停播放實(shí)例代碼

    JFileChooser實(shí)現(xiàn)對(duì)選定文件夾內(nèi)圖片自動(dòng)播放和暫停播放實(shí)例代碼

    這篇文章主要介紹了JFileChooser實(shí)現(xiàn)對(duì)選定文件夾內(nèi)圖片自動(dòng)播放和暫停播放實(shí)例代碼,需要的朋友可以參考下
    2017-04-04
  • java中List常用的4種stream()方法解析

    java中List常用的4種stream()方法解析

    Java中的List接口從Java 8開(kāi)始新增了stream()方法,用于創(chuàng)建一個(gè)Stream流對(duì)象,這篇文章主要給大家介紹了關(guān)于java中List常用的4種stream()方法的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • spring boot mybatis多數(shù)據(jù)源解決方案過(guò)程解析

    spring boot mybatis多數(shù)據(jù)源解決方案過(guò)程解析

    這篇文章主要介紹了spring boot mybatis多數(shù)據(jù)源解決方案過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 基于Java 談回調(diào)函數(shù)

    基于Java 談回調(diào)函數(shù)

    回調(diào)函數(shù)就是一個(gè)通過(guò)函數(shù)指針調(diào)用的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個(gè)函數(shù),當(dāng)這個(gè)指針被用來(lái)調(diào)用其所 指向的函數(shù)時(shí),我們就說(shuō)這是回調(diào)函數(shù)
    2017-05-05
  • SpringBoot環(huán)境搭建及第一個(gè)程序運(yùn)行(小白教程)

    SpringBoot環(huán)境搭建及第一個(gè)程序運(yùn)行(小白教程)

    這篇文章主要介紹了SpringBoot環(huán)境搭建及第一個(gè)程序運(yùn)行,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Java實(shí)現(xiàn)WebSocket四個(gè)步驟

    Java實(shí)現(xiàn)WebSocket四個(gè)步驟

    這篇文章主要為大家介紹了Java實(shí)現(xiàn)WebSocket的方法實(shí)例,只需要簡(jiǎn)單四個(gè)步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 詳解Javaee Dao層的抽取

    詳解Javaee Dao層的抽取

    這篇文章主要介紹了詳解Javaee Dao層的抽取,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Java數(shù)據(jù)類型與運(yùn)算符詳細(xì)代碼示例

    Java數(shù)據(jù)類型與運(yùn)算符詳細(xì)代碼示例

    變量指的是程序運(yùn)行時(shí)可變的量,相當(dāng)于開(kāi)辟一塊內(nèi)存空間來(lái)保存一些數(shù)據(jù),類型則是對(duì)變量的種類進(jìn)行了劃分,不同的類型的變量具有不同的特性,這篇文章主要介紹了Java數(shù)據(jù)類型與運(yùn)算符的相關(guān)資料,需要的朋友可以參考下
    2026-02-02
  • Spring boot集成redis lettuce代碼實(shí)例

    Spring boot集成redis lettuce代碼實(shí)例

    這篇文章主要介紹了Spring boot集成redis lettuce代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 將java文件轉(zhuǎn)變?yōu)閎at文件實(shí)現(xiàn)方式

    將java文件轉(zhuǎn)變?yōu)閎at文件實(shí)現(xiàn)方式

    文章介紹了如何將Java文件轉(zhuǎn)換為批處理文件(.bat),以便于快速運(yùn)行,步驟包括刪除包聲明、編譯生成.class文件,然后編寫批處理文件指定運(yùn)行命令
    2026-01-01

最新評(píng)論

武平县| 石嘴山市| 沂水县| 奈曼旗| 蓝山县| 家居| 岳阳市| 镇宁| 永川市| 客服| 裕民县| 武山县| 望城县| 大英县| 永康市| 蒙自县| 齐齐哈尔市| 石楼县| 兴业县| 长岭县| 修文县| 盈江县| 元江| 盐源县| 东乌| 斗六市| 安阳县| 惠东县| 玛多县| 化德县| 高清| 湖州市| 盐亭县| 榆中县| 曲沃县| 中宁县| 绿春县| 怀仁县| 兖州市| 白朗县| 崇文区|