Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Что такое вызов функции Java?
Если вы новичок в использовании вызовов функций в Java, мы рекомендуем начать с руководства «Как создать вызов функции в Java» .
Использование свойств в Java-вызове
Свойства позволяют указывать пары «имя/значение» в политике вызовов Java, к которым можно получить доступ из кода Java во время выполнения. Для каждого свойства необходимо указать строковое значение; в этом элементе нельзя ссылаться на переменные потока.
Давайте рассмотрим простой пример вызова Java, использующий свойства. В этом примере мы создаём прокси, который включает политику вызова Java. Политика использует элемент <Properties> для указания пары имя/значение. В коде Java мы получаем значение и используем его для установки заголовка ответа.
Скачать проект
Для упрощения процесса вы можете загрузить этот проект из репозитория Apigee 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 добавлен в переменную PATH.
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 . Но перед его запуском необходимо выполнить быструю настройку.
- Перейдите в каталог
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"));