7.4. Jakarta RESTful 웹 서비스 및 REST Cryostat 애플리케이션 변경


JBoss EAP 6 번들 REST Cryostat 2는 Cryostat-RS 1.x의 구현이었습니다.

JBoss EAP 7 및 JBoss EAP 7.1에는 REST Cryostat 3.0.x가 포함되어 있습니다. 이 REST Cryostat 3.0.x는 Cryostat 339: Cryostat-RS 2.0: RESTful Web Services 사양에 정의된 대로 Cryostat-RS 2.0의 구현입니다.

JBoss EAP 7.4에는 Jakarta RESTful Web Services 2.1 의 구현인 REST Cryostat 3.15가 포함되어 있습니다. 이 릴리스에는 JDK 11에 대한 지원도 추가되었습니다. 일부 REST Cryostat 4 주요 기능을 제공하는 동안 이 릴리스는 REST Cryostat 3.0을 기반으로 하므로 이전 버전과의 호환성을 완전히 유지할 수 있습니다. 따라서 REST Cryostat 3.0에서 REST Cryostat 3.15로 마이그레이션할 때 몇 가지 문제가 발생할 수 있습니다. REST Cryostat REST Cryostat 3.15용 Java API에 대한 자세한 내용은 REST Cryostat Jakarta RESTful Web Services 3.15.0.Final API 를 참조하십시오.

JBoss EAP 8.0은 Jakarta RESTful Web Services 3.1 사양 을 구현하는 REST Cryostat 6.2를 지원합니다.

JBoss EAP 6.4에서 마이그레이션하는 경우 JBoss EAP에 포함된 Jackson 버전이 변경되었음을 유의하십시오. JBoss EAP 6.4에는 jackson 1.9.9가 포함되었습니다. JBoss EAP 7 이상에는 jackson 2.6.3 이상이 포함됩니다.

이 섹션에서는 이러한 변경 사항이 REST Cryostat 또는 Jakarta RESTful Web Services를 사용하는 애플리케이션에 미치는 영향에 대해 설명합니다.

7.4.1. REST Cryostat 더 이상 사용되지 않는 클래스

인터셉터 및 MessageBody 클래스

Cryostat 311: Cryostat-RS: RESTful Web Services용 Java™ API에는 인터셉터 프레임워크가 포함되어 있지 않아 REST Cryostat 2가 제공되었습니다. Cryostat 339: Cryostat-RS 2.0: RESTful Web Services를 위한 Java API는 공식 인터셉터 및 필터 프레임워크를 도입했기 때문에 REST Cryostat 2에 포함된 인터셉터 프레임워크는 더 이상 사용되지 않으며 REST Cryostat 3.x의 Jakarta REST 호환 인터셉터 기능으로 대체되었습니다. 관련 인터페이스는 jakarta.ws.rs.api 모듈의 jakarta.ws.ext 패키지에 정의됩니다.

다음 공급자가 JBoss EAP 8.0에서 제거되었습니다.

  • org.jboss.resteasy:resteasy-jackson-provider
  • org.jboss.resteasy:resteasy-jettison-provider
  • org.jboss.resteasy:resteasy-yaml-provider

다음은 Jakarta RESTful Web Services 대체가 있으므로 JBoss EAP 8.0에서 제거되었습니다.

참고

이전 REST Cryostat 릴리스의 모든 인터셉터는 새로운 Jakarta REST 필터 및 인터셉터 인터페이스와 병렬로 실행할 수 있습니다.

클라이언트 API

resteasy-jaxrs 의 REST Cryostat 클라이언트 프레임워크는 JBoss EAP 7.0의 Cryostat-RS 2.0 호환 resteasy-client 모듈로 교체되었습니다. 결과적으로 일부 REST Cryostat 클라이언트 API 클래스 및 메서드는 더 이상 사용되지 않습니다.

참고

org.jboss.resteasy.client.jaxrs API 클래스에 대한 자세한 내용은 REST Cryostat Jakarta REST JavaDoc 를 참조하십시오.

StringConverter

org.jboss.resteasy.spi.StringConverter 클래스는 REST Cryostat 3.x 및 JBoss EAP 8.0에서 더 이상 사용되지 않습니다. 이 기능은 Jakarta REST jakarta.ws.rs.ext.ParamConverterProvider 클래스를 사용하여 교체할 수 있습니다.

7.4.2. 제거 또는 REST Cryostat 클래스

ResteasyProviderFactory 메서드 추가

대부분의 org.jboss.resteasy.spi.ResteasyProviderFactory add() 메서드가 REST Cryostat 3.0에서 제거되거나 보호됩니다. 예를 들어 add builtInMessageBody Cryostat()addbuiltInMessageBodyWriter() 메서드가 제거되고 addMessageBody Cryostat()addMessageBodyWriter() 메서드가 보호되었습니다.

이제 registerProvider()registerProviderInstance() 메서드를 사용해야 합니다.

REST Cryostat 3에서 제거된 추가 클래스

