【问题标题】:Getting issue after redeployment of apache-cxf web service in tomee server在 tomee 服务器中重新部署 apache-cxf Web 服务后出现问题
【发布时间】:2018-09-17 07:29:40
【问题描述】:

我使用 apache-cxf 创建了 Web 服务,并使用 johnzon 提供程序对 JSON 进行编组和解组,并在 open-ejb-jar 文件中配置了提供程序服务。在 tomee 服务器中部署应用程序后,我可以访问我的 api,但在取消部署并再次部署我的应用程序之后。我无法使用 http://localhost:8080/demo/school-services/student/1 访问我的 api

我遇到了错误。

<ns1:XMLFault xmlns:ns1="http://cxf.apache.org/bindings/xformat"><ns1:faultstring xmlns:ns1="http://cxf.apache.org/bindings/xformat">java.lang.NoClassDefFoundError: org/apache/johnzon/mapper/ac`enter code here`cess/FieldAndMethodAccessMode$CompositeReader</ns1:faultstring></ns1:XMLFault>

下面是我的配置文件openejb-jar.xml文件

<openejb-jar>
        <pojo-deployment class-name="jaxrs-application">
            <properties>
                # optional but requires to skip scanned providers if set to true 
                cxf.jaxrs.skip-provider-scanning = true 
                 cxf.jaxrs.providers = johnzon,org.apache.openejb.server.cxf.rs.EJBAccessExceptionMapper 
            </properties>
        </pojo-deployment>
    </openejb-jar>
        resources.xml file 


<resources>

        <Service id="johnzon" class-name="org.apache.johnzon.jaxrs.ConfigurableJohnzonProvider">
        # 1M 
        maxSize = 1048576 
        bufferSize = 1048576 
        # Additional types to ignore 
        ignores = org.apache.cxf.jaxrs.ext.multipart.MultipartBody 
      </Service>
    </resources>

请查看附加的演示应用程序 git repo:https://github.com/dharmendrasahu08/spring_boot_application/tree/master/demo 你能帮我解决这个问题吗? 谢谢, D萨胡

【问题讨论】:

    标签: java rest cxf apache-tomee


    【解决方案1】:

    看起来像 json 转换器问题 - 您的代码正在使用 Apache Johnzon 将 Java 对象转换为 Json,该对象位于容器中而不是部署存档中。如果使用 maven 添加依赖项,您可以尝试更改 json 提供程序以使用 jettison 或 jackson-jaxb 添加库:

    org.codehaus.jettison:jettison:x.y.z
    

    或者尝试强制从 webapp 加载它,添加 conf/system.properties:

    openejb.forced-load=org.apache.cxf.jaxrs.provider.json.JSONProvider 
    

    尝试更改 openejb-jar.xml

    <?xml version="1.0" encoding="UTF-8"?> 
     <openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.openejb.org/openejb-jar/1.1"> 
         <pojo-deployment  class-name="jaxrs-application"> 
             <properties> 
                 cxf.jaxrs.providers =  org.apache.cxf.jaxrs.provider.json.JSONProvider 
             </properties> 
         </pojo-deployment> 
     </openejb-jar> 
    

    【讨论】:

    • 我已完成更改,但 API 未启动。出现 404 错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 2014-12-17
    • 2020-11-17
    相关资源
    最近更新 更多