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

Java使用cxf發(fā)布及調(diào)用webservice接口的方法詳解

 更新時間:2023年08月24日 10:30:47   作者:百里度  
今天小編就為大家分享一篇關(guān)于Java使用CXF發(fā)布及調(diào)用WebService接口的方法,文中通過代碼示例給大家介紹的非常詳細(xì),具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

一、cxf發(fā)布webservice接口

添加maven依賴

<dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-core</artifactId>
            <version>3.4.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>3.4.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http-jetty</artifactId>
            <version>3.4.3</version>
        </dependency>

這里的cxf-rt-transports-http-jetty依賴是內(nèi)置jetty容器發(fā)布webservice接口

創(chuàng)建服務(wù)端接口

@WebService
public interface UserService {
    String getUserInfo(String name);
}
@WebService
public class UserServiceImpl implements UserService {
    @Override
    public String getUserInfo(String name) {
        return "我是" + name;
    }
}
public class test {
    public static void main(String[] args) {
        System.out.println("web service start");
        UserService implementor = new UserServiceImpl();
        String address = "http://127.0.0.1:8082/userService";
        JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();
        factoryBean.setAddress(address); // 設(shè)置暴露地址
        factoryBean.setServiceClass(UserService.class); // 接口類
        factoryBean.setServiceBean(implementor); // 設(shè)置實現(xiàn)類
        factoryBean.create();
        System.out.println("web service started");
        System.out.println("web service started");
    }
}

啟動main方法,正常情況會發(fā)布成功

瀏覽器訪問http://127.0.0.1:8082/userService?wsdl 返回下面內(nèi)容說明發(fā)布成功

在這里插入圖片描述

二、客戶端進(jìn)行動態(tài)調(diào)用webservice接口

 public static void main(String[] args) throws Exception {
        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
        Client client = dcf.createClient("http://127.0.0.1:8082/userService?wsdl");
        // namespace是命名空間,methodName是方法名
        QName name = new QName("http://service.test.example.com/", "getUserInfo");
        Object[] objects = client.invoke(name, "我沒收到反饋");
        System.out.println(objects[0].toString());
    }

正常情況調(diào)用接口會返回成功

cxf的動態(tài)調(diào)用不適合傳遞自定義對象,需要傳遞自定義對象,需要使用靜態(tài)調(diào)用生成本地代碼

三、cxf靜態(tài)調(diào)用生成本地代碼

采用apache-cxf-3.4.3版本,jar包可到官網(wǎng)下載 http://cxf.apache.org/download.html

使用JAX-WS Proxy代理工廠方式開發(fā)客戶端,首先需要使用wsdl2java工具生成web service在本地的代理接口

1、配置環(huán)境變量

wsdl2java.bat在CXF根目錄\bin目錄下,使用之前需要配置CXF環(huán)境變量,CXF_HOME變量值為CXF根目錄,并在path中添加%CXF_HOME%\bin,如:

在這里插入圖片描述

在這里插入圖片描述

2、wsdl2java生成代理接口配置好環(huán)境變量后,打開CMD命令行窗口,將當(dāng)前目錄切換到j(luò)ava工程src目錄下,命令行輸入如下格式命令,回車,即可根據(jù)wsdl生成服務(wù)端的代理接口。

wsdl2java -p ws.cxf -client http://127.0.0.1:8082/userService?wsdl

在這里插入圖片描述

命令說明:

-p 指定代理接口所在包名,-client(生成客戶端) 后面的字符串聲明了服務(wù)接口的wsdl

public static void test() {
        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
        factory.setServiceClass(UserService.class);
        factory.setAddress("http://127.0.0.1:8082/userService");
        Object object = factory.create();
        UserService service = (UserService) object;
        UserVO userVO = new UserVO();
        userVO.setName("李師傅打開");
        String userInfo = service.getUserInfo(userVO);
        System.out.println(userInfo);
    }

3、第二種調(diào)用方法

 ExecuteBindQSService executeBindQSService = new ExecuteBindQSService(ExecuteBindQSService.getWsdlLocation(WSDL_URL));
        ExecutePtt executePtt = executeBindQSService.getExecuteBindQSPort();
	//獲取代理,并設(shè)置日志攔截器,打印日志
        Client client = ClientProxy.getClient(executePtt);
        client.getInInterceptors().add(new LoggingInInterceptor());
        client.getOutInterceptors().add(new LoggingOutInterceptor());
        // 超時時間設(shè)置
		HTTPConduit http = (HTTPConduit) clientProxy.getConduit();
		HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
		httpClientPolicy.setConnectionTimeout(Integer
				.valueOf(webServiceConTimeout));
		httpClientPolicy.setReceiveTimeout(Integer
				.valueOf(webServiceRevTimeout));
		httpClientPolicy.setAllowChunking(false);
		http.setClient(httpClientPolicy);
		//調(diào)用方法執(zhí)行
		Response response = executePtt.execute(request);

4、關(guān)閉元素校驗

@EndpointProperty(key = “soap.no.validate.parts”, value = “true”)

在這里插入圖片描述

四、使用的是apache的axis實現(xiàn)的

第二種訪問webservice的方法是通過idea生成客戶端代碼,訪問服務(wù)端接口向訪問本地接口一樣。使用的是apache的axis實現(xiàn)的。

以上就是Java使用cxf發(fā)布及調(diào)用webservice接口的方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Java 使用cxf調(diào)用webservice接口的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringJPA?做分頁條件查詢的代碼實踐

    SpringJPA?做分頁條件查詢的代碼實踐

    相信小伙伴們的項目很多都用到SpringJPA框架的吧,對于單表的增刪改查利用jpa是很方便的,但是對于條件查詢并且分頁?是不是很多小伙伴不經(jīng)常寫到,今天給大家分享SpringJPA?做分頁條件查詢的案例代碼,感興趣的朋友一起看看吧
    2024-03-03
  • 關(guān)于@ComponentScan?TypeFilter自定義指定掃描bean的規(guī)則

    關(guān)于@ComponentScan?TypeFilter自定義指定掃描bean的規(guī)則

    這篇文章主要介紹了關(guān)于@ComponentScan?TypeFilter自定義指定掃描bean的規(guī)則,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • java.Net.UnknownHostException異常處理問題解決

    java.Net.UnknownHostException異常處理問題解決

    這篇文章主要介紹了java.Net.UnknownHostException異常處理方法,問題原因是在系統(tǒng)的?/etc/Hostname中配置了主機(jī)名,而在/etc/hosts文件中沒有相應(yīng)的配置,本文給大家詳細(xì)講解,需要的朋友可以參考下
    2023-03-03
  • Java中字符串常見的一些拼接方式總結(jié)

    Java中字符串常見的一些拼接方式總結(jié)

    字符串拼接是我們在Java代碼中比較經(jīng)常要做的事情,就是把多個字符串拼接到一起,下面這篇文章主要給大家總結(jié)介紹了關(guān)于Java中字符串常見的一些拼接方式,需要的朋友可以參考下
    2023-04-04
  • spring在IoC容器中裝配Bean詳解

    spring在IoC容器中裝配Bean詳解

    這篇文章主要介紹了spring在IoC容器中裝配Bean詳解,具有一定借鑒價值,需要的朋友可以參考下
    2017-12-12
  • Java Socket+mysql實現(xiàn)簡易文件上傳器的代碼

    Java Socket+mysql實現(xiàn)簡易文件上傳器的代碼

    最近在做一個小項目,項目主要需求是實現(xiàn)一個文件上傳器,通過客戶端的登陸,把本地文件上傳到服務(wù)器的數(shù)據(jù)庫(本地的)。下面通過本文給大家分享下實現(xiàn)代碼,感興趣的朋友一起看看吧
    2016-10-10
  • 解決Spring運行時報錯:Consider defining a bean of type ‘xxx.xxx.xxx.Xxx‘ in your configuration

    解決Spring運行時報錯:Consider defining a bean o

    該文章主要講述了在使用Spring框架時,如果遇到某個bean未找到的錯誤,應(yīng)該在配置文件中定義該bean,解決方法是在對應(yīng)的類上添加@Component注解
    2025-01-01
  • MyBatis 參數(shù)綁定的具體實現(xiàn)

    MyBatis 參數(shù)綁定的具體實現(xiàn)

    本文主要介紹了MyBatis 參數(shù)綁定的具體實現(xiàn),包括默認(rèn)參數(shù)名、@Param注解和POJO/DTO對象三種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-01-01
  • Springboot處理CORS跨域請求的三種方法

    Springboot處理CORS跨域請求的三種方法

    這篇文章主要介紹了Springboot處理CORS跨域請求的三種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Spring Security 安全認(rèn)證的示例代碼

    Spring Security 安全認(rèn)證的示例代碼

    這篇文章主要介紹了Spring Security 安全認(rèn)證的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評論

志丹县| 逊克县| 广河县| 逊克县| 九江县| 延川县| 吕梁市| 祥云县| 华阴市| 勃利县| 阳江市| 铜鼓县| 屯昌县| 平潭县| 浦北县| 永德县| 随州市| 拜泉县| 大厂| 平山县| 浪卡子县| 青河县| 泽州县| 和田县| 福建省| 石泉县| 永福县| 偃师市| 清水河县| 揭东县| 错那县| 长岛县| 三原县| 江安县| 宁河县| 乐都县| 肥城市| 额尔古纳市| 东宁县| 老河口市| 克山县|