查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
什麼是 Java 呼叫?
如果您是 Java 呼叫新手,建議先參閱「如何建立 Java 的 摘要。
在 Java 呼叫中使用屬性
屬性可讓您在 Java 呼叫政策中指定名稱/值組合 下載 Java 程式碼您必須為每個屬性指定常值字串值;你無法 在這個元素中參照流程變數。
我們來看看一個使用屬性的簡易 Java 呼叫範例。在這個範例中
建立內含 Java 呼叫政策的 Proxy。政策會使用
<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
指令碼。這個指令碼會將 本機 Maven 存放區中需要的 JAR 依附元件 - cd 到
java-properties/callout
目錄。 - 執行 Maven:
mvn clean package
- 如有需要,請確認 JAR 檔案
edge-custom-policy-java-properties.jar
已複製到java-properties/apiproxy/resources/java
。必填 。
使用 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 目錄。這是必要的位置
。
cp edge-custom-policy-java-properties.jar apiproxy/resources/java
部署並呼叫 Proxy
部署指令碼會在 ./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.sh
- 如果部署成功,請執行叫用指令碼:
./invoke.sh
叫用指令碼會呼叫 cURL 指令,如下所示:
curl http://$org-$env.$api_domain/java-properties
Proxy 會傳回標頭:
X-PROPERTY-HELLO: WORLD!
。請記得, 政策,我們新增了屬性名稱/值組合"prop/WORLD!"
。Java 呼叫 擷取"WORLD!"
值,並將其設定在名為X-PROPERTY-HELLO
:messageContext.getMessage().setHeader("X-PROPERTY-HELLO", this.properties.get("prop"));