Как использовать свойства в выноске Java

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

Что такое выноска Java?

Если вы новичок в использовании выносок Java, мы рекомендуем начать с раздела «Как создать выноску Java» .

Использование свойств в выноске Java

Свойства позволяют указывать пары имя/значение в политике вызовов Java, к которой вы можете получить доступ из кода Java во время выполнения. Вы должны указать буквальное строковое значение для каждого свойства; вы не можете ссылаться на переменные потока в этом элементе.

Давайте рассмотрим простой пример выноски Java, в котором используются свойства. В этом примере мы создаем прокси-сервер, включающий политику вызовов Java. Политика использует элемент <Properties> для указания пары имя/значение. В коде Java мы извлекаем значение и используем его для установки заголовка ответа.

Скачать проект

Для простоты вы можете скачать этот проект из репозитория Apigee api-platform-samples на GitHub.

  1. Загрузите или клонируйте образцы API-платформы в свою систему.
  2. В выбранном вами терминале или редакторе кода перейдите к проекту api-platform-samples/doc-samples/java-properties .

Политика вызовов Java

Политика использует элемент <Properties> . Этот элемент позволяет указать пары имя/значение. Как мы вскоре увидим, во время выполнения ваш Java-код может получить доступ к значениям свойств, указанных в политике.

<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

Код Java для этого примера показывает, как получить свойство, указанное в политике выносок Java. В примере проекта вы можете найти исходный код в 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 . Этот скрипт устанавливает необходимые зависимости JAR в ваш локальный репозиторий Maven.
  3. перейдите в каталог java-properties/callout .
  4. Выполнить Maven:
    mvn clean package
    
  5. При желании убедитесь, что файл JAR edge-custom-policy-java-properties.jar был скопирован в java-properties/apiproxy/resources/java . Это необходимое местоположение для файлов JAR, которые вы хотите развернуть с помощью прокси.

Скомпилировать с помощью javac (необязательно)

Если вы хотите использовать javac для компиляции кода, вы можете сделать что-то похожее на следующее (из каталога java-properties ). Необходимые файлы JAR предоставляются вам в каталоге java-properties/lib .

  1. перейдите 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/resources/java. Это необходимое местоположение для файлов JAR, которые вы хотите развернуть с помощью прокси.
    cp edge-custom-policy-java-properties.jar apiproxy/resources/java
    

Развертывание и вызов прокси

Скрипт развертывания находится в каталоге ./java-properties . Но прежде чем запускать его, необходимо выполнить быструю настройку.

  1. cd to 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!" . Вызов Java получает значение "WORLD!" и устанавливает его в заголовке X-PROPERTY-HELLO :

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