Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
Что такое вызов Java?
Если вы только начинаете работать с выносками Java, рекомендуем сначала ознакомиться со статьей Как создать выноску Java.
Как использовать свойства в выноске Java
Свойства позволяют задавать пары "название/значение" в правиле вызова Java, к которым можно получить доступ из кода Java во время выполнения. Для каждого свойства необходимо указать строковое значение. Ссылаться на переменные потока в этом элементе нельзя.
Рассмотрим простой пример вызова Java, в котором используются свойства. В этом примере мы создадим прокси-сервер, который включает правило вызова Java. В правиле используется элемент <Properties>, чтобы указать пару "название-значение". В коде Java мы получаем значение и используем его, чтобы задать заголовок ответа.
Как скачать проект
Чтобы упростить задачу, вы можете скачать этот проект из репозитория api-platform-samples на GitHub.
- Скачайте или клонируйте api-platform-samples в свою систему.
- В терминале или редакторе кода перейдите в проект
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
api-platform-samples/doc-samples/java-properties - Если вы ещё этого не сделали, откройте файл
../../setup/setenv.shи измените его, указав информацию о своем аккаунте Apigee: имя пользователя (адрес электронной почты, связанный с аккаунтом), название организации и домен, который вы используете для вызовов API управления. Например, для облака Edge домен будет выглядеть так:https://api.enterprise.apigee.com. Однако если вы используете частное облако Edge, домен может быть другим. - Сохраните файл
setenv.sh. - Выполните скрипт развертывания:
./deploy.sh
- Если развертывание прошло успешно, выполните скрипт вызова:
./invoke.sh
Скрипт invoke вызывает команду 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"));