Jakarta REST 메서드에 대한 응답을 캐시해야 하는 @org.jboss.resteasy.annotations.cache.ServerCached 주석은 REST Cryostat 3에서 제거되었으며 애플리케이션 코드에서 제거해야 합니다.

7.4.3. 추가 REST Cryostat 변경

이 섹션에서는 JBoss EAP용 REST Cryostat의 몇 가지 추가 변경 사항에 대해 설명합니다.

SignedInput 및 SignedOuput
  • resteasy-crypto 에 대한 SignedInputSignedOutput 의 경우 Content-TypeRequest 또는 Response 오브젝트에서 multipart/signed 또는 @Consumes 또는 @Produces 주석을 사용하여 multipart/signed로 설정해야 합니다.
  • SignedOutputSignedInput 을 사용하여 @Produces 또는 @Consumes 주석에 유형을 설정하여 바이너리 형식으로 application/pkcs7-signature MIME 유형 형식을 반환할 수 있습니다.
  • @Produces 또는 @Consumestext/plain MIME 유형인 경우 SignedOutput 은 base64로 인코딩되고 문자열로 전송됩니다.
보안 필터

@RolesAllowed,@PermitAll@DenyAll 에 대한 보안 필터는 이제 "401 Unauthorized" 대신 "403 Forbidden"을 반환합니다.

클라이언트 측 필터

Cryostat-RS 2.0에 도입된 클라이언트 측 필터는 REST Cryostat 3.0 이전 릴리스의 REST Cryostat 클라이언트 API를 사용할 때 바인딩 및 실행되지 않습니다.

비동기 HTTP 지원

Cryostat-RS 2.0 사양은 @Suspended 주석 및 AsynResponse 인터페이스를 사용하여 비동기 HTTP 지원을 추가했기 때문에 비동기 HTTP의 REST Cryostat 전용 API는 더 이상 사용되지 않으며 향후 REST Cryostat 릴리스에서 제거될 수 있습니다. 비동기 Tomcat 및 비동기 JBoss Web 모듈도 서버 설치에서 제거되었습니다. Servlet 3.0 컨테이너 이상을 사용하지 않는 경우 비동기 HTTP 서버 측 처리가 시뮬레이션되어 동일한 요청 스레드에서 동시에 실행됩니다.

서버 측 캐시

서버 측 캐시 설정이 변경되었습니다. 자세한 내용은 REST Cryostat 문서를 참조하십시오.

YAML 공급자 설정 변경 사항

이전 릴리스의 JBoss EAP에서는 REST Cryostat YAML 공급자 설정이 기본적으로 활성화되어 있었습니다. 이는 JBoss EAP 7에서 변경되었습니다. 이제 YAML 공급자가 기본적으로 비활성화되어 있습니다. 그 사용은 unmarshalling에 사용되는 SnakeYAML 라이브러리의 보안 문제로 인해 지원되지 않으며 애플리케이션에서 명시적으로 활성화해야 합니다. 애플리케이션에서 YAML 공급자를 활성화하고 Maven 종속성을 추가하는 방법에 대한 자세한 내용은 JBoss EAP 7.4 Developing Web Services ApplicationsYAML 공급자 를 참조하십시오.

Content-Type Header의 기본 Charset UTF-8

JBoss EAP 7.1부터 resteasy.add.charset 매개 변수는 기본적으로 true 로 설정됩니다. 명시적 charset 없이 resource 메서드에서 text/* 또는 application/xml* 미디어 유형을 반환하면 REST Cryostat가 반환된 content-type 헤더에 charset=UTF-8 을 추가하지 않으려면 resteasy.add.charset 매개변수를 false 로 설정할 수 있습니다.

텍스트 미디어 유형 및 문자 세트에 대한 자세한 내용은 JBoss EAP 7.4 Developing Web Services Applications텍스트 미디어 유형 및 문자 집합 을 참조하십시오.

SerializableProvider

신뢰할 수 없는 소스에서 Java 개체를 역직렬화하는 것은 안전하지 않습니다. 이러한 이유로 JBoss EAP 7부터 org.jboss.resteasy.plugins.providers.SerializableProvider 클래스는 기본적으로 비활성화되어 있으며 이 공급자를 사용하지 않는 것이 좋습니다.

리소스 메서드에 대한 요청 일치

REST Cryostat 3에서는 Cryostat-RS 사양에 정의된 일치 규칙 구현에 대한 개선 및 수정이 수행되었습니다. 특히 하위 리소스 메서드 및 하위 리소스 메서드의 모호한 URI를 처리하는 방법에 대한 변경이 수행되었습니다.

REST Cryostat 2에서는 동일한 URI가 있는 다른 하위 리소스가 있는 경우에도 하위 리소스를 성공적으로 실행할 수 있었습니다. 이 동작은 사양에 따라 올바르지 않았습니다.

REST Cryostat 3에서는 하위 리소스 및 하위 리소스에 대한 모호한 URI가 있는 경우 하위 리소스를 호출하는 것은 성공할 수 있지만 하위 리소스 호출은 HTTP 상태 405 Method Not Allowed 오류가 발생합니다.

다음 예제에는 하위 리소스 메서드 및 하위 리소스 Cryostat에 대한 모호한 @Path 주석이 포함되어 있습니다. 두 끝점 모두에 대한 URI, anotherResourceanotherResourceLocator 는 동일합니다. 두 끝점의 차이점은 anotherResource 메서드가 REST 동사인 POST 와 연결되어 있다는 것입니다. anotherResourceLocator 메서드는 REST 동사와 연결되어 있지 않습니다. 사양에 따라 REST 동사가 있는 끝점(이 경우 anotherResource 메서드)이 항상 선택됩니다.

@Path("myResource")
public class ExampleSubResources {
    @POST
    @Path("items")
    @Produces("text/plain")
    public Response anotherResource(String text) {
        return Response.ok("ok").build();
    }

    @Path("items")
    @Produces("text/plain")
    public SubResource anotherResourceLocator() {
        return new SubResource();
    }
}

7.4.4. REST Cryostat SPI 변경

REST Cryostat SPI 공급자가 JBoss EAP 8에서 제거되었습니다.

SPI Exceptions

모든 SPI 실패 예외는 더 이상 사용되지 않으며 내부적으로 사용되지 않습니다. 해당 Jakarta REST 예외로 교체되었습니다.

Expand
더 이상 사용되지 않는 예외jaxrs-api 모듈의 Exception 교체

org.jboss.resteasy.spi.ForbiddenException

jakarta.ws.rs.ForbiddenException

org.jboss.resteasy.spi.MethodNotAllowedException

jakarta.ws.rs.NotAllowedException

org.jboss.resteasy.spi.NotAcceptableException

jakarta.ws.rs.NotAcceptableException

org.jboss.resteasy.spi.NotFoundException

jakarta.ws.rs.NotFoundException

org.jboss.resteasy.spi.UnauthorizedException

jakarta.ws.rs.NotAuthorizedException

org.jboss.resteasy.spi.UnsupportedMediaTypeException

jakarta.ws.rs.NotSupportedException

InjectorFactory 및 Registry

InjectorFactoryRegistry SPI가 변경되었습니다. 문서화 및 지원되는 REST Cryostat를 사용하는 경우 이 문제는 문제가 되지 않습니다.

7.4.5. jackson 공급자 변경

JBoss EAP 6.4에 포함된 jackson 버전이 변경되었습니다. JBoss EAP 7부터는 jackson 공급자가 resteasy-jackson-provider 에서 resteasy-jackson2-provider 로 변경되었습니다.

resteasy-jackson2-provider 로 업그레이드하려면 일부 패키지를 변경해야 합니다. 예를 들어 jackson 주석 패키지가 org.codehaus.jackson.annotate 에서 com.fasterxml.jackson.annotation 로 변경되었습니다.

7.4.6. Spring REST Cryostat 통합 변경 사항

JBoss EAP 8.0은 REST Cryostat 6.2를 지원합니다. JBoss EAP 8.0과 함께 Spring 6.0 프레임워크를 사용하려면 Java 17을 사용해야 합니다.

Spring 4.0 프레임워크에는 Java 8 지원이 도입되었습니다. REST Cryostat 3.x 통합을 Spring과 통합하려는 경우 JBoss EAP 7에서 지원하는 가장 빠른 안정적인 버전이므로 4.2.x를 배포에서 최소 Spring 버전으로 지정해야 합니다.

7.4.7. REST Cryostat Cryostattison JSON 공급자 변경

REST Cryostat Cryostattison JSON 공급자는 JBoss EAP 7 이후 더 이상 사용되지 않으며 기본적으로 배포에 더 이상 추가되지 않습니다. 권장되는 REST Cryostat Jackson 공급자로 전환하는 것이 좋습니다. 다음 예에 설명된 대로 Cryostat 공급자를 계속 사용하려면 jboss-deployment-descriptor.xml 파일에서 이에 대한 명시적 종속성을 정의해야 합니다.

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
  <deployment>
    <exclusions>
      <module name="org.jboss.resteasy.resteasy-jackson2-provider"/>
      <module name="org.jboss.resteasy.resteasy-jackson-provider"/>
    </exclusions>
    <dependencies>
      <module name="org.jboss.resteasy.resteasy-jettison-provider" services="import"/>
    </dependencies>
  </deployment>
</jboss-deployment-structure>

명시적 종속성을 정의하는 방법에 대한 자세한 내용은 JBoss EAP 7.4 개발 가이드에서 배포에 Explicit 모듈 종속성 추가 를 참조하십시오.

7.4.8. MicroProfile for JBoss EAP

MicroProfile 은 개발자가 애플리케이션을 수정하거나 다시 패키징하지 않고도 여러 환경에서 실행되도록 애플리케이션 및 마이크로서비스를 구성하는 데 사용할 수 있는 사양의 이름입니다. 이전에는 MicroProfile 을 기술 프리뷰로 JBoss EAP 7.3에서 사용할 수 있었지만 이후 제거되었습니다. MicroProfile 은 이제 JBoss EAP XP에서만 사용할 수 있습니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동