Миграция JAVA с jdk1.7 и weblogic 12c на jdk 1.8 и weblogic 14c

Я перенес веб-приложение с weblogic 12c и jdk1.7 на weblogic 14c и jdk1.8. Веб-приложение использует jax-re для остальных служб и имеет следующий пользовательский JacksonContextProvider для сопоставления json:

      package eu.sia.mdp.backoffice.common;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.TimeZone;

import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;

/**
 * ObjectMapper settings
 *
 * @author g.palladino
 *
 */
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JacksonContextResolver implements ContextResolver<ObjectMapper> {
    private final ObjectMapper objectMapper;
    
    private static final Logger log = LoggerFactory.getLogger( JacksonContextResolver.class );
    
    public JacksonContextResolver() {
        this.objectMapper = new ObjectMapper().setSerializationInclusion(Include.NON_NULL);
//      DATEFORMAT DF = NEW SIMPLEDATEFORMAT("YYYY-MM-DD HH:MM:SS.SSSZ");
//      this.objectMapper.setDateFormat(df);
        this.objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);        
        this.objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        this.objectMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT,true);        
        this.objectMapper.getSerializationConfig().getDateFormat().setTimeZone(TimeZone.getTimeZone("CET"));    
    }

    @Override
    public ObjectMapper getContext(Class<?> objectType) {
        
        return null;
    }
}

приложение для веб-сервисов использует jax-rs 2.0.1 и jersey 2.29, предоставленные сервером weblogic 14.1.1 (14c). В версии, построенной с помощью jdk1.7 и развернутой на сервере weblogic 12c, библиотеки не были предоставлены сервером, но помещены в файл pom без предоставленной области, и пользовательский ContextResolver работал нормально. Теперь, с предоставленными библиотеками, пользовательский ContextResolver полностью игнорируется, а веб-сервисы возвращают json в формате, который мне не нужен, например, даты были в формате «гггг-ММ-ддTHH: мм: ss.SSSZ» (2022 г. -12-16T11:33:21.123 0100' и теперь я получаю даты в формате 'yyyy-MM-ddTHH:mm:ss.SSSZ [UTC]' (2022-12-16T11:33:21.123Z [UTC]) и если передать эту дату службе отдыха в моем приложении, у меня будет ошибка несоответствия типа.Похоже, что используется ObjectMapper сервера.

текущий сервер Weblogic 14.1.1.

пом-файл:

      <!-- JAX-RS -->
        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>2.0.1</version>
            <scope>provided</scope>
        </dependency>
        
        <!--<dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>2.1.1</version>
            <scope>provided</scope>
        </dependency>-->

        <!-- CDI -->
        <dependency>
            <groupId>javax.enterprise</groupId>
            <artifactId>cdi-api</artifactId>
            <version>1.0</version>
            <scope>provided</scope>
        </dependency>

        <!-- Jersey -->
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
            <version>${jersey.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-server</artifactId>
            <version>${jersey.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-client</artifactId>
            <version>${jersey.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-moxy</artifactId>
            <version>${jersey.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-json-jackson</artifactId>
            <version>${jersey.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.ext</groupId>
            <artifactId>jersey-bean-validation</artifactId>
            <version>${jersey.version}</version>
            <scope>provided</scope>
        </dependency>

веб.xml

      <?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    metadata-complete="false">

    <servlet>
        <servlet-name>jersey-serlvet</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>eu.sia.mdp.backoffice</param-value>
        </init-param>
        <init-param>
            <param-name>jersey.config.server.provider.classnames</param-name>
            <param-value>com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider</param-value>
        </init-param>
       <init-param>
            <param-name>jersey.config.server.tracing</param-name>
            <param-value>ALL</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>jersey-serlvet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

    <mime-mapping>
        <extension>json</extension>
        <mime-type>application/json</mime-type>
    </mime-mapping>

    <resource-ref>
        <description>Database MP</description>
        <res-ref-name>jdbc/MPDB</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
</web-app>

weblogic.xml

      <?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="...">

   <container-descriptor>

      <prefer-application-packages>
         <package-name>org.slf4j.*</package-name>
         <package-name>org.apache.commons.logging.*</package-name>
         <package-name>com.sun.jersey.*</package-name>
        <!--<package-name>org.glassfish.jersey.*</package-name>
         <package-name>org.glassfish.hk2.*</package-name>-->
         <package-name>org.jvnet.hk2.*</package-name>
         <!--<package-name>jersey.repackaged.org.objectweb.asm.*</package-name>-->
         <package-name>org.objectweb.asm.*</package-name>
         <package-name>com.sun.ws.rs.ext.*</package-name>
         <!--<package-name>javax.ws.rs.*</package-name>
         <package-name>javax.validation.*</package-name>-->
         <package-name>org.hibernate.validator.*</package-name>
      </prefer-application-packages>

      <prefer-application-resources>
         <resource-name>org/slf4j/impl/StaticLoggerBinder.class</resource-name>
         <resource-name>org.hibernate.validator.*</resource-name>
         <resource-name>javax.validation.*</resource-name>
      </prefer-application-resources>

   </container-descriptor>

   <context-root>mdp-portale-bo</context-root>

   <library-ref>
      <library-name>jax-rs</library-name>
      <specification-version>2.0</specification-version>
      <exact-match>false</exact-match>
   </library-ref>

    <resource-description>
        <res-ref-name>jdbc/MDPDB</res-ref-name>
        <jndi-name>jdbc/MDPDB</jndi-name>
    </resource-description>

</weblogic-web-app>

Спасибо

0 ответов

Другие вопросы по тегам