คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
อะไร
ช่วยให้คุณสามารถใช้ Java เพื่อติดตั้งใช้งานการทำงานแบบกำหนดเองที่ไม่รวมอยู่ใน นโยบาย Apigee ในโค้ด Java คุณสามารถเข้าถึงพร็อพเพอร์ตี้ข้อความ (ส่วนหัว พารามิเตอร์การค้นหา content) และตัวแปรโฟลว์ในโฟลว์พร็อกซี หากคุณเพิ่งเริ่มต้นโดยใช้นโยบายนี้ ดูวิธีสร้าง Java ข้อความไฮไลต์
สำหรับ Java เวอร์ชันที่สนับสนุน โปรดดูที่ ที่สนับสนุน ซอฟต์แวร์และเวอร์ชันที่รองรับ
กำหนดเวลา
สำหรับหลักเกณฑ์ โปรดดู "ฉันควรใช้ข้อความไฮไลต์ Java เมื่อใด" ในวิธีสร้าง Java ข้อความไฮไลต์
เกี่ยวกับ
นโยบายคำขอราคาเสนอ Java ช่วยให้คุณรับและตั้งค่าตัวแปรโฟลว์ เรียกใช้ตรรกะที่กำหนดเอง และดำเนินการ เกิดข้อผิดพลาด ดึงข้อมูลจากคำขอหรือการตอบกลับ และอื่นๆ นโยบายนี้ช่วยให้คุณดำเนินการต่อไปนี้ได้ ใช้ลักษณะการทำงานที่กำหนดเองซึ่งไม่อยู่ภายใต้นโยบาย Edge มาตรฐานอื่นๆ
คุณสามารถทำแพ็กเกจแอปพลิเคชัน Java ด้วยแพ็กเกจไฟล์ JAR ใดก็ได้ที่คุณต้องการ หมายเหตุ มีข้อจำกัดบางอย่างเกี่ยวกับสิ่งที่คุณสามารถทำได้ด้วยข้อความไฮไลต์ Java รายชื่อเหล่านี้แสดงอยู่ด้านล่าง ในข้อจำกัดตัวอย่าง
ตัวอย่างง่ายๆ
วิธีสร้าง Java ข้อความไฮไลต์ดึงข้อมูลคุณสมบัติในโค้ด Java
องค์ประกอบ <Property>
ของนโยบายให้คุณระบุชื่อ/ค่าได้
ที่คุณรับขณะรันไทม์ในโค้ด Java ได้ สำหรับตัวอย่างที่ใช้งานได้ซึ่งใช้
โปรดดูวิธีใช้พร็อพเพอร์ตี้
ในข้อความไฮไลต์ Java
ใช้ <Property> แอตทริบิวต์ name
ขององค์ประกอบเพื่อระบุชื่อที่มี
เพื่อเข้าถึงพร็อพเพอร์ตี้จากโค้ด Java ขององค์ประกอบ <Property>
value (ค่าระหว่างแท็กเปิดและปิด) คือค่าที่จะได้รับโดย
โค้ด Java ค่าต้องเป็นสตริง คุณไม่สามารถอ้างอิงตัวแปรโฟลว์เพื่อรับ
- กําหนดค่าพร็อพเพอร์ตี้ ในที่นี้ ค่าของพร็อพเพอร์ตี้จะเป็นชื่อตัวแปร
response.status.code
<JavaCallout async="false" continueOnError="false" enabled="true" name="JavaCallout"> <DisplayName>JavaCallout</DisplayName> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <Properties> <Property name="source">response.status.code</Property> </Properties> </Javascript>
- ติดตั้งตัวสร้างต่อไปนี้ในคลาสการดำเนินการในโค้ด Java
ดังนี้
วันที่public class MyJavaCallout implements Execution{ public MyJavaCallout(Map<string, string> props){ // Extract property values from map. } ... }
ตั้งค่าตัวแปรโฟลว์ในโค้ด Java
สำหรับคำอธิบายที่ชัดเจนถึงวิธีตั้งค่าตัวแปรในบริบทข้อความ (ตัวแปรโฟลว์) ใน โปรดดูโค้ด Java ได้ที่โพสต์ชุมชน Apigee นี้
การอ้างอิงองค์ประกอบ
การอ้างอิงองค์ประกอบจะอธิบายองค์ประกอบและแอตทริบิวต์ของนโยบาย Javaข้อความไฮไลต์
<JavaCallout name="MyJavaCalloutPolicy"> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> </JavaCallout>
<JavaCallout> แอตทริบิวต์
<JavaCallout name="MyJavaCalloutPolicy" enabled="true" continueOnError="false" async="false" >
ตารางต่อไปนี้อธิบายแอตทริบิวต์ทั่วไปในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
name |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ (ไม่บังคับ) ใช้องค์ประกอบ |
ไม่มี | ต้องระบุ |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
เท็จ | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
แอตทริบิวต์นี้เลิกใช้งานแล้ว |
เท็จ | เลิกใช้ |
<DisplayName> องค์ประกอบ
ใช้เพิ่มเติมจากแอตทริบิวต์ name
เพื่อติดป้ายกำกับนโยบายใน
เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน
<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น |
ไม่มี หากไม่ใส่องค์ประกอบนี้ ค่าของแอตทริบิวต์ |
---|---|
การมีบุคคลอยู่ | ไม่บังคับ |
ประเภท | สตริง |
<ClassName> องค์ประกอบ
ระบุชื่อของคลาส Java ที่จะดำเนินการเมื่อเรียกใช้นโยบายการเรียก Java
ต้องอยู่ในไฟล์ JAR ที่ระบุโดย <ResourceURL>
โปรดดู
วิธีการสร้าง Java
ข้อความไฮไลต์
<JavaCallout name="MyJavaCalloutPolicy"> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> </JavaCallout>
ค่าเริ่มต้น: | ไม่มี |
การตรวจหาบุคคล: | ต้องระบุ |
ประเภท: | สตริง |
<Property> องค์ประกอบ
ระบุพร็อพเพอร์ตี้ที่คุณเข้าถึงได้จากโค้ด Java ขณะรันไทม์ คุณต้องระบุลิเทอรัล ค่าสตริงของแต่ละพร็อพเพอร์ตี้ คุณไม่สามารถอ้างอิงตัวแปรโฟลว์ในองค์ประกอบนี้ได้ สำหรับ ตัวอย่างการทำงานที่ใช้พร็อพเพอร์ตี้ โปรดดูวิธีใช้พร็อพเพอร์ตี้ใน ข้อความไฮไลต์ Java
<Properties> <Property name="propName">propertyValue</Property> </Properties>
ค่าเริ่มต้น: | ไม่มี |
การตรวจหาบุคคล: | ไม่บังคับ |
ประเภท: | สตริง |
Attributes
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
ชื่อ |
ระบุชื่อพร็อพเพอร์ตี้ |
ไม่มี | ต้องระบุ |
<ResourceURL> องค์ประกอบ
องค์ประกอบนี้ระบุไฟล์ Java JAR ที่จะทำงานเมื่อนโยบายคำขอราคาเสนอ Java วิ่งได้
คุณสามารถจัดเก็บไฟล์นี้ที่ขอบเขตพร็อกซี API (ภายใต้
/apiproxy/resources/java
ในกลุ่มพร็อกซี API หรือในส่วนสคริปต์ของ
แผงการนำทางของเครื่องมือแก้ไขพร็อกซี API) หรือที่ขอบเขตองค์กรหรือสภาพแวดล้อมเพื่อนำมาใช้ใหม่
ในพร็อกซี API หลายรายการ ตามที่อธิบายไว้ในไฟล์ทรัพยากร
<JavaCallout name="MyJavaCalloutPolicy"> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> </JavaCallout>
ค่าเริ่มต้น: | ไม่มี |
การตรวจหาบุคคล: | ต้องระบุ |
ประเภท: | สตริง |
ข้อมูลอ้างอิงข้อผิดพลาด
ส่วนนี้จะอธิบายรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงกลับมา และตัวแปรข้อผิดพลาดที่ Edge ตั้งค่าไว้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้มีความสำคัญต่อการทราบว่าคุณจะสร้างกฎความผิดพลาดเพื่อ จัดการกับข้อผิดพลาด หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่สิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการ ข้อผิดพลาด
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน
รหัสข้อผิดพลาด | สถานะ HTTP | สาเหตุ | แก้ไข |
---|---|---|---|
steps.javacallout.ExecutionError |
500 | เกิดขึ้นเมื่อโค้ด Java ส่งข้อยกเว้นหรือแสดงผลเป็น Null ในระหว่างการบังคับใช้นโยบาย JavaScript | build |
ข้อผิดพลาดในการทำให้ใช้งานได้
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อมีการทำให้พร็อกซีที่มีนโยบายใช้งานได้
ชื่อข้อผิดพลาด | สตริงข้อผิดพลาด | สถานะ HTTP | เกิดขึ้นเมื่อ |
---|---|---|---|
ResourceDoesNotExist |
Resource with name
[name] and type [type] does not exist |
ไม่มี | ไม่มีไฟล์ที่ระบุในองค์ประกอบ <ResourceURL> |
JavaCalloutInstantiationFailed |
Failed to instantiate the JavaCallout Class [classname] |
ไม่มี | ไฟล์คลาสที่ระบุในองค์ประกอบ <ClassName> ไม่ได้อยู่ใน
โหล |
IncompatibleJavaVersion |
Failed to load java class [classname] definition due to - [reason] |
ไม่มี | ดูสตริงข้อผิดพลาด ดูเพิ่มเติมที่รองรับ ซอฟต์แวร์และเวอร์ชันที่รองรับ |
JavaClassNotFoundInJavaResource |
Failed to find the ClassName in java resource [jar_name] -
[class_name] |
ไม่มี | ดูสตริงข้อผิดพลาด |
JavaClassDefinitionNotFound |
Failed to load java class [class_name] definition due to - [reason] |
ไม่มี | ดูสตริงข้อผิดพลาด |
NoAppropriateConstructor |
No appropriate constructor found in JavaCallout class [class_name] |
ไม่มี | ดูสตริงข้อผิดพลาด |
NoResourceForURL |
Could not locate a resource with URL [string] |
ไม่มี | ดูสตริงข้อผิดพลาด |
ตัวแปรความผิดพลาด
ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อนโยบายนี้ทำให้เกิดข้อผิดพลาด โปรดดูข้อมูลเพิ่มเติมที่หัวข้อสิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบาย
ตัวแปร | สถานที่ | ตัวอย่าง |
---|---|---|
fault.name="fault_name" |
fault_name คือชื่อของข้อผิดพลาดตามที่ระบุไว้ในตารางข้อผิดพลาดรันไทม์ด้านบน ชื่อข้อผิดพลาดคือส่วนสุดท้ายของรหัสข้อผิดพลาด | fault.name Matches "ExecutionError" |
javacallout.policy_name.failed |
policy_name คือชื่อที่ผู้ใช้ระบุของนโยบายที่เป็นสาเหตุของข้อผิดพลาด | javacallout.JC-GetUserData.failed = true |
ตัวอย่างการตอบสนองข้อผิดพลาด
{ "fault":{ "faultstring":"Failed to execute JavaCallout. [policy_name]", "detail":{ "errorcode":"javacallout.ExecutionError" } } }
ตัวอย่างกฎข้อผิดพลาด
<FaultRule name="JavaCalloutFailed"> <Step> <Name>AM-JavaCalloutError</Name> </Step> <Condition>(fault.name Matches "ExecutionError") </Condition> </FaultRule>
สคีมา
การคอมไพล์และทำให้ใช้งานได้
โปรดดูรายละเอียดเกี่ยวกับวิธีคอมไพล์โค้ด Java ที่กำหนดเองและทำให้ใช้งานได้กับพร็อกซีที่หัวข้อวิธีสร้าง Java ข้อความไฮไลต์
ข้อจำกัด
ด้านล่างนี้เป็นข้อจำกัดที่คุณต้องพิจารณาเมื่อเขียนข้อความเสริม Java
- การเรียกระบบส่วนใหญ่ไม่ได้รับอนุญาต เช่น คุณไม่สามารถทำให้ระบบไฟล์ภายในอ่านได้ หรือการเขียน
- การเข้าถึงเครือข่ายผ่านซ็อกเก็ต Apigee จะจำกัดการเข้าถึง sitelocal, anylocal Loopback และ linklocal address
- ข้อความไฮไลต์ไม่สามารถรับข้อมูลเกี่ยวกับกระบวนการปัจจุบัน รายการกระบวนการ หรือ การใช้งาน CPU/หน่วยความจำบนเครื่อง แม้ว่าการเรียกดังกล่าวอาจใช้ได้ผลก็ได้ ไม่ได้รับการสนับสนุนและมีความรับผิดที่จะต้องถูกปิดใช้งานอยู่ตลอดเวลา สำหรับความสามารถในการส่งต่อ ควรหลีกเลี่ยงการทำการเรียกดังกล่าวในโค้ดของคุณ
- ไม่รองรับการอ้างอิงไลบรารี Java ที่รวมอยู่ใน Apigee Edge เหล่านั้น ไลบรารีมีไว้สำหรับฟังก์ชันของผลิตภัณฑ์ Edge เท่านั้น และไม่มีการรับประกันว่าไลบรารีจะ พร้อมใช้งานตั้งแต่เปิดตัวไปจนถึงเปิดตัว
- อย่าใช้
io.apigee
หรือcom.apigee
เป็นชื่อแพ็กเกจใน Java ไฮไลต์ ชื่อดังกล่าวจะสงวนไว้และใช้โดยโมดูล Apigee อื่นๆ
บรรจุภัณฑ์
วาง JAR ในพร็อกซี API ใต้ /resources/java
หากข้อความไฮไลต์สำหรับ Java ใช้
กับไลบรารีของบุคคลที่สามเพิ่มเติมซึ่งจัดเป็นไฟล์ JAR อิสระ แล้ววางไฟล์ JAR เหล่านั้น
ในไดเรกทอรี /resources/java
ด้วย เพื่อให้แน่ใจว่ามีการโหลดอย่างถูกต้อง
รันไทม์
หากใช้ UI การจัดการเพื่อสร้างหรือแก้ไขพร็อกซี ให้เพิ่มทรัพยากรใหม่และ
ระบุไฟล์ JAR ที่ต้องพึ่งพาเพิ่มเติม หากมี JAR หลายรายการ ให้เพิ่มเป็น
แหล่งข้อมูลเพิ่มเติม คุณไม่จำเป็นต้องแก้ไขการกำหนดค่านโยบายเพื่ออ้างอิง
ไฟล์ JAR เพียงใส่ไว้ใน /resources/java
ก็เพียงพอแล้ว
โปรดดูข้อมูลเกี่ยวกับการอัปโหลด Java JAR ในไฟล์ทรัพยากร
สำหรับตัวอย่างโดยละเอียดที่สาธิตวิธีการจัดแพ็กเกจและการทำให้การเรียก Java ใช้งานได้โดยใช้ Maven หรือ Javac โปรดดูวิธีสร้าง ข้อความไฮไลต์ Java
Javadoc
Javadoc สำหรับการเขียนรหัสการเรียก Java รวมอยู่ที่นี่ใน GitHub คุณจะต้องโคลนหรือดาวน์โหลด HTML ลงในระบบของคุณ จากนั้นเพียงเปิด index.html ในเบราว์เซอร์
หมายเหตุการใช้งาน
- นโยบายข้อความไฮไลต์ของ Java ไม่มีโค้ดจริง แต่นโยบายการเรียก Java จะอ้างอิง
"ทรัพยากร" ของ Java และกำหนดขั้นตอนในโฟลว์ API ที่โค้ด Java จะทำงาน คุณสามารถ
อัปโหลด Java JAR ผ่านเครื่องมือแก้ไขพร็อกซี UI การจัดการ หรือคุณสามารถรวมไว้ใน
ไดเรกทอรี
/resources/java
ในพร็อกซี API ที่คุณพัฒนาในเครื่อง - สำหรับการดำเนินการที่ไม่ซับซ้อน เช่น การเรียก API ไปยังบริการระยะไกล เราขอแนะนำให้ใช้เมธอด นโยบายคำขอราคาเสนอบริการ ดูนโยบายข้อความไฮไลต์บริการ
- สำหรับการโต้ตอบกับเนื้อหาข้อความที่ไม่ซับซ้อน เช่น การแก้ไขหรือการดึงข้อมูล ส่วนหัว พารามิเตอร์ หรือเนื้อหาข้อความ HTTP แนะนำให้ใช้นโยบาย JavaScript
หัวข้อที่เกี่ยวข้อง
- ดูตัวอย่างที่เกี่ยวข้องได้ที่ java-cookbook ที่เก็บ