springboot使用webservice发布和调用接口的实例详解

 更新时间:2024年10月12日 09:42:09   作者:z不像程序员的程序猿  
本文介绍了如何在Springboot中使用webservice发布和调用接口,涵盖了必要的依赖添加和代码示例,文中提供了服务端和客户端的实现方法,以及如何设置端口和服务地址,帮助读者更好地理解和应用Springboot结合webservice的技术

springboot使用webservice发布和调用接口

加入以下依赖:

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

服务端service代码:

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
/**
 * TODO(描述这个类的作用) 
 * @author zyl
 * @date 2019年3月27日
 */
/**
 * 创建服务接口
 * @author oKong
 *
 */
@WebService()
public interface HelloWebService {
    @WebMethod
    public String Hello(@WebParam(name="name") String name);
}

服务端实现类代码:

import javax.jws.WebParam;
import javax.jws.WebService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * TODO(描述这个类的作用) 
 * @author zyl
 * @date 2019年3月27日
 */
@WebService(
        targetNamespace = "demo.example.com", //wsdl命名空间 
        serviceName = "HelloWebService",                 //portType名称 客户端生成代码时 为接口名称
        endpointInterface = "com.example.demo.configuraction.webservice.HelloWebService")//指定发布webservcie的接口类,此类也需要接入@WebService注解
@Configuration
public class HelloWebServiceImpl implements HelloWebService{
    @Override
    public String Hello(@WebParam(name="name") String name) {
        System.out.println("欢迎你"+name);
        return "欢迎你"+name;
    }
}

服务端发布服务类:
我的端口设置为9999,所以我的服务地址为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() {
        //注册servlet 拦截/ws 开头的请求 不设置 默认为:/services/*
        return new ServletRegistrationBean(new CXFServlet(), "/ws/*");
    }
    /*
     * 发布endpoint
     */
    @Bean
    public Endpoint endpoint() {
        EndpointImpl endpoint = new EndpointImpl(bus, helloWebService);
        endpoint.publish("/helloWebService");//发布地址
        return endpoint;
    }
}

客户端调用服务代码:
以下两种方法选一即可

import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
/**
 * @ClassName:CxfClient
 * @Description:webservice客户端:
 *                 该类提供两种不同的方式来调用webservice服务
 *              1:代理工厂方式
 *              2:动态调用webservice
 * @author Jerry
 * @date:2018年4月10日下午4:14:07
 */
public class CxfClient {
    public static void main(String[] args) {
        CxfClient.main1();
//        CxfClient.main2();
    }
    /**
     * 1.代理类工厂的方式,需要拿到对方的接口地址
     */
    public static void main1() {
        try {
            // 接口地址
            String address = "http://127.0.0.1:9090/ws/helloWebService?wsdl";
            // 代理工厂
            JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();
            // 设置代理地址
            jaxWsProxyFactoryBean.setAddress(address);
            // 设置接口类型
            jaxWsProxyFactoryBean.setServiceClass(HelloWebService.class);
            // 创建一个代理接口实现
            HelloWebService us = (HelloWebService) jaxWsProxyFactoryBean.create();
            // 数据准备
            String userId = "zz";
            // 调用代理接口的方法调用并返回结果
            String result = us.Hello(userId);
            System.out.println("返回结果:" + result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 2:动态调用
     */
    public static void main2() {
        // 创建动态客户端
        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("方法名",参数1,参数2,参数3....);
            objects = client.invoke("getUserName", "maple");
            System.out.println("返回数据:" + objects[0]);
        } catch (java.lang.Exception e) {
            e.printStackTrace();
        }
    }
}

到此这篇关于springboot使用webservice发布和调用接口的文章就介绍到这了,更多相关springboot webservice发布和调用接口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java中关于内部类的使用详解

    java中关于内部类的使用详解

    本篇文章介绍了,在java中关于内部类的使用详解。需要的朋友 参考下
    2013-04-04
  • java实现在线聊天系统

    java实现在线聊天系统

    这篇文章主要为大家详细介绍了java实现在线聊天系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • Java实现压缩图片大小

    Java实现压缩图片大小

    这篇文章主要为大家详细介绍了Java实现压缩图片大小,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • 如何使用mybatis-generator自动生成代码

    如何使用mybatis-generator自动生成代码

    这篇文章主要介绍了如何使用mybatis-generator自动生成代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • ThreadLocal原理介绍及应用场景

    ThreadLocal原理介绍及应用场景

    本文详细讲解了ThreadLocal原理介绍及应用场景,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • Java concurrency之锁_动力节点Java学院整理

    Java concurrency之锁_动力节点Java学院整理

    这篇文章主要为大家详细介绍了Java concurrency之锁的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Java GUI实现学生成绩管理系统

    Java GUI实现学生成绩管理系统

    这篇文章主要为大家详细介绍了Java GUI实现学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • Java 和 Scala 如何调用变参

    Java 和 Scala 如何调用变参

    这篇文章主要介绍了Java 和 Scala 如何调用变参,帮助大家更好的理解和学习Java与Scala,感兴趣的朋友可以了解下
    2020-09-09
  • Kafka常用命令之kafka-console-consumer.sh解读

    Kafka常用命令之kafka-console-consumer.sh解读

    这篇文章主要介绍了Kafka常用命令之kafka-console-consumer.sh解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java设置JSON字符串参数编码的示例详解

    Java设置JSON字符串参数编码的示例详解

    在Java中创建JSON字符串,我们可以使用多个库,其中最流行的是Jackson、Gson和org.json,,下面给大家分享Java设置JSON字符串参数编码的示例,感兴趣的朋友一起看看吧
    2024-06-06

最新评论