龙空技术网

springboot(十九)整合cxf jaxws 发布webservice并调用

聪明的晚风zqw 109

前言:

而今兄弟们对“apachecxf接口怎么调用”大概比较关怀,咱们都需要知道一些“apachecxf接口怎么调用”的相关内容。那么小编同时在网上搜集了一些关于“apachecxf接口怎么调用””的相关内容,希望我们能喜欢,姐妹们一起来了解一下吧!

demo地址:

1、添加依赖

gradle:

    compile group: 'org.apache.cxf', name: 'cxf-spring-boot-starter-jaxws', version: '3.3.4'

maven:

<!--  --><dependency>    <groupId>org.apache.cxf</groupId>    <artifactId>cxf-spring-boot-starter-jaxws</artifactId>    <version>3.3.4</version></dependency>
2、编写接口
package com.zqw.test.cxf;import org.apache.cxf.service.Service;import org.springframework.stereotype.Component;import javax.jws.WebMethod;import javax.jws.WebParam;import javax.jws.WebService;/** * //TODO * * @author zhuquanwen * @vesion 1.0 * @date 2019/11/10 18:14 * @since jdk1.8 */@WebService(name = "demo", targetNamespace = ";)//@Componentpublic interface DemoService {    @WebMethod    public String myTest();    @WebMethod    public String get(@WebParam(name = "id") String id);}
3、编写实现类
package com.zqw.test.cxf;/** * //TODO * * @author zhuquanwen * @vesion 1.0 * @date 2019/11/10 18:18 * @since jdk1.8 */import org.springframework.stereotype.Component;import javax.jws.WebService;@WebService(serviceName = "demo", //web服务名称        endpointInterface = "com.zqw.test.cxf.DemoService",//接口全包名        targetNamespace = ";)@Componentpublic class DemoServiceImpl implements DemoService {    @Override    public String myTest() {        System.out.println(1111);        return "Hello World!";    }    @Override    public String get(String id) {        return "test hello world";    }}
4、编写配置类
package com.zqw.test.cxf;import org.apache.cxf.Bus;import org.apache.cxf.jaxws.EndpointImpl;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.xml.ws.Endpoint;/** * //TODO * * @author zhuquanwen * @vesion 1.0 * @date 2019/11/10 18:24 * @since jdk1.8 */@Configurationpublic class CxfConfig {    @Autowired    private Bus bus;    @Autowired    DemoService demoService;    /**     *      * 此方法被注释后:wsdl访问地址为     * 去掉注释后:wsdl访问地址为:     * @return     *///    @SuppressWarnings("all")//    @Bean//    public ServletRegistrationBean dispatcherServlet() {//        return new ServletRegistrationBean(new CXFServlet(), "/cxf/*");//    }    /** JAX-WS     * 站点服务     * **/    @Bean    public Endpoint endpoint() {        EndpointImpl endpoint = new EndpointImpl(bus, demoService);        endpoint.publish("/demo");        return endpoint;    }}
5、编写启动类
package com.zqw.test.cxf;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;/** * //TODO * * @author zhuquanwen * @vesion 1.0 * @date 2019/11/10 18:36 * @since jdk1.8 */@SpringBootApplicationpublic class App {    public static void main(String[] args) {        SpringApplication.run(App.class, args);    }}
6、查看wsdl

进入

7、客户端调用

package com.zqw.test.cxf;import org.apache.cxf.endpoint.Client;import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;/** * //TODO * * @author zhuquanwen * @vesion 1.0 * @date 2019/11/10 18:42 * @since jdk1.8 */@RunWith(SpringRunner.class)@SpringBootTestpublic class AppTets {    @Test    public void contextLoads() throws Exception {        JaxWsDynamicClientFactory clientFactroy = JaxWsDynamicClientFactory.newInstance();        Client client = clientFactroy.createClient(";);        Object[] invoke = client.invoke("myTest");        System.out.println(invoke[0].toString());        Object[] invoke2 = client.invoke("get", "11");        System.out.println(invoke2[0].toString());    }}

标签: #apachecxf接口怎么调用