Java コールアウトとは
Java コールアウトを初めて使用する場合は、Java コールアウトの作成方法から始めることをおすすめします。
Java コールアウトでのプロパティの使用
プロパティを使用すると、ランタイムに Java コードからアクセスできる Java Callout ポリシーに name / value ペアを指定できます。各プロパティにリテラル文字列値を指定する必要があります。この要素ではフロー変数を参照できません。
プロパティを使用する簡単な Java コールアウトについて考えてみましょう。この例では、Java Callout ポリシーを含むプロキシを作成します。このポリシーでは、<Properties>
要素を使用して name / value ペアを指定します。Java コードで値を取得し、レスポンス ヘッダーに設定します。
プロジェクトをダウンロードする
このプロジェクトは、GitHub の Apigee api-platform-samples リポジトリからダウンロードできます。
- システムに api-platform-samples をダウンロードするか、クローンを作成します。
- ターミナルまたは任意のコードエディタで
api-platform-samples/doc-samples/java-properties
プロジェクトに移動します。
Java Callout ポリシー
このポリシーでは <Properties>
要素を使用します。この要素を使用して name / value ペアを指定します。ランタイムに、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 Callout ポリシーで指定されたプロパティを取得します。サンプル プロジェクトの 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 リポジトリにインストールされます。- cd で
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
ディレクトリに用意されています。
- cd で
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 Cloud の場合、ドメインはhttps://api.enterprise.apigee.com
ですが、Edge Private Cloud を使用している場合はドメインが異なる可能性があります。setenv.sh
ファイルを保存します。- deploy スクリプトを実行します。
./deploy.sh
- デプロイが成功したら、invoke スクリプトを実行します。
./invoke.sh
invoke スクリプトは、次のような cURL コマンドを呼び出します。
curl http://$org-$env.$api_domain/java-properties
プロキシが
X-PROPERTY-HELLO: WORLD!
ヘッダーを返します。このポリシーでは、name / value ペア"prop/WORLD!"
を追加しています。Java コールアウトが値"WORLD!"
を取得し、X-PROPERTY-HELLO
というヘッダーに設定します。messageContext.getMessage().setHeader("X-PROPERTY-HELLO", this.properties.get("prop"));