• Spring boot 整合CXF webservice 遇到的问题及解决


    将WebService的WSDL生成的代码的命令: 

    wsimport -p com -s . com http://localhost:8080/service/user?wsdl
    

      

    Spring boot 整合CXF开发web service 遇到的问题:

      1、成功集成cxf后,发现只有webservice服务可以正常使用,其他请求url全部无法正常访问。

      解决办法:在发布服务配置类WebServiceConfig.java中,更改此方法名:

      @Bean
      public ServletRegistrationBean dispatcherServlet() 
    

      改为:

      @Bean
        public ServletRegistrationBean disServlet(){
            return new ServletRegistrationBean(new CXFServlet(),"/service/*");//发布服务名称
        }
    

      即可成功访问其他url

      是因为 public ServletRegistrationBean dispatcherServlet() 把默认映射覆盖掉了,把这个名字改掉,控制类方法就能访问了。

      更改此方法明后可以正常其他请求url,webservice服务也正常。

      出处:https://blog.csdn.net/hawako/article/details/80556676

       

      2、将webservice的WSDL生成的代码后调用方法,发现List无法set参数。

      原因:CXF就是只为List提供一个get方法

      解决办法:将List get出来后 add参数就行了,如下代码,

      user.getAddresses().addAll(addresses);
    

      

      3、在客户端测试时,报Exception:两个类具有相同的 XML 类型名称,请使用 @XmlType.name 和 @XmlType.namespace 为类分配不同的名称,如图所示:

        解决办法:找到报错的类

     

        对XmlType重新命名(最简单粗暴的方法):

     

        此解决办法来自:https://www.cnblogs.com/hedongfei/p/7652583.html

       4、在CXF调用接口的代码时,本地测试的时候,没有出现任何问题,但是将包部署到服务器的时候,client调用invoke方法的时候,出现了一段异常报错:Caused by: java.lang.ClassNotFoundException: com/sun/tools/internal/xjc/api/XJC

      原因:在网上查很多资料,大多说是因为服务器环境是指向 jre 而不是JDK,导致缺失依赖 tools.jar

      解决办法:

        查看JDK配置环境 JAVA_HOME 配置是否为 JDK,如不是,改为JDK;

        服务器上给 tomcat 指定 jdk 版本:在catalina.sh(或者catalina.bat)文件的开头,写入下面代码,为该Tomcat启动时指定特定版本的 jdk,

    export JAVA_HOME=/usr/local/jdk1.8      --路径是:Jdk8所在的目录
    export CATALINA_OPTS="-Djava.awt.headless=true" 
    

      如下图:

     

  • 相关阅读:
    Quick Sort 快速排序的原理及实现
    IAR_FOR_STM8开发之DEMO的建立
    跨域或者Internet访问Remoting[Remoting FAQ]
    2020 7 22 每日总结
    2020 7 23 每日总结
    2020 7 27 每日总结
    2020 7 20 每日总结
    2020 7 29 每日总结
    2020 7 21 每日总结
    2020 7 28 每日总结
  • 原文地址:https://www.cnblogs.com/Big-Boss/p/11912679.html
Copyright © 2020-2023  润新知