Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
Что такое выноска Java?
Если вы новичок в использовании выносок Java, мы рекомендуем начать с раздела «Как создать выноску Java» .
Использование свойств в выноске Java
Свойства позволяют указывать пары имя/значение в политике вызовов Java, к которой вы можете получить доступ из кода Java во время выполнения. Вы должны указать буквальное строковое значение для каждого свойства; вы не можете ссылаться на переменные потока в этом элементе.
Давайте рассмотрим простой пример выноски Java, в котором используются свойства. В этом примере мы создаем прокси-сервер, включающий политику вызовов Java. Политика использует элемент <Properties>
для указания пары имя/значение. В коде Java мы извлекаем значение и используем его для установки заголовка ответа.
Скачать проект
Для простоты вы можете скачать этот проект из репозитория Apigee api-platform-samples на GitHub.
- Загрузите или клонируйте образцы API-платформы в свою систему.
- В выбранном вами терминале или редакторе кода перейдите к проекту
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
, мы также приведем пример.
- Убедитесь, что у вас установлен Maven:
mvn -version
- Выполните скрипт
java-properties/buildsetup.sh
. Этот скрипт устанавливает необходимые зависимости JAR в ваш локальный репозиторий Maven. - перейдите в каталог
java-properties/callout
. - Выполнить Maven:
mvn clean package
- При желании убедитесь, что файл JAR
edge-custom-policy-java-properties.jar
был скопирован вjava-properties/apiproxy/resources/java
. Это необходимое местоположение для файлов JAR, которые вы хотите развернуть с помощью прокси.
Скомпилировать с помощью javac (необязательно)
Если вы хотите использовать javac
для компиляции кода, вы можете сделать что-то похожее на следующее (из каталога java-properties
). Необходимые файлы JAR предоставляются вам в каталоге java-properties/lib
.
- перейдите
api-platform-samples/doc-samples/java-properties
. - Убедитесь, что на вашем пути есть javac.
javac -version
- Выполните следующую команду javac:
javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/JavaProperties.java
- Создайте JAR-файл:
jar -cvf edge-custom-policy-java-properties.jar ./com/apigeesample/JavaProperties.class
- Скопируйте файл JAR в каталог apiproxy/resources/java. Это необходимое местоположение для файлов JAR, которые вы хотите развернуть с помощью прокси.
cp edge-custom-policy-java-properties.jar apiproxy/resources/java
Развертывание и вызов прокси
Скрипт развертывания находится в каталоге ./java-properties
. Но прежде чем запускать его, необходимо выполнить быструю настройку.
- cd to
api-platform-samples/doc-samples/java-properties
- Если вы еще этого не сделали, откройте файл
../../setup/setenv.sh
и отредактируйте его, как указано, указав информацию вашей учетной записи Apigee: ваше имя пользователя (адрес электронной почты, связанный с вашей учетной записью), название вашей организации, и домен, который вы используете для вызовов управления API. Например, для облака Edge домен —https://api.enterprise.apigee.com
; однако ваш домен может быть другим, если вы используете Edge Private Cloud. - Сохраните файл
setenv.sh
. - Выполните сценарий развертывания:
./deploy.sh
- Если развертывание прошло успешно, выполните сценарий вызова:
./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"));