このページの内容は Apigee と Apigee ハイブリッドに該当します。
Apigee Edge のドキュメントを表示する。
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
に移動します。 - プロキシをデプロイする最も簡単な方法は、ZIP ファイルにバンドルし、Apigee 組織内の環境にプロキシ バンドルをアップロードすることです。API プロキシの作成をご覧ください。必ず [Upload Proxy Bundle] オプションを使用してください。Apigee コミュニティでプロキシ バンドルに API プロキシをアップロードするためのヒントもご覧ください。
- プロキシがデプロイされたら、次のように呼び出してみてください。
curl https://$HOSTNAME/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"));