<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
자바 콜아웃을 처음 사용하는 경우 먼저 자바 콜아웃을 만드는 방법 설명선을 참조하세요.
이 설명서 샘플은 다음을 실행하는 간단한 JavaCallback 정책을 만드는 방법을 보여줍니다. 커스텀 Java 코드를 작성할 수 있습니다.
샘플 코드는 어떤 역할을 하나요?
이 샘플의 API 프록시는 간단한 JSON 응답을 반환하는 대상 서비스를 호출합니다. 이 Java 콜아웃 정책은 대상 응답 흐름에 배치됩니다. Java 코드는 헤더를 변환하고 응답 내용을 대문자로 표시합니다. 간단한 예입니다. 그것은 어떻게 Edge의 API 프록시 컨텍스트에서 작동하는 커스텀 자바 코드를 가져옵니다.
샘플 사용해 보기
프로젝트 다운로드
간단하게 하기 위해 GitHub의 Apigee api-platform-samples 저장소에서 이 프로젝트를 다운로드할 수 있습니다.
- api-platform-samples를 시스템에 다운로드하거나 복제합니다.
- 원하는 터미널 또는 코드 편집기에서
api-platform-samples/doc-samples/java-cookbook
프로젝트로 이동합니다.
Maven으로 코드 컴파일
Maven로 컴파일할 수 있도록 프로젝트가 설정되었습니다.
javac
를 사용하는 경우 Maven 예 다음에 예가 포함되어 있습니다.
- Maven이 설치되어 있는지 확인합니다.
mvn -version
java-cookbook/buildsetup.sh
스크립트를 실행합니다. 이 스크립트는 로컬 Maven 저장소에 필요한 JAR 종속 항목을 설치합니다.- cd 명령어로
java-cookbool/callout
디렉터리로 이동합니다. - Maven을 실행합니다.
mvn clean package
- 원하는 경우 JAR 파일
edge-custom-policy-java-cookbook.jar
가java-cookbook/apiproxy/resources/java
에 복사되었는지 확인합니다. 프록시로 배포하려는 JAR 파일에 필요한 위치입니다.
javac로 컴파일
javac
을 사용하여 코드를 컴파일하려면 java-cookbook
디렉터리에서 다음과 유사한 작업을 수행할 수 있습니다. 필수 JAR 파일은 java-cookbook/lib
디렉터리에 제공됩니다.
- cd 명령어로
api-platform-samples/doc-samples/java-cookbook
로 이동합니다. - 경로에 javac가 있는지 확인합니다.
javac -version
- 다음 javac 명령어를 실행합니다.
javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/ResponseUppercase.java
- JAR 파일을 apiproxy/리소스/자바 디렉터리에 복사합니다. 프록시로 배포하려는 JAR 파일에 필요한 위치입니다.
cp com/apigeesample/ResponseUppercase.class apiproxy/resources/java
프록시 배포 및 호출
배포 스크립트는 ./java-cookbook
디렉터리에서 제공됩니다. 하지만 실행하기 전에
빠른 설정이 필요합니다.
- cd 명령어로
api-platform-samples/doc-samples/java-cookbook
로 이동합니다. - 아직 열지 않았다면
../../setup/setenv.sh
파일을 열고 수정합니다. 사용자 이름 (사용자 이름, 이메일 주소)을 계정, 조직 이름, API 생성에 사용하는 도메인 등 관리 호출도 가능합니다. 예를 들어 에지 클라우드의 경우 도메인은https://api.enterprise.apigee.com
하지만 사용하는 경우 도메인이 다를 수 있습니다 사용할 수 있습니다 setenv.sh
파일을 저장합니다.- 배포 스크립트를 실행합니다.
./deploy.sh
- 배포에 성공하면 호출 스크립트를 실행합니다.
./invoke.sh
호출 스크립트는 다음과 같은 cURL 명령어를 호출합니다.
curl http://$org-$env.$api_domain/java-cookbook/json
응답은 다음과 같습니다.
< HTTP/1.1 200 OK < Date: Tue, 09 May 2017 20:31:08 GMT < Content-Type: APPLICATION/JSON; CHARSET=UTF-8 < Content-Length: 68 < Connection: keep-alive < Access-Control-Allow-Origin: * < ETag: W/"44-RA5ERT/MMLIK54NVBWBSZG" < X-Powered-By: APIGEE < Server: Apigee Router < * Curl_http_done: called premature == 0 * Connection #0 to host willwitman-test.apigee.net left intact {"FIRSTNAME":"JOHN","LASTNAME":"DOE","CITY":"SAN JOSE","STATE":"CA"}
프록시 흐름
다음은 프록시의 흐름을 보여주는 트레이스 도구의 장면입니다.
프록시 구조
프록시의 구조입니다. 이 파일은
apiproxy/resources/java
디렉터리에 있습니다. JAR은 필수 항목입니다. 이 API는
그러나 커스텀 작업을 수행하는 경우 직접 빌드하여 여기에 복사해야 합니다.
볼 수 있습니다 자바 콜아웃을 컴파일하고 배포하는 방법에 대한 안내는 자바 콜아웃을 만드는 방법
설명선을 참조하세요.
java-cookbook apiproxy java-cookbook.xml policies responseUppercase.xml proxies default.xml resources java ResponseUppercase.jar targets default.xml
Java 코드 정보
Java 콜아웃 정책은 다음 Java 코드를 실행하여 응답 헤더와 응답 본문을 대문자로 변환해야 합니다. 이 프로그램은 Apigee 전용 패키지를 사용합니다. 이 패키지 프록시 흐름과 직접 상호작용하는 데 사용할 수 있는 객체와 메서드를 제공합니다. 메서드 흐름 변수, 헤더, 메시지 콘텐츠 등을 가져오고 설정할 수 있습니다.
package com.apigeesample; import com.apigee.flow.execution.ExecutionContext; import com.apigee.flow.execution.ExecutionResult; import com.apigee.flow.execution.spi.Execution; import com.apigee.flow.message.MessageContext; import java.util.Set; public class ResponseUppercase implements Execution{ public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) { try { Set headers = messageContext.getMessage().getHeaderNames(); for (String header : headers) { String h = messageContext.getMessage().getHeader(header).toUpperCase(); messageContext.getMessage().setHeader(header, h); } String content = messageContext.getMessage().getContent(); messageContext.getMessage().setContent(content.toUpperCase()); return ExecutionResult.SUCCESS; } catch (Exception e) { return ExecutionResult.ABORT; } } }
샘플 프록시 검사
프록시를 열고 파일을 검사하도록 사용자에게 맡깁니다. 다음은 Java 콜아웃 정책입니다. 콜아웃이 실행하는 클래스와 JAR 파일을 어떻게 참조하는지 확인합니다. 모든 자바 콜아웃 정책은 이 패턴을 따릅니다 자바 콜아웃 정책도 참고하세요.
<JavaCallout name="responseUppercase"> <ClassName>com.apigeesample.ResponseUppercase</ClassName> <ResourceURL>java://ResponseUppercase.jar</ResourceURL> </JavaCallout>