2021-04-08

Spring Boot 集成 WebService

1.向pom.xml中添加集成WebService的相关依赖

      <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web-services</artifactId>
            <version>2.3.9.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>3.1.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>3.1.6</version>
      </dependency>

2.创建服务端接口

 @WebService(name = "demoService", //服务名称
             targetNamespace = "http://service.webservice.com" //命名空间,接口包名倒序
)
public interface DemoService {

    public String sayHello(String user);
}

3.创建服务端接口实现类

@WebService(name = "demoService",  //与接口名称保持一致
      targetNamespace = "http://service.webservice.com",   //接口名称倒叙
      endpointInterface = "com.webservice.service.DemoService"   //接口地址
)
public class DemoServiceImpl implements DemoService {

  @Override
  public String sayHello(String user) {
      return user + ",现在的时间是:" + "(" + new Date() + ")";
  }

}

4.创建CXF配置类

@Configuration
public class CxfConfig {

//这边名称注意如果改成 dispatcherServlet  启动时报错
  @Bean
  public ServletRegistrationBean disServlet() {
      return new ServletRegistrationBean(new CXFServlet(),"/demo/*");
  }

  @Bean(name = Bus.DEFAULT_BUS_ID)
  public SpringBus springBus() {
      return new SpringBus();
  }

  @Bean
  public DemoService demoService() {
      return new DemoServiceImpl();
  }
 

  @Bean
  public Endpoint endpoint() {
      EndpointImpl endpoint = new EndpointImpl(springBus(), demoService());
      endpoint.publish("/api");
      return endpoint;
  }
  
}

5.启动服务后访访问 http://127.0.0.1:8089/demo/api?wsdl 我这边端口号时8089 注意,出现这种xml格式说明成功

在这里插入图片描述

6. 调用 如果在另一个服务中调用webService,需要和服务端包名保持一直不然会报错,这是我的理解

public static void main(String[] args) {
      // 创建动态客户端
      JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
      Client client = dcf.createClient("http://127.0.0.1:8089/demo/api?wsdl");

      // 需要密码的情况需要加上用户名和密码
      // client.getOutInterceptors().add(new ClientLoginInterceptor(USER_NAME,PASS_WORD));
      Object[] objects = new Object[0];
      try {
          // invoke("方法名",参数1,参数2,参数3....);
          objects = client.invoke("sayHello", "老王");
          System.out.println("返回数据:" + objects[0]);
      } catch (java.lang.Exception e) {
          e.printStackTrace();
      }

  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值