Apigee 및 Apigee Hybrid 문서입니다.
Apigee Edge 문서 보기
ResourceDoesNotExist
오류 메시지
다음 오류 메시지와 함께 Apigee UI 또는 API를 통한 API 프록시의 배포가 실패합니다.
Error Deploying Revision <var>revision_number</var> to <var>environment</var>
Resource with name <var>ResourceURL</var> and type java does not exist.
오류 메시지 예시
Error Deploying Revision 1 to test
Resource with name myresource.jar and type java does not exist.
오류 스크린샷 예시
원인
JavaCallout 정책의 <ResourceURL>
요소에 지정된 리소스가 API 프록시 또는 환경 수준에 없으면 API 프록시 배포가 실패합니다.
진단
환경 및 리소스 이름을 식별합니다. 이 정보는 오류 메시지에서 확인할 수 있습니다. 예를 들어 다음 오류에서 환경은
test
이고 <ResourceURL>
요소에 사용되는 리소스 이름은myresource.jar
입니다.Error Deploying Revision 1 to test Resource with name myresource.jar and type java does not exist.
위의 1단계에서 식별된 리소스를 사용하는 JavaCallout 정책을 확인합니다.
예를 들어 다음 정책은 오류 메시지의 값과 일치하는 <
ResourceURL>
값을myresource.jar
으로 지정합니다.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JavaCallout name="hello-java"> <ClassName>com.apigeesample.HelloJava</ClassName> <ResourceURL>java://myresource.jar</ResourceURL> </JavaCallout>
리소스가 실패하거나 환경 수준에서 업로드된 API 프록시의 일부인지 확인합니다. 그렇지 않은 경우 이는 오류의 원인이 됩니다.
API 프록시 편집기의 탐색기 창에서 리소스 탭으로 이동하여 API 프록시 수준에서 업로드된 모든 리소스를 확인합니다. 이 예시에서는 API 프록시에 업로드된 리소스가 없습니다.
리소스는 환경 수준에서 사용할 수 있습니다. 자세한 내용은 리소스 파일을 참조하세요.
리소스가 환경 수준에 있는지 확인하려면 curl을 사용하여 다음 API 호출을 실행합니다.
curl \ "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/resourcefiles/java/myresource.jar" \ -H "Authorization: Bearer $TOKEN"
$TOKEN
를 OAuth 2.0 액세스 토큰 가져오기에 설명된 대로 OAuth 2.0 액세스 토큰으로 설정합니다. 이 예시에서 사용된curl
옵션에 대한 자세한 내용은 curl 사용을 참조하세요. 사용된 환경 변수에 대한 설명은 Apigee API 요청에 대한 환경 변수 설정을 참조하세요.
이러한 API에 대한 응답으로 404 상태 코드를 받았다면 환경 수준에서 리소스가 누락된 것입니다.
API 프록시 및 환경 수준에서 리소스를 사용할 수 없는 경우 배포 오류가 반환됩니다.
Resource with name myresource.jar and type java does not exist. ```
해결 방법
<ResourceURL>
요소에 지정된 리소스가 API 프록시 또는 환경 수준에 있는지 확인합니다. 자세한 내용은 리소스 관리를 참조하세요.
위에 표시된 JavaCallout 정책 예시를 수정하려면 적절한 수준(API 프록시 또는 환경 수준)에서 JAR 파일을 업로드합니다.
NoResourceForURL
오류 메시지
다음 오류 메시지와 함께 Apigee UI 또는 API를 통한 API 프록시의 배포가 실패합니다.
Error in deployment for environment <var>environment</var>
The revision is deployed, but traffic cannot flow. Could not locate a resource with URL <var>ResourceURL</var>
오류 메시지 예시
Error in deployment for environment test
The revision is deployed, but traffic cannot flow. Could not locate a resource with URL java://myresource.jar
오류 스크린샷 예시
원인
이 오류는 리소스 파일이 API 프록시 또는 환경 수준에 있더라도 손상되거나 부분적으로 업로드된 경우에 발생할 수 있습니다.
진단
환경 및 리소스 이름을 식별합니다. 이 정보는 오류 메시지에서 확인할 수 있습니다. 예를 들어 다음 오류에서 환경 이름은
test
이고 <ResourceURL>
요소에 사용되는 리소스 이름은myresource.jar
입니다.Error in deployment for environment test The revision is deployed, but traffic cannot flow. Could not locate a resource with URL java://myresource.jar
API 프록시 또는 환경 수준에서 리소스가 업로드되었는지 확인합니다. 아래 예시에서
myresource.jar
리소스가 API 프록시 수준에서 업로드되었음을 확인할 수 있습니다.리소스는 환경 수준에서 사용할 수 있습니다. 자세한 내용은 리소스 파일을 참조하세요.
리소스가 환경 수준에 있는지 확인하려면 curl을 사용하여 다음 API 호출을 실행합니다.
curl \ "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/resourcefiles/java/myresource.jar" \ -H "Authorization: Bearer $TOKEN"
여기서
$TOKEN
은 OAuth 2.0 액세스 토큰 가져오기의 설명대로 OAuth 2.0 액세스 토큰으로 설정됩니다. 이 예시에서 사용된curl
옵션에 대한 자세한 내용은 curl 사용을 참조하세요.이러한 API에 대한 응답으로 404 상태 코드를 받았다면 환경 수준에서 리소스가 누락된 것입니다.
해결 방법
- API 프록시 또는 환경 수준에 리소스가 있다고 확인되면 2단계에 설명된 대로 리소스를 삭제하고 다시 업로드합니다. 그렇지 않으면 3단계로 건너뜁니다.
API 프록시 수준에서 리소스를 삭제하려면 아래와 같이 API 프록시 편집기의 탐색기 창에서 리소스 탭으로 이동하여 리소스 옆의 'X' 버튼을 클릭합니다.
환경에서 리소스를 삭제하려면 이전 진단 단계에서 사용된 API 호출에서 DELETE 동사를 사용합니다. 예를 들어 환경 수준에서 리소스를 삭제하려면 다음 명령어를 입력합니다.
curl -X DELETE \ "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/resourcefiles/java/myresource.jar" \ -H "Authorization: Bearer $TOKEN"
여기서
$TOKEN
은 OAuth 2.0 액세스 토큰 가져오기의 설명대로 OAuth 2.0 액세스 토큰으로 설정됩니다. 이 예시에서 사용된curl
옵션에 대한 자세한 내용은 curl 사용을 참조하세요.적절한 레벨(API 프록시 또는 환경 수준)에서 JAR 파일을 업로드합니다.
리소스를 다시 업로드해도 문제가 해결되지 않으면 Apigee 지원팀에 문의하세요.
JavaCalloutInstantiationFailed
오류 메시지
다음 오류 메시지와 함께 Apigee UI 또는 API를 통한 API 프록시의 배포가 실패합니다.
Error in deployment for environment <var>environment</var>
The revision is deployed, but traffic cannot flow. Failed to instantiate the JavaCallout Class <var>class_name</var>
또는
Error in deployment for environment <var>environment</var>.
The revision is deployed and traffic can flow, but flow may be impaired. Failed to instantiate the JavaCallout Class <var>class_name</var>
오류 메시지 예시
Error in deployment for environment test
The revision is deployed, but traffic cannot flow. Failed to instantiate the JavaCallout Class my.class
오류 스크린샷 예시
원인
이 오류의 일반적인 원인은 다음과 같습니다.
원인 | 설명 |
JAR 파일 누락 | 오류에서 식별된 자바 클래스를 포함하는 JAR 파일이 업로드되지 않았습니다. |
손상된 JAR 파일 | 오류에서 식별된 자바 클래스를 포함하는 JAR 파일이 손상되었거나 부분적으로 업로드되었습니다. |
클래스 파일 누락 | 오류에서 식별된 자바 클래스 파일이 >ResourceURL< 또는 종속 JAR 파일에 지정된 JAR 파일의 일부가 아닙니다. |
자바 코드 문제 | 누락된 생성자, 코드 종속성 문제 등의 오류가 코드에 있습니다. |
일반 진단 단계
환경의 이름과 가져올 수 없는 클래스를 식별합니다. 예를 들어 다음 오류 메시지 환경 이름은
test
이고 클래스 이름은my.class
입니다.Error in deployment for environment test The revision is deployed, but traffic cannot flow. Failed to instantiate the JavaCallout Class my.class
원인: 누락된 JAR 파일
진단
- 위 1단계에서 식별된 클래스를 포함해야 하며 인스턴스화할 수 없는 JAR 파일을 확인합니다.
- 특정 JAR 파일이 API 프록시 또는 환경 수준에서 업로드되었는지 확인합니다. JAR 파일이 어느 수준에도 업로드되지 않으면 해결 방법으로 이동합니다.
- JAR 파일이 업로드되면 원인: 손상된 JAR 파일로 이동합니다.
해결 방법
- JAR 파일이 손상되었거나 부분적으로 업로드된 경우 JAR을 다시 빌드하고 적절한 수준(API 프록시 또는 환경 수준)에서 JAR 파일을 업로드합니다.
- API 프록시를 재배포합니다.
원인: 손상된 JAR 파일
진단
- 위 1단계에서 식별된 클래스를 포함해야 하며 인스턴스화할 수 없는 JAR 파일을 확인합니다.
- 특정 JAR 파일이 손상되었는지 확인합니다. 예를 들어 파일이 손상되었거나 부분적으로 업로드되어 압축을 풀 수 없는지 확인합니다. 손상된 경우 해결 방법으로 이동합니다.
- JAR 파일이 손상되지 않았다면 원인: 누락된 클래스 파일로 이동합니다.
해결 방법
- 손상된 JAR 파일을 다시 빌드하고 적절한 수준(API 프록시 또는 환경 수준)에서 JAR 파일을 업로드합니다.
- API 프록시를 재배포합니다.
원인: 누락된 클래스 파일
진단
- 위 1단계에서 식별된 특정 자바 클래스 파일이 >ResourceURL< 또는 종속 JAR 파일에 지정된 JAR 파일의 일부인지 확인합니다.
- 클래스 파일이 JAR 파일에 없으면 오류의 원인을 파악할 수 있습니다. 해결 방법으로 이동합니다.
- 클래스 파일이 JavaCallout 정책에 지정된 JAR 파일 중 하나에 있는 경우 자바 코드 또는 종속 클래스에 오류로 이어지는 문제가 발생하게 됩니다. 도움이 필요하면 Apigee 지원팀에 문의하세요.
해결 방법
- 클래스 파일이 누락된 JAR을 다시 빌드하고 적절한 수준(API 프록시 또는 환경 수준)에서 JAR 파일을 업로드합니다.
- API 프록시를 재배포합니다.
JAR 파일 업로드
필요한 모든 클래스가 있는 리소스 요소가 API 프록시 또는 환경 수준에 있는지 확인합니다. 자세한 내용은 리소스 파일을 참조하세요.
API 프록시 수준에서 리소스를 업로드하려면 리소스 탭에서 +(더하기 기호)를 클릭한 다음 파일 가져오기를 선택하고 로컬 머신에서 파일을 업로드합니다. 파일 이름은 >ResourceURL< 요소와 일치해야 하지만
java://
프리픽스는 없어야 합니다.동일한 환경에서 둘 이상의 API 프록시에 리소스를 사용할 수 있도록 하려면 환경에 리소스를 업로드합니다. 리소스 파일에 설명된 대로 Apigee API를 사용해야 합니다.
예를 들어 로컬 머신에서 다음 API 호출을 입력하여 환경 수준에서 지정된 파일을 업로드합니다.
curl -H "Content-Type: application/octet-stream" \ -X POST -H "Authorization: Bearer $TOKEN" --data-binary @{classes.jar} \ "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/resourcefiles?name=myresouce.jar&type=java"
여기서
$TOKEN
은 OAuth 2.0 액세스 토큰 가져오기의 설명대로 OAuth 2.0 액세스 토큰으로 설정됩니다. 이 예시에서 사용된curl
옵션에 대한 자세한 내용은 curl 사용을 참조하세요.파일과 동일한 디렉터리에서 API 호출을 실행합니다.
조직의 모든 환경 내에서 모든 API 프록시에 파일을 사용할 수 있도록 하려면 기본 경로에서 환경 세부정보를 생략하면 됩니다. 예를 들면 다음과 같습니다.
curl -H "Content-Type: application/octet-stream" \ -X POST -H "Authorization: Bearer $TOKEN" --data-binary @{classes.jar} \ "https://apigee.googleapis.com/v1/organizations/$ORG/resourcefiles?name=myresouce.jar&type=java"
여기서
$TOKEN
은 OAuth 2.0 액세스 토큰 가져오기의 설명대로 OAuth 2.0 액세스 토큰으로 설정됩니다. 이 예시에서 사용된curl
옵션에 대한 자세한 내용은 curl 사용을 참조하세요.