보안 업데이트를 계속 받고 기술 지원을 받으려면 애플리케이션을 지원되는 최신 런타임 버전으로 업그레이드해야 합니다. 또한 Google Cloud 서버리스의 최신 발전 기술인 Cloud Run으로 마이그레이션하는 것이 좋습니다. Cloud Run은 표준 환경과 가변형 환경의 최고의 기능을 다양하게 통합하여 App Engine 환경을 개선하도록 설계되었습니다. 기능 비교와 마이그레이션 방법을 알아보려면 App Engine 및 Cloud Run 비교 가이드를 참조하세요.
기존 앱을 업그레이드하는 프로세스는 앱에서 현재 사용하는 런타임 버전에 따라 다릅니다.
자바 8: 지원되는 최신 자바 버전으로 앱을 마이그레이션해야 합니다. Java 8은 2024년 1월 31일에 지원을 종료합니다. 기존 Java 8 애플리케이션은 계속 실행되고 트래픽을 수신합니다. 그러나 지원 종료 날짜 이후에 런타임을 사용하는 새 애플리케이션을 배포하거나 기존 애플리케이션을 업데이트할 수 없습니다.
Java 11 또는 Java 17:
이러한 런타임은 지원되는 Java 버전입니다. 계속해서 최신 지원 버전으로 업그레이드하려면 다음을 수행합니다.
앱을 실행할 Java 버전을 지정하여
app.yaml
파일을 업데이트합니다. 예를 들면 다음과 같습니다.runtime: javaVERSION
여기서 VERSION은
MAJOR
버전 번호입니다.예를 들어 Java 21의 경우
runtime: java21
과 같이 21을 지정합니다. 자세한 내용은 Java 런타임 개요를 참조하세요.기존 번들 서비스를 사용하는 경우 다음 중 하나에서 실행되도록 앱을 업그레이드해야 합니다.
자바 Enterprise 버전 10(EE10 - 기본값, 권장): 자바 EE10은
javax.servlet.*
API를 지원하지 않으며Jakarta
네임스페이스와 같은 새로운 Java 아티팩트를 사용하려면 앱과 타사 종속성을 업데이트해야 합니다.자바 Enterprise Edition 8(EE8): 자바 EE8에서는
javax.servlet.*
API를 사용할 수 있지만appengine-web.xml
파일에 대한 구성을 약간 변경해야 합니다.
모든 옵션에 대한 기존 번들 서비스를 위해 자바 21로 업그레이드에서 확인하세요.
기존 번들 서비스를 위해 자바 21로 업그레이드
Java 런타임 호환성
다음 표를 참조하여 Jetty 및 서블릿 버전과 호환되는 Java 버전을 확인하세요.
Enterprise 버전(EE) | Jetty 버전 | 자바 버전 | 서블릿 | 호환성 |
---|---|---|---|---|
EE7 | 9.4 | 11 | 2.5 또는 3.1 | |
EE7 | 9.4 | 17 | 2.5 또는 3.1 | |
EE8 | 12 | 21 | 2.5 이상 | 자바 EE8은 자바 EE6 이상과 하위 호환됩니다. 자세한 내용은 EE8에서 Java 21로 업그레이드를 참조하세요. |
EE10 | 12 | 21 | 6.0(권장) Java 21은 기본적으로 EE10을 실행하도록 구성됩니다. | Java EE10을 사용하려면 Jakarta 네임스페이스를 포함하도록 애플리케이션 서블릿 및 종속 항목을 업데이트해야 합니다. 자세한 내용은 EE10에서 자바 21로 업그레이드를 참조하세요. |
EE10에서 Java 21로 업그레이드
Enterprise 버전 10(EE10)에서 자바 21을 사용하려면 Jakarta
네임스페이스를 포함하도록 Maven 및 Gradle 파일의 애플리케이션 서블릿 및 종속 항목을 업그레이드해야 합니다.
web.xml
구성 파일의 버전 번호를version=6.0
으로 변경합니다. 예를 들면 다음과 같습니다.<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd" version="6.0"> ... </web-app>
애플리케이션 서블릿 및 종속 항목 이름을
javax.servlet.*
에서jakarta.servlet.*
로 바꿉니다.import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @WebServlet(name = "viewer", urlPatterns = {"/view"}) public class MyServlet extends HttpServlet { ......
Jakarta
네임스페이스에 따라 남은 애플리케이션 타사 종속 항목을 새로운 Java 아티팩트로 업데이트합니다.선택사항: Java 21에는 가상 스레드 지원이 포함됩니다. 가상 스레드를 사용 설정하려면
appengine-web.xml
파일의system-properties
태그 내에appengine.use.virtualthreads
속성을 추가합니다.
EE8에서 Java 21로 업그레이드
Jetty 12는 자바 EE6 이상에 대한 하위 호환성을 제공하므로 주요 애플리케이션 구성 변경 없이 자바 EE8에서 javax.servlet.*
API를 계속 사용할 수 있습니다. 자바 EE8에서 애플리케이션을 실행하려면 appengine-web.xml
파일에 기본값이 아닌 app.engine.use.EE8
구성을 사용하여 새 system-properties
태그를 선언해야 합니다.
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<runtime>java21</runtime>
<system-properties>
<property name="appengine.use.EE8" value="true"/>
</system-properties>
<app-engine-apis>true</app-engine-apis>
</appengine-web-app>
선택사항: Java 21에는 가상 스레드 지원이 포함됩니다. 가상 스레드를 사용 설정하려면 system-properties
태그 내에서 appengine.use.virtualthreads
속성을 추가합니다. 예를 들면 <property name="appengine.use.virtualthreads" value="true"/>
입니다.