คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
อะไร
ช่วยให้คุณสามารถใช้ Java เพื่อติดตั้งใช้งานลักษณะการทำงานที่กำหนดเองที่นโยบาย Apigee ไม่ได้รวมอยู่ในให้ติดตั้งมาในตัว ในโค้ด Java คุณจะเข้าถึงพร็อพเพอร์ตี้ข้อความ (ส่วนหัว พารามิเตอร์การค้นหา เนื้อหา) และตัวแปรโฟลว์ในขั้นตอนพร็อกซีได้ หากคุณเพิ่งเริ่มต้นใช้งานนโยบายนี้ โปรดดูวิธีสร้างไฮไลต์ Java
ดูเวอร์ชันที่รองรับของ Java ได้ที่ซอฟต์แวร์ที่รองรับและเวอร์ชันที่รองรับ
กรณีใช้งาน
ดูหลักเกณฑ์ได้ที่ "ฉันควรใช้ไฮไลต์ Java เมื่อใด" ในวิธีสร้างไฮไลต์ Java
เกี่ยวกับ
นโยบายคำขอราคาเสนอ Java ให้คุณรับและตั้งค่าตัวแปรโฟลว์ เรียกใช้ตรรกะที่กำหนดเอง และจัดการข้อผิดพลาด ดึงข้อมูลจากคำขอหรือการตอบกลับ และอีกมากมาย นโยบายนี้อนุญาตให้คุณใช้งานลักษณะการทำงานที่กำหนดเองซึ่งไม่อยู่ภายใต้นโยบาย Edge มาตรฐานอื่นๆ
คุณสามารถทำแพ็กเกจแอปพลิเคชัน Java โดยใช้ไฟล์ JAR ใดก็ได้ที่ต้องการ โปรดทราบว่ามีข้อจำกัดบางอย่างในสิ่งที่คุณทำได้ด้วยไฮไลต์ Java ดังแสดงไว้ด้านล่างในข้อจำกัดลองฟัง
ตัวอย่างง่ายๆ
วิธีสร้างไฮไลต์ Javaดึงข้อมูลพร็อพเพอร์ตี้ในโค้ด Java
องค์ประกอบ <Property>
ของนโยบายให้คุณระบุคู่ชื่อ/ค่าที่ดึงมาได้ขณะรันไทม์ในโค้ด Java ดูตัวอย่างที่ใช้งานได้ซึ่งใช้พร็อพเพอร์ตี้ได้ที่วิธีใช้พร็อพเพอร์ตี้ในไฮไลต์ของ Java
ใช้แอตทริบิวต์ name
ขององค์ประกอบ <Property> เพื่อระบุชื่อที่จะเข้าถึงพร็อพเพอร์ตี้จากโค้ด Java ค่าขององค์ประกอบ <Property>
(ค่าระหว่างแท็กเปิดและแท็กปิด) คือค่าที่โค้ด 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
โปรดดูโพสต์ชุมชน Apigee นี้เพื่อดูรายละเอียดที่ชัดเจนเกี่ยวกับวิธีตั้งค่าตัวแปรในบริบทข้อความ (ตัวแปรโฟลว์) ในโค้ด Java
การอ้างอิงองค์ประกอบ
การอ้างอิงองค์ประกอบจะอธิบายองค์ประกอบและแอตทริบิวต์ของนโยบาย JavaCaption
<JavaCallout name="MyJavaCalloutPolicy"> <ClassName>com.example.mypolicy.MyJavaCallout</ClassName> <ResourceURL>java://MyJavaCallout.jar</ResourceURL> </JavaCallout>
แอตทริบิวต์ <Java callout>
<JavaCallout name="MyJavaCalloutPolicy" enabled="true" continueOnError="false" async="false" >
ตารางต่อไปนี้อธิบายแอตทริบิวต์ที่ใช้ร่วมกันในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
name |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ (ไม่บังคับ) ใช้องค์ประกอบ |
ไม่มีข้อมูล | จำเป็น |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
false | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
แอตทริบิวต์นี้เลิกใช้งานแล้ว |
false | เลิกใช้ |
องค์ประกอบ <DisplayName>
ใช้เพิ่มเติมจากแอตทริบิวต์ name
เพื่อติดป้ายกำกับนโยบายในเครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติที่แตกต่างออกไป
<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น |
ไม่มีข้อมูล หากคุณไม่ใส่องค์ประกอบนี้ ระบบจะใช้ค่าของแอตทริบิวต์ |
---|---|
การมีบุคคลอยู่ | ไม่บังคับ |
Type | สตริง |
อีลิเมนต์ <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 ระหว่างการดำเนินการของนโยบาย JavaCaption | build |
ข้อผิดพลาดในการทำให้ใช้งานได้
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อมีการทำให้พร็อกซีที่มีนโยบายใช้งานได้
ชื่อข้อผิดพลาด | สตริงข้อผิดพลาด | สถานะ HTTP | เกิดขึ้นเมื่อ |
---|---|---|---|
ResourceDoesNotExist |
Resource with name
[name] and type [type] does not exist |
ไม่มีข้อมูล | ไม่มีไฟล์ที่ระบุในองค์ประกอบ <ResourceURL> |
JavaCalloutInstantiationFailed |
Failed to instantiate the JavaCallout Class [classname] |
ไม่มีข้อมูล | ไฟล์คลาสที่ระบุในองค์ประกอบ <ClassName> ไม่อยู่ใน Jar |
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
- ไฮไลต์รับข้อมูลเกี่ยวกับกระบวนการปัจจุบัน รายการกระบวนการ หรือการใช้งาน CPU/หน่วยความจำในเครื่องไม่ได้ แม้ว่าบางการเรียกอาจใช้งานได้ แต่ก็ไม่ได้รับการสนับสนุนและจำเป็นต้องปิดใช้อยู่เสมอ คุณควรหลีกเลี่ยงการเรียกใช้ดังกล่าวในโค้ดเพื่อให้ใช้งานร่วมกันได้ส่งต่อ
- ระบบไม่รองรับการใช้ไลบรารี Java ที่รวมอยู่ใน Apigee Edge ไลบรารีเหล่านี้มีไว้สำหรับฟังก์ชันการทำงานของผลิตภัณฑ์ Edge เท่านั้น และไม่รับประกันว่าไลบรารีจะพร้อมใช้งานตั้งแต่รุ่นสู่รุ่น
- อย่าใช้
io.apigee
หรือcom.apigee
เป็นชื่อแพ็กเกจในไฮไลต์ของ Java ชื่อเหล่านี้สงวนไว้และใช้โดยโมดูล Apigee อื่นๆ
การจัดแพ็กเกจ
วาง JAR ในพร็อกซี API ภายใต้ /resources/java
หากไฮไลต์ของ Java ใช้ไลบรารีของบุคคลที่สามเพิ่มเติมซึ่งจัดแพ็กเกจเป็นไฟล์ JAR อิสระไว้ ให้วางไฟล์ JAR เหล่านั้นในไดเรกทอรี /resources/java
ด้วยเพื่อให้แน่ใจว่าไฟล์ดังกล่าวโหลดอย่างถูกต้องที่รันไทม์
หากคุณใช้ UI การจัดการเพื่อสร้างหรือแก้ไขพร็อกซี ให้เพิ่มทรัพยากรใหม่และระบุไฟล์ JAR ที่เกี่ยวข้องเพิ่มเติม หากมี JAR หลายรายการ ให้เพิ่ม JAR เหล่านั้นเป็นทรัพยากรเพิ่มเติม คุณไม่จำเป็นต้องแก้ไขการกำหนดค่านโยบายเพื่ออ้างอิงไฟล์ JAR เพิ่มเติม ใส่ไว้ใน/resources/java
ก็เพียงพอแล้ว
ดูข้อมูลเกี่ยวกับการอัปโหลด Java JAR ได้ที่ไฟล์ทรัพยากร
ดูตัวอย่างโดยละเอียดที่สาธิตวิธีแพ็กเกจและใช้ไฮไลต์ของ Java โดยใช้ Maven หรือ Javac ได้ที่วิธีสร้างไฮไลต์ Java
Javadoc
Javadoc สําหรับการเขียนโค้ด JavaScript ของ Java มีอยู่ที่นี่ใน GitHub คุณจะต้องโคลนหรือดาวน์โหลด HTML ลงในระบบ จากนั้นเปิดไฟล์ index.html ในเบราว์เซอร์
หมายเหตุการใช้งาน
- นโยบายไฮไลต์ของ Java ไม่มีโค้ดจริง แต่นโยบายการเรียก Java จะอ้างอิง "ทรัพยากร" ของ Java และกำหนดขั้นตอนในโฟลว์ API ที่โค้ด Java ทำงาน คุณจะอัปโหลด Java JAR ผ่านเครื่องมือแก้ไขพร็อกซี UI การจัดการ หรือรวมไว้ในไดเรกทอรี
/resources/java
ในพร็อกซี API ที่คุณพัฒนาในเครื่องก็ได้ - สำหรับการดำเนินการขนาดเล็ก เช่น การเรียก API ไปยังบริการระยะไกล เราขอแนะนำให้ใช้นโยบาย ServiceAPI ดูนโยบายคำขอราคาเสนอบริการ
- สำหรับการโต้ตอบที่ค่อนข้างเรียบง่ายกับเนื้อหาข้อความ เช่น การแก้ไขหรือการแยกส่วนหัว พารามิเตอร์ หรือเนื้อหาข้อความของ HTTP Apigee ขอแนะนำให้ใช้นโยบาย JavaScript
หัวข้อที่เกี่ยวข้อง
- ดูตัวอย่างที่เกี่ยวข้องได้ที่ที่เก็บ java-cookbook