zoukankan      html  css  js  c++  java
  • websphere8.5 与cxf2.x冲突问题

    一个客户was部署的小问题,记录一下。

    问题现象

    在我们的服务中用调用别人的webservice服务报错,框架用的cxf。
    报错关键信息有:
    E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet 错误]-[cvm_portal]: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userServiceClient': FactoryBean threw exception on object creation; nested exception is org.apache.cxf.service.factory.ServiceConstructionException
    Caused by: java.lang.ClassCastException: com.xxx.xx.userservice.TestInTableToTable$JaxbAccessorF_requestBody incompatible with com.sun.xml.bind.v2.runtime.reflect.Accessor

    解决办法

    1. 加参数,设置JVM的参数为:-Dcom.ibm.websphere.webservices.DisableIBMJAXWSEngine=true
    2. 删除应用中的部分jar包,列表如下:
      geronimo-stax-api_1.0_spec-1.0.1.jar
      stax-utils-20060502.jar
      geronimo-activation_1.1_spec-1.1.jar
      jaxb-api-2.2.3.jar
      jaxb-impl-2.2.4-1.jar

    可以参见 https://stackoverflow.com/questions/31110951/apache-cxf-2-7-11-on-websphere-8-5

    注意:
    如果你的webservice的客户端 (或服务端,具体看你充当的是服务端还是客户端的角色)的类是用java6 编译的 那么,was 也需要用1.6的JDK,如果用1.8的JDK也会报错!

    如果一定要用1.8 怎么办?
    也有办法:
    用1.8 报错的信息是:xxxx incompatible with com.sun.xml.internal.bind.v2.runtime.reflect.Accessor

    1. jaxb-api-2.2.3.jar jaxb-impl-2.2.4-1.jar 放回去,不要删除。
    2. 直接点击步骤导航中你的服务器的名字 返回刚才的 服务器基础结构/Java SDK 那一页
      点击Java 和进程管理 展开 点击 进程定义 点击右上角 Java 虚拟机
      在 通用 JVM 参数 一栏中 加上 -Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true

    注意 - 前面有个空格
    4. 停掉所有节点,重启服务(在环境上重启 不是在控制台 ),然后测试一下
    参考 https://stackoverflow.com/questions/15569395/netbeans-with-jaxb-random-classcastexception-cannot-be-cast-to-com-sun-xml-bin/27118756#27118756

  • 相关阅读:
    DOM操作:
    定时器
    7.thinkphp框架控制器
    1.thinkphp框架介绍
    4.thinkphp框架url访问
    6.thinkphp框架路由
    2.thinkphpk框架基础
    5.thinkphp框架配置文件
    3.thinkphp框架入口文件
    8.thinkphp框架数据库
  • 原文地址:https://www.cnblogs.com/simoncook/p/8626113.html
Copyright © 2011-2022 走看看