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

이 페이지는 ApigeeApigee Hybrid에 적용됩니다.

Apigee Edge 문서 보기

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

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

자바 콜아웃에서 속성 사용

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

속성을 사용하는 간단한 자바 콜아웃 예시를 살펴보겠습니다. 이 예시에서는 자바 콜아웃 정책이 포함된 프록시를 만듭니다. 정책은 <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. 프록시를 배포하는 가장 간단한 방법은 ZIP 파일로 번들해서 프록시 번들을 Apigee 조직의 환경에 업로드하는 것입니다. API 프록시 만들기를 참조하세요. 프록시 번들 업로드 옵션을 사용해야 합니다. Apigee 커뮤니티의 프록시 번들에 API 프록시 업로드에 대한 도움말 및 유용한 정보를 참조하세요.
  3. 프록시가 배포되면 다음을 호출합니다.
    curl  https://$HOSTNAME/java-properties

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

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