วิธีใช้พร็อพเพอร์ตี้ในคําขอราคาเสนอ Java

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่ เอกสารประกอบของ Apigee X
info

Java Callout คืออะไร

หากคุณยังไม่คุ้นเคยกับ Java Callout เราขอแนะนำให้เริ่มต้นด้วยหัวข้อ วิธีสร้าง Java Callout

การใช้พร็อพเพอร์ตี้ใน Java Callout

พร็อพเพอร์ตี้ช่วยให้คุณระบุคู่ชื่อ/ค่าในนโยบาย Java Callout ที่คุณเข้าถึงได้จาก โค้ด Java ในรันไทม์ คุณต้องระบุค่าสตริงตัวอักษรสำหรับแต่ละพร็อพเพอร์ตี้ โดยจะอ้างอิงตัวแปรโฟลว์ในองค์ประกอบนี้ไม่ได้

ลองมาดูตัวอย่าง Java Callout อย่างง่ายที่ใช้พร็อพเพอร์ตี้กัน ในตัวอย่างนี้ เรา จะสร้างพร็อกซีที่มีนโยบาย Java Callout นโยบายจะใช้ <Properties> องค์ประกอบ เพื่อระบุคู่ชื่อ/ค่า ในโค้ด Java เราจะ ดึงค่าและใช้ค่าดังกล่าวเพื่อตั้งค่าส่วนหัวการตอบกลับ

ดาวน์โหลดโปรเจ็กต์

คุณสามารถดาวน์โหลดโปรเจ็กต์นี้จากที่เก็บ api-platform-samples ของ Apigee ใน GitHub เพื่อให้ง่ายต่อการใช้งาน

  1. ดาวน์โหลดหรือโคลน api-platform-samples ลงในระบบ
  2. ในเทอร์มินัลหรือโปรแกรมแก้ไขโค้ดที่คุณเลือก ให้ไปที่ api-platform-samples/doc-samples/java-properties โปรเจ็กต์

นโยบาย Java Callout

นโยบายจะใช้องค์ประกอบ <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 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 เราจะใส่ตัวอย่างไว้ด้วย

  1. ตรวจสอบว่าคุณได้ติดตั้ง Maven แล้วโดยทำดังนี้
    mvn -version
  2. เรียกใช้สคริปต์ java-properties/buildsetup.sh สคริปต์นี้จะติดตั้งการขึ้นต่อกันของ JAR ที่จำเป็นในที่เก็บ Maven ในเครื่อง
  3. เปลี่ยนไดเรกทอรีเป็น java-properties/callout
  4. เรียกใช้ Maven โดยทำดังนี้
    mvn clean package
  5. หากต้องการ ให้ตรวจสอบว่าไฟล์ JAR edge-custom-policy-java-properties.jar ถูกคัดลอกไปยัง java-properties/apiproxy/resources/java แล้ว ซึ่งเป็นตำแหน่งที่จำเป็นสำหรับไฟล์ JAR ที่คุณต้องการติดตั้งใช้งานกับพร็อกซี

คอมไพล์ด้วย javac (ไม่บังคับ)

หากต้องการใช้ javac เพื่อคอมไพล์โค้ด คุณสามารถทำสิ่งที่คล้ายกับตัวอย่างต่อไปนี้ (จากไดเรกทอรี java-properties) เราได้จัดเตรียมไฟล์ JAR ที่จำเป็นไว้ให้คุณในไดเรกทอรี java-properties/lib

  1. เปลี่ยนไดเรกทอรีเป็น api-platform-samples/doc-samples/java-properties
  2. ตรวจสอบว่าคุณมี javac ในเส้นทาง

    javac -version
  3. เรียกใช้คำสั่ง javac ต่อไปนี้

    javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/JavaProperties.java
  4. สร้างไฟล์ JAR:

    jar -cvf edge-custom-policy-java-properties.jar ./com/apigeesample/JavaProperties.class
  5. คัดลอกไฟล์ JAR ไปยังไดเรกทอรี apiproxy/resources/java ซึ่งเป็นตำแหน่งที่จำเป็น สำหรับไฟล์ JAR ที่คุณต้องการติดตั้งใช้งานกับพร็อกซี
    cp edge-custom-policy-java-properties.jar apiproxy/resources/java

ติดตั้งใช้งานและเรียกพร็อกซี

เราได้จัดเตรียมสคริปต์การติดตั้งใช้งานไว้ในไดเรกทอรี ./java-properties แต่ก่อนที่จะดำเนินการ คุณต้องทำการตั้งค่าอย่างรวดเร็ว

  1. เปลี่ยนไดเรกทอรีเป็น api-platform-samples/doc-samples/java-properties
  2. หากยังไม่ได้ดำเนินการ ให้เปิดไฟล์ ../../setup/setenv.sh แล้วแก้ไข ตามที่ระบุด้วยข้อมูลบัญชี Apigee ของคุณ ได้แก่ ชื่อผู้ใช้ (อีเมลที่เชื่อมโยงกับบัญชี) ชื่อองค์กร และโดเมนที่คุณใช้เพื่อทำการเรียก API การจัดการ เช่น สำหรับระบบคลาวด์ Edge โดเมนคือ https://api.enterprise.apigee.com แต่โดเมนของคุณอาจแตกต่างออกไปหากคุณ ใช้ Edge Private Cloud
  3. บันทึกไฟล์ setenv.sh
  4. เรียกใช้สคริปต์การติดตั้งใช้งานโดยทำดังนี้
    ./deploy.sh
  5. หากการติดตั้งใช้งานสำเร็จ ให้เรียกใช้สคริปต์การเรียกโดยทำดังนี้
    ./invoke.sh

    สคริปต์การเรียกจะเรียกใช้คำสั่ง cURL ที่มีลักษณะดังนี้

    curl  http://$org-$env.$api_domain/java-properties

    พร็อกซีจะแสดงผลส่วนหัว X-PROPERTY-HELLO: WORLD! โปรดทราบว่าใน นโยบาย เราได้เพิ่มคู่ชื่อ/ค่าพร็อพเพอร์ตี้ "prop/WORLD!" Java Callout จะดึงค่า "WORLD!" และตั้งค่าในส่วนหัวที่ชื่อว่า X-PROPERTY-HELLO ดังนี้

    messageContext.getMessage().setHeader("X-PROPERTY-HELLO", this.properties.get("prop"));