App Engine 자바 8 런타임 FAQ

아래의 질문은 App Engine 자바 8 표준 런타임에 해당하는 질문입니다.

자바 8 런타임에서 Kotlin을 사용해도 되나요?

예. GitHub 저장소에서 Kotlin 샘플을 확인하세요.

App Engine에서 IntelliJ IDEA Community Edition을 사용해도 되나요?

예. 내장된 Maven 통합을 사용하면 됩니다.

더 많은 웹 애플리케이션 개발 기능을 제공하고 App Engine 배포 프로세스와 더 긴밀하게 통합되는 IntelliJ Ultimate Edition을 사용해도 됩니다.

App Engine Cloud Endpoints v1.0이 자바 8 런타임에서 작동하나요?

아니요. Cloud Endpoints Frameworks 버전 2.0으로 이전해야 합니다.

리패키지 클래스에서 java.lang.NoClassDefFoundError가 발생하는 이유는 무엇인가요?

리패키지 내부 클래스(com/google/appengine/repackaged/com/google/common/collect/ImmutableList)는 이전 버전의 App Engine API JAR에서 정의된 경우에도 자바 8 런타임에서 사용할 수 없습니다.

자바 8 앱에서 리패키지 클래스를 사용하려면 appengine-web.xml에서 appengine.api.legacy.repackaging을 true로 설정합니다. 예를 들면 다음과 같습니다.

<system-properties>
  <property name="appengine.api.legacy.repackaging" value="true">
</system-properties>

이러한 클래스는 리패키지 클래스가 아닌 공개 클래스로 바꾸는 것이 좋습니다.

자바 8과 자바 11 사이에서 트래픽 분할을 수행할 수 있나요?

예. 각 서비스 또는 모듈 버전은 서로 다른 런타임 버전을 사용할 수 있으며 트래픽 분할이 지원됩니다.

인스턴스가 요청을 받지 않을 때 자바 8 스레드는 어떻게 처리되나요?

App Engine API로 생성된 스레드는 전처럼 계속 작동합니다.

자동 확장 수동 확장 기본 확장
요청이 없으므로 인스턴스가 종료됩니다. 마지막 요청 이후에 인스턴스가 종료됩니다(기본값: 5분). 영구적으로 실행됩니다.

App Engine 자바 8 런타임에서는 어떤 메타데이터 서버 기능이 지원되나요?

App Engine 자바 8 런타임은 다음과 같은 메타데이터 서버 URL을 지원합니다.

/computeMetadata/v1/project/numeric-project-id (pending)
/computeMetadata/v1/project/project-id
/computeMetadata/v1/instance/zone
/computeMetadata/v1/instance/service-accounts/default/aliases
/computeMetadata/v1/instance/service-accounts/default/email
/computeMetadata/v1/instance/service-accounts/default/scopes
/computeMetadata/v1/instance/service-accounts/default/token
/computeMetadata/v1/instance/service-accounts/{account}/aliases
/computeMetadata/v1/instance/service-accounts/{account}/email
/computeMetadata/v1/instance/service-accounts/{account}/scopes
/computeMetadata/v1/instance/service-accounts/{account}/token

메타데이터 서버 v1beta1

v1beta1 메타데이터 서버는 지원 중단되었으며 종료될 예정입니다. v1 이상을 사용할 수 있도록 모든 요청을 업데이트해야 합니다. 자세한 내용은 v1 메타데이터 서버 엔드포인트로 전환을 참조하세요.

/computeMetadata/v1beta1/project/numeric-project-id  (pending)
/computeMetadata/v1beta1/project/project-id
/computeMetadata/v1beta1/instance/zone
/computeMetadata/v1beta1/instance/service-accounts/default/aliases
/computeMetadata/v1beta1/instance/service-accounts/default/email
/computeMetadata/v1beta1/instance/service-accounts/default/scopes
/computeMetadata/v1beta1/instance/service-accounts/default/token
/computeMetadata/v1beta1/instance/service-accounts/{account}/aliases
/computeMetadata/v1beta1/instance/service-accounts/{account}/email
/computeMetadata/v1beta1/instance/service-accounts/{account}/scopes
/computeMetadata/v1beta1/instance/service-accounts/{account}/token

내 요청에서 응답할 수 없는 이유는 무엇인가요?

요청에 스레드 풀을 만드는 경우 현재 요청이 종료되기 전에 요청을 명시적으로 종료해야 합니다.