4.2. 기타 변경 사항


패키지 네임스페이스가 변경되는 것 외에도 이전 EE 버전으로 작성된 애플리케이션은 자카르타 EE 10에 포함된 여러 사양의 변경 사항에 맞게 조정해야 할 수 있습니다. 다음 섹션에서는 이러한 변경 사항에 대해 설명하는데, 이는 대부분 장기 사용 중단된 API 요소가 제거됩니다.

다음 섹션에서는 javax 네임스페이스를 사용하는 제거된 API 요소의 인스턴스에 대해 자카르타 EE 9에서 사용되는 jakarta 네임스페이스에서 동등한 제거가 수행되었습니다. 따라서 javax 네임스페이스를 jakarta 로 교체하도록 애플리케이션을 업데이트한 경우 javax 를 언급하는 항목이 애플리케이션에 적용 가능한 것으로 가정합니다.

4.2.1. Jakarta Contexts and dependency Cryostat Discovery

CDI 4.0 사양 변경 노트에 따라 빈 beans.xml 파일이 있는 배포에서 Contexts 및 dependency Cryostat 또는 CDI 빈을 검색하는 기본 동작이 모두 주석 으로 변경되었습니다. 즉, 이러한 배포에서는 Quarkus 정의 주석이 있는 배포 클래스만 CDI에서 검색됩니다. 빈을 사용하는 모든 애플리케이션 클래스에 이러한 주석이 있는 경우 이 CDI 변경에 영향을 미치지 않습니다. 그러지 않으면 CDI에서 특정 8080을 제공하는 유형을 찾을 수 없는 경우 애플리케이션 배포가 실패할 수 있습니다.

이 변경으로 인해 애플리케이션에 영향을 받는 경우 다음과 같은 몇 가지 옵션이 있습니다.

  • beans.xml 파일을 비워 두지만 필요한 모든 클래스에 Quarkus 정의 주석을 추가합니다.
  • 클래스를 변경하지 않고 변경해도 beans.xml 파일을 다음과 같은 내용이 있는 빈 파일(< beansans-discovery-mode="all"></beans>)으로 변경합니다.
  • 애플리케이션을 변경하지 않고 변경하지 않고 서버의 weld 하위 시스템 구성을 변경하여 빈 beans.xml 파일을 다시 JBoss EAP 7 동작으로 복구합니다. 이 설정은 서버의 모든 배포에 영향을 미칩니다. 예를 들어 CLI를 사용합니다. /subsystem=weld:write-attribute(name=legacy-empty-beans-xml-treatment,value=true)

4.2.2. CDI API 변경 사항

Jakarta Contexts 및 dependency Cryostat 4.0은 더 이상 사용되지 않는 다음과 같은 API 요소를 제거했습니다.

  • javax.enterprise.inject.spi.Bean.isNullable() 메서드가 제거되었습니다. 이 방법은 수년 동안 항상 false 를 반환했기 때문에 호출 호출을 false 로 교체하거나 분기 논리를 제거하고 false 분기의 콘텐츠를 유지할 수 있습니다.
  • javax.enterprise.inject.spi.BeanManager.createInjectionTarget(AnnotatedType) 방법이 제거되었습니다. 이 메서드 호출을 Cryostat Manager.getInjectionTargetFactory(AnnotatedType) 로 교체하고 반환된 팩토리를 사용하여 주입 대상을 생성합니다. 자세한 내용은 Jakarta Contexts and dependency injection specification의 클래스에 대한 Obtaining an CryostatTarget 을 참조하십시오.
  • javax.enterprise.inject.spi.BeanManager.fireEvent(Object, Annotation) 방법이 제거되었습니다. Cryo statManager.getEvent() 를 유사한 API의 진입점으로 사용합니다. 자세한 내용은 Jakarta 컨텍스트 및 종속성 주입 사양에서 이벤트 실행을 참조하십시오.
  • javax.enterprise.inject.spi.BeforeBeanDiscovery.addAnnotatedType(AnnotatedType) 방법이 제거되었습니다. 애플리케이션이 이 메서드를 호출하는 경우 BeforeBeanDiscovery.addAnnotatedType(AnnotatedType, (String) null) 에 대한 호출로 교체할 수 있습니다.

4.2.3. Jakarta Enterprise Cryostats

Java SE 14는 java.security.Identity 클래스를 제거했기 때문에 Jakarta Enterprise Cryostats 4.0 API에서 사용이 제거되었습니다.

  • 더 이상 사용되지 않는 javax. Cryostat.EJBContext.getCallerIdentity() 메서드가 제거되었습니다. 대신 java. security.Principal 를 반환하는 migrationContext.getCallerPrincipal() 를 사용할 수 있습니다.
  • 더 이상 사용되지 않는 javax. Cryostat.EJBContext.isCallerInRole(Identity role) 방법이 제거되었습니다. 대신 handler Context.isCallerInRole(String roleName) 을 사용할 수 있습니다.
  • Jakarta XML RPC 사양이 Jakarta EE 10 Full Platform에서 제거되었으므로 javax. Cryostat.SessionContext.getMessageContext() 메서드를 반환한 javax.xml.rpc.rpc.MessageContext 가 제거되었습니다.
  • Jakarta XML RPC 사양은 자카르타 EE 8에서는 선택 사항이며 Red Hat JBoss EAP 7은 이를 지원하지 않습니다. 이 사양을 사용하면 IllegalStateException 이 발생했기 때문에 이 migration API 변경 사항은 JBoss EAP 7에서 실행되는 기존 애플리케이션에 영향을 미치지 않을 것으로 예상됩니다.
  • 더 이상 사용되지 않는 javax. Cryostat.EJBContext.getEnvironment() 메서드가 제거되었습니다. JNDI 이름 지정 컨텍스트 java:comp/env 를 사용하여 엔터프라이즈 빈 환경에 액세스합니다.

4.2.4. Jakarta Expression Language

javax.el.MethodExpression.isParmetersProvided() 메서드가 잘못 입력되었습니다. 대신 MethodExpression.isParametersProvided() 를 사용할 수 있습니다.

4.2.5. Jakarta JSON 바인딩

기본적으로 jakarta.json.bind.annotation.JsonbCreator 주석으로 주석이 달린 유형은 JSON 콘텐츠에서 모든 매개변수를 사용할 수 있을 필요가 없습니다. 구문 분석 중인 JSON이 매개변수 중 하나가 누락된 경우 기본값을 사용합니다. JSON에 모든 매개변수가 있어야 하는 EE 8 동작은 jakarta.json.bind.JsonbConfig().withCreatorParametersRequired(true) 를 호출하여 설정할 수 있습니다.

4.2.6. Jakarta facess

다음의 더 이상 사용되지 않는 기능은 자카르타 eyess 4.0에서 제거되었습니다.

4.2.6.1. Jakarta facess 및 Java Server Pages

Jakarta Server Pages(JSP) 지원은 자카르타 roles 2.0 이상에서 더 이상 사용되지 않습니다. JSP 지원은 자카르타 Cryostat 4.0에서 제거됩니다. Telelet은 JSP를 기본 보기 정의 언어(VDL)로 대체합니다. Keeps용 JSP를 사용하는 애플리케이션은 Telelet을 사용하여 수정할 수 있습니다. Cryostat Servletweb.xml*.jsp 접미사로 매핑하여 애플리케이션을 식별할 수 있습니다.

4.2.6.2. faces Managed-Beans

자카르타 컨텍스트 및 종속성 (CDI) 빈의 경우, 더 이상 사용되지 않는 자카르타 특정 관리 bean 개념이 Cryostat 4.0에서 제거되었습니다. Cryostat를 사용하는 애플리케이션(예: javax.faces.bean.ManagedBean 으로 주석이 달린 클래스 또는 faces-config.xml의 Managed-bean 요소에서 참조됨)은 다음과 같은 변경을 수행해야 할 수 있습니다.

  • javax.faces.bean.ManagedBean 으로 주석이 달린 클래스 또는 faces-config.xml 의 Managed-bean 요소에서 참조하는 클래스는 jakarta.inject.Namedfaces-config.xml 의 모든 managed-bean 요소를 제거해야 합니다.
  • javax.faces.bean.ManagedProperty 주석으로 주석이 달린 멤버는 jakarta.faces.annotation.ManagedProperty 를 대신 jakarta.inject.Inject 주석과 함께 사용해야 합니다. 이전 javax.faces.bean.ManagedBean(name="foo", eager=true) 과 유사한 시작 의미 체계를 얻으려면 공개 void xxx(@Observes jakarta.enterprise.event.Startup 이벤트) 메서드 또는 공용 void xxx(@Observes @#159d.class) Object) 메서드를 추가합니다. jakarta.enterprise.event.Startup 옵션은 CDI 4.0의 새로운 옵션입니다.
  • javax.faces.bean.ApplicationScoped 주석을 jakarta.enterprise.context.ApplicationScoped 로 교체해야 합니다.
  • javax.faces.bean.CustomScoped 주석은 CDI 사용자 지정 범위 및 jakarta.enterprise.context.spi.Context 로 교체해야 합니다. 자세한 내용은 새 범위 유형 정의 및 CDI 4.0 사양의 컨텍스트 인터페이스 정의를 참조하십시오.
  • javax.faces.bean.NoneScoped 주석을 사용하는 것은 거의 유사한 의미가 있는 CDI 기본 제공 범위인 jakarta.enterprise.context.Dependent 로 교체해야 합니다.
  • javax.faces.bean.RequestScoped 주석을 jakarta.enterprise.context.RequestScoped 로 교체해야 합니다.
  • javax.faces.bean.SessionScoped 주석을 jakarta.enterprise.context.SessionScoped 로 교체해야 합니다.

4.2.6.3. 기타 pasts API 변경 사항

javax.faces.bean.ViewScoped 주석이 제거되었습니다. 대신 jakarta.faces.view.ViewScoped 를 사용할 수 있습니다.

javax.faces.view.facelets.ResourceResolver 및' javax.faces.view.facelets.FaceletsResourceResolver 주석이 제거되었습니다. 애플리케이션의 ResourceResolvers의 경우 jakarta.faces.application.ResourceHandler 인터페이스를 구현하고 faces-config.xmlapplication/resource-handler 요소에 구현의 정규화된 클래스 이름을 등록합니다.

4.2.7. Jakarta Servlet

Jakarta Servlet 6.0은 대부분 서블릿 2.x 릴리스에서 더 이상 사용되지 않는 여러 API 클래스와 방법을 제거합니다.

javax.servlet.SingleThreadModel 마커 인터페이스가 제거되었으며 이 인터페이스를 구현하는 서블릿에서 인터페이스 선언을 제거하고 서블릿 코드가 상태 및 기타 리소스 액세스를 동시에 액세스하도록 해야 합니다. 예를 들어 인스턴스 변수를 사용하지 않도록 하거나 리소스에 액세스하는 코드 블록을 동기화합니다. 그러나 개발자가 성능에 대한 동기화의 영향으로 인해 서비스 메서드(또는 doGetdoPost 와 같은 메서드)를 동기화하지 않는 것이 좋습니다.

javax.servlet.http.HttpSessionContext 인터페이스가 javax.servlet.http.HttpSession.getSessionContext() 메서드와 함께 제거되었습니다. Servlet 2.1 이후 이 인터페이스에는 사용 가능한 데이터를 제공하지 않는 사양에 구현이 필요하기 때문에 이 인터페이스에 대한 사용 사례가 없었습니다.

javax.servlet.http.HttpUtils 유틸리티 클래스가 제거되었습니다. 애플리케이션은 다음 메서드 대신 ServletRequest 및 CryostatServletRequest 인터페이스를 사용해야 합니다.

  • parseQueryString(String s)parsePostData(int len, ServletInputStream in) - ServletRequest.getParameterMap() 을 사용합니다. 애플리케이션에서 쿼리 문자열 매개변수와 요청 본문 매개 변수를 구분해야 하는 경우 애플리케이션은 쿼리 문자열 자체를 구문 분석하여 수행하는 코드를 구현해야 합니다.
  • getRequestURL(HttpServletRequest req)- Use HttpServletRequest.getRequestURL().

또한 다음과 같은 기타 메서드 및 생성자가 제거되었습니다.

Expand
class/Interface제거됨대신 사용

javax.servlet.ServletContext

getServlet(문자열 이름)

교체 없음

 

getServlets()

교체 없음

 

getServletNames()

교체 없음

 

log(Exception 예외, 문자열 msg)

log(문자열 메시지, Throwable throwable)

javax.servlet.ServletRequest

getRealPath(문자열 경로)

ServletContext.getRealPath(String path)

javax.servlet.ServletRequestWrapper

getRealPath(문자열 경로)

ServletContext.getRealPath(String path)

javax.servlet.UnavailableException

getServlet()

교체 없음

 

UnavailableException(Servlet 서블릿, 문자열 msg)

UnavailableException(String)

 

UnavailableException(정수 초, 서블릿 서블릿, 문자열 msg)

UnavailableException(String, int)

javax.servlet.http.HttpServletRequest

isRequestedSessionIdFromUrl()

isRequestedSessionIdFromURL()

javax.servlet.http.HttpServletRequestWrapper

isRequestedSessionIdFromUrl()

isRequestedSessionIdFromURL()

javax.servlet.http.HttpServletResponse

encodeUrl(문자열 url)

encodeURL(문자열 URL)

 

encodeRedirectUrl(문자열 url)

encodeRedirectURL(문자열 url)

 

setStatus(int sc, string sm)

sendError(int, String)

javax.servlet.http.HttpServletResponseWrapper

encodeUrl(문자열 url)

encodeURL(문자열 URL)

 

encodeRedirectUrl(문자열 url)

encodeRedirectURL(문자열 url)

 

setStatus(int sc, string sm)

sendError(int, String)

javax.servlet.http.HttpSession

GetValue(문자열 이름)

getAttribute(문자열 이름)

 

getValueNames()

getAttributeNames()

 

putValue(문자열 이름, 오브젝트 값)

setAttribute(문자열 이름, 오브젝트 값)

 

removevalue(문자열 이름)

removeAttribute(문자열 이름)

4.2.8. 첨부 파일이 있는 Jakarta Soap

jaxm.properties 파일을 통한 공급자 조회 지원이 제거되었습니다.

더 이상 사용되지 않는 javax.xml.soap.SOAP CryostatFactory 클래스가 제거되었습니다. jakarta.xml.soap.SOAPFactory 를 사용하여음악을 생성합니다.

Expand
Cryostat CryostatFactory 방법LokiFactory와 동등한

newInstance()

newInstance()

생성(이름)

createElement(Name)

create(문자열)

create Cryostat(문자열)

create(문자열, 문자열, 문자열)

create Cryostat(문자열, 문자열, 문자열)

4.2.9. Jakarta XML Binding

xml 바인딩 파일에서 사용해야 하는 XML 네임스페이스가 변경되었습니다. http://java.sun.com/xml/ns/jaxb 네임스페이스는 https://jakarta.ee/xml/ns/jaxb 로 교체해야 합니다.

연결된 javax.xml.bind.createValidator() 메서드와 같이 더 이상 사용되지 않는 javax.xml.bind.Validator 인터페이스가 제거되었습니다. 마샬링 및 unmarshalling 작업을 검증하려면 javax.xml.validation.Schemajakarta.xml.bind.Marshaller.setSchema(Schema) 에 제공합니다.

CryostatB 1.0과의 호환성 지원이 제거되었습니다.

Cryostat BContext 구현 조회 알고리즘에서 더 이상 사용되지 않는 일부 단계가 제거되었습니다. jaxb.properties 파일, javax.xml.bind.factory 또는 jakarta.xml. bind.JAXBContext 속성 및 /META-INF/services/javax.xml.bind.JAXBContext 리소스 파일을 삭제하여 구현 클래스 이름을 검색합니다. 현재 구현 검색 알고리즘에 대한 자세한 내용은 Jakarta XML Binding 4.0 사양 을 참조하십시오.

javax.xml.bind.Marshaller 인터페이스에서 여러 메서드에 대한 일반 요구 사항은 다음과 같이 변경되었습니다.

Expand
Jakarta XML Binding 2.3 / 3.0Jakarta XML Binding 4.0

<a extends CryostatAdapter> void setAdapter(A adapter)

<A extends XmlAdapter<?, ?>> void setAdapter(A adapter)

<a extends CryostatAdapter> void setAdapter(Class<A> type, A adapter)

<a extends CryostatAdapter<?, ?>> void setAdapter(Class<A> 유형, 어댑터)

<a extends CryostatAdapter> getAdapter(Class<A> 유형)

<a extends CryostatAdapter<?, ?>> A getAdapter(Class<A> 유형)

Jakarta XML Binding API의 변경 사항 외에도 구현 라이브러리 EAP 8에서 패키지 이름이 크게 변경되어 구현 라이브러리에 직접 액세스하는 일부 애플리케이션에 영향을 줄 수 있습니다.

  • com.sun.xml.bind 패키지에서 클래스를 사용하는 경우 org.glassfish.jaxb.runtime 패키지의 클래스로 교체해야 합니다. com.sun.xml.bind 의 하위 패키지에 있는 클래스는 해당 org.glassfish.jaxb.runtime 하위 패키지의 클래스로 교체해야 합니다.
  • jakarta.xml.bind.Marshaller 속성 설정의 경우 속성 상수 이름을 com.sun.xml.bind.* 에서 org.glassfish.jaxb.* 로 변경합니다. 예를 들어 marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", 매퍼)marshaller.setProperty("org.glassfish.jaxb.namespacePrefixMapper", mapper) 가 됩니다.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동