Проблема после повторного развертывания веб-службы apache-cxf на сервере Tomee - PullRequest
0 голосов
/ 17 сентября 2018

Я создал веб-сервис, используя apache-cxf и используя поставщика johnzon для маршалинга и демаршаллинга JSON, а также настроил службу провайдера в файле open-ejb-jar. После того, как я разверну приложение в Tomee Sever, я могу получить доступ к своему API, но после не развертывания и повторного развертывания моего приложения. Я не могу получить доступ к моему API, используя http://localhost:8080/demo/school-services/student/1

Я получаю ошибку ниже.

<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 file

<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 Не могли бы вы помочь мне решить эту проблему. Спасибо, Д Саху

1 Ответ

0 голосов
/ 17 сентября 2018

Похоже, проблема с преобразователем json - ваш код использует Apache Johnzon для преобразования объекта Java в Json, который находится в контейнере, а не в архиве развертывания. Вы можете попробовать изменить провайдера json для использования jettison или jackson-jaxb, добавив библиотеки, если с помощью maven добавьте зависимость:

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

Или чтобы попытаться принудительно загрузить его из веб-приложения, добавьте в 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> 
...