Java 콜아웃에서 속성을 사용하는 방법

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

자바 콜아웃이란 무엇인가요?

자바 콜아웃을 처음 사용하는 경우 먼저 자바 콜아웃을 만드는 방법부터 살펴보는 것이 좋습니다.

자바 콜아웃에서 속성 사용

속성을 사용하면 런타임 시 자바 코드에서 액세스할 수 있는 자바 콜아웃 정책에 이름/값 쌍을 지정할 수 있습니다. 각 속성에 리터럴 문자열 값을 지정해야 합니다. 이 요소에서는 흐름 변수를 참조할 수 없습니다.

속성을 사용하는 간단한 자바 콜아웃 예시를 살펴보겠습니다. 이 예시에서는 자바 콜아웃 정책이 포함된 프록시를 만듭니다. 정책은 <Properties> 요소를 사용하여 이름/값 쌍을 지정합니다. 자바 코드에서 값을 검색한 다음 이 값을 사용하여 응답 헤더를 설정합니다.

프로젝트 다운로드

간단하게 하기 위해 GitHub의 Apigee api-platform-samples 저장소에서 이 프로젝트를 다운로드할 수 있습니다.

  1. api-platform-samples를 시스템에 다운로드하거나 복제합니다.
  2. 원하는 터미널 또는 코드 편집기에서 api-platform-samples/doc-samples/java-properties 프로젝트로 이동합니다.

자바 콜아웃 정책

정책에서 <Properties> 요소를 사용합니다. 이 요소를 사용하면 이름/값 쌍을 지정할 수 있습니다. 런타임에서 자바 코드는 정책에 지정된 속성의 값에 액세스할 수 있습니다. 잠시 후에 살펴보겠습니다.

<JavaCallout name="java-callout">         
    <ClassName>com.apigeesample.JavaProperties</ClassName>         
    <ResourceURL>java://edge-custom-policy-java-properties.jar</ResourceURL>         
    <Properties>              
        <Property name="prop">WORLD!</Property>             
    </Properties> 
</JavaCallout>

샘플 자바 코드

이 샘플의 자바 코드는 자바 콜아웃 정책에 지정된 속성을 검색하는 방법을 보여줍니다. 샘플 프로젝트의 java-properties/callout/src/main/java/JavaProperties.java에서 소스 코드를 확인할 수 있습니다. 이 주제의 뒷부분에서 이 코드를 컴파일하고 배포하는 단계를 살펴보겠습니다.

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.Map;

public class JavaProperties implements Execution {

	private Map <String,String> properties; // read-only

	public JavaProperties(Map <String,String> properties) {
	        this.properties = properties;
	}

	public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) {

		try {

		    messageContext.getMessage().setHeader("X-PROPERTY-HELLO", this.properties.get("prop"));

            return ExecutionResult.SUCCESS;

		} catch (Exception e) {
			return ExecutionResult.ABORT;
		}
	}
}

Maven으로 코드 컴파일

Maven로 컴파일할 수 있도록 프로젝트가 설정되었습니다. javac를 사용하려는 경우 예시도 포함합니다.

  1. Maven이 설치되어 있는지 확인합니다.
    mvn -version
    
  2. java-properties/buildsetup.sh 스크립트를 실행합니다. 이 스크립트는 로컬 Maven 저장소에 필요한 JAR 종속 항목을 설치합니다.
  3. cd 명령어로 java-properties/callout 디렉터리로 이동합니다.
  4. Maven을 실행합니다.
    mvn clean package
    
  5. 원하는 경우 JAR 파일 edge-custom-policy-java-properties.jarjava-properties/apiproxy/resources/java에 복사되었는지 확인합니다. 프록시로 배포하려는 JAR 파일에 필요한 위치입니다.

javac로 컴파일(선택사항)

javac을 사용하여 코드를 컴파일하려면 java-properties 디렉터리에서 다음과 유사한 작업을 수행할 수 있습니다. 필수 JAR 파일은 java-properties/lib 디렉터리에 제공됩니다.

  1. cd 명령어로 api-platform-samples/doc-samples/java-properties로 이동합니다.
  2. 경로에 javac가 있는지 확인합니다.

    javac -version
    
  3. 다음 javac 명령어를 실행합니다.

    javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/JavaProperties.java
    
  4. JAR 파일을 만듭니다.

    jar -cvf edge-custom-policy-java-properties.jar ./com/apigeesample/JavaProperties.class
  5. JAR 파일을 apiproxy/리소스/자바 디렉터리에 복사합니다. 프록시로 배포하려는 JAR 파일에 필요한 위치입니다.
    cp edge-custom-policy-java-properties.jar apiproxy/resources/java
    

프록시 배포 및 호출

배포 스크립트는 ./java-properties 디렉터리에서 제공됩니다. 하지만 실행하기 전에 빠른 설정을 수행해야 합니다.

  1. cd 명령어로 api-platform-samples/doc-samples/java-properties로 이동합니다.
  2. 아직 수정하지 않았다면 ../../setup/setenv.sh 파일을 열고 Apigee 계정 정보(사용자 이름(계정과 연결된 이메일 주소), 조직 이름, API 관리 호출에 사용하는 도메인)가 표시된 대로 수정합니다. 예를 들어 Edge 클라우드의 경우 도메인은 https://api.enterprise.apigee.com이지만 Edge Private Cloud를 사용하는 경우 도메인이 다를 수 있습니다.
  3. setenv.sh 파일을 저장합니다.
  4. 배포 스크립트를 실행합니다.
    ./deploy.sh
    
  5. 배포에 성공하면 호출 스크립트를 실행합니다.
    ./invoke.sh
    

    호출 스크립트는 다음과 같은 cURL 명령어를 호출합니다.

    curl  http://$org-$env.$api_domain/java-properties
    

    프록시가 X-PROPERTY-HELLO: WORLD! 헤더를 반환합니다. 이 정책에는 속성 이름/값 쌍 "prop/WORLD!"를 추가했습니다. 자바 콜아웃은 "WORLD!" 값을 검색하여 X-PROPERTY-HELLO라는 헤더에 설정합니다.

    messageContext.getMessage().setHeader("X-PROPERTY-HELLO", this.properties.get("prop"));