亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

一、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ā)布成功

在這里插入圖片描述

二、客戶端進行動態(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接口的方法詳解的詳細內(nèi)容,更多關(guān)于Java 使用cxf調(diào)用webservice接口的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java基于Scanner對象的簡單輸入計算功能示例

    Java基于Scanner對象的簡單輸入計算功能示例

    這篇文章主要介紹了Java基于Scanner對象的簡單輸入計算功能,結(jié)合實例形式分析了Java使用Scanner對象獲取用戶輸入半徑值計算圓形面積功能,需要的朋友可以參考下
    2018-01-01
  • Postman form-data、x-www-form-urlencoded的區(qū)別及說明

    Postman form-data、x-www-form-urlencoded的區(qū)別及說明

    這篇文章主要介紹了Postman form-data、x-www-form-urlencoded的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Spring Cloud Gateway網(wǎng)關(guān)XSS過濾方式

    Spring Cloud Gateway網(wǎng)關(guān)XSS過濾方式

    這篇文章主要介紹了Spring Cloud Gateway網(wǎng)關(guān)XSS過濾方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • JVM原理之類加載的全過程

    JVM原理之類加載的全過程

    文章詳細介紹了Java類加載過程,包括加載、鏈接、初始化、使用和卸載五個階段,并解釋了符號引用和直接引用的區(qū)別,以及類變量和實例變量的區(qū)別,此外,還介紹了Class.forName()方法的作用和使用場景
    2025-01-01
  • java阻塞隊列BlockingQueue詳細解讀

    java阻塞隊列BlockingQueue詳細解讀

    這篇文章主要介紹了java阻塞隊列BlockingQueue詳細解讀,在新增的Concurrent包中,BlockingQueue很好的解決了多線程中,如何高效安全“傳輸”數(shù)據(jù)的問題,通過這些高效并且線程安全的隊列類,為我們快速搭建高質(zhì)量的多線程程序帶來極大的便利,需要的朋友可以參考下
    2023-10-10
  • spring AOP的Around增強實現(xiàn)方法分析

    spring AOP的Around增強實現(xiàn)方法分析

    這篇文章主要介紹了spring AOP的Around增強實現(xiàn)方法,結(jié)合實例形式分析了spring面向切面AOP的Around增強具體步驟與相關(guān)操作方法,需要的朋友可以參考下
    2020-01-01
  • 淺談Java中replace與replaceAll區(qū)別

    淺談Java中replace與replaceAll區(qū)別

    這篇文章主要介紹了Java中replace與replaceAll區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Spring Boot 基于注解的 Redis 緩存使用詳解

    Spring Boot 基于注解的 Redis 緩存使用詳解

    本篇文章主要介紹了Spring Boot 基于注解的 Redis 緩存使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 詳解Java并發(fā)包中線程池ThreadPoolExecutor

    詳解Java并發(fā)包中線程池ThreadPoolExecutor

    ThreadPoolExecutor是Java語言對于線程池的實現(xiàn)。線程池技術(shù)使線程在使用完畢后不回收而是重復(fù)利用。如果線程能夠復(fù)用,那么我們就可以使用固定數(shù)量的線程來解決并發(fā)問題,這樣一來不僅節(jié)約了系統(tǒng)資源,而且也會減少線程上下文切換的開銷
    2021-06-06
  • Spark學(xué)習(xí)筆記之Spark中的RDD的具體使用

    Spark學(xué)習(xí)筆記之Spark中的RDD的具體使用

    這篇文章主要介紹了Spark學(xué)習(xí)筆記之Spark中的RDD的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06

最新評論