วิธีสร้างไฮไลต์ Java

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

ข้อความเสริมของ Java คืออะไร

Apigee Edge มีนโยบายมากมายที่จะช่วยตอบข้อกำหนดด้านการจัดการ API ทั่วไป เช่น ด้านความปลอดภัย การเปลี่ยนรูปแบบข้อมูล การจัดการการเข้าชม และอื่นๆ

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

สำหรับ Java เวอร์ชันที่สนับสนุน โปรดดูที่ ที่สนับสนุน ซอฟต์แวร์และเวอร์ชันที่รองรับ

ฉันจะใช้รหัส Java ในพร็อกซีได้อย่างไร

นโยบายไฮไลต์ Java ให้คุณเรียกใช้โค้ด Java จากภายในโฟลว์พร็อกซีที่ดำเนินการ Java ของคุณ ต้องติดตั้งใช้งานอินเทอร์เฟซ Java เฉพาะ Edge บางรายการเพื่อให้โค้ดโต้ตอบได้ กับพร็อกซีที่ดำเนินการอยู่ ตัวอย่างเช่น มีเมธอดของ Java สำหรับการรับและตั้งค่าส่วนหัว ข้อความค้นหา พารามิเตอร์ ตัวแปรโฟลว์ และเอนทิตีอื่นๆ ภายในบริบทโฟลว์ปัจจุบันของพร็อกซี

ฉันควรใช้ข้อความไฮไลต์ Java เมื่อใด

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

ก่อนอื่น ให้พิจารณา แนวทางทางเลือก

ก่อนใช้ข้อความไฮไลต์ Java โปรดทราบว่าอาจมีวิธีอื่นที่คุณใช้ได้ แทน เช่น

  • สำหรับการดำเนินการขนาดเล็ก เช่น การเรียก HTTP API ไปยังบริการระยะไกล ให้พิจารณาใช้เมธอด นโยบายคำขอราคาเสนอบริการ ดูนโยบายข้อความไฮไลต์บริการ
  • สำหรับการโต้ตอบกับเนื้อหาข้อความที่ไม่ซับซ้อน เช่น การแก้ไขหรือการดึงข้อมูล คุณสามารถใช้ภาษา JavaScript หรือ Python ได้ โดยใช้ส่วนหัว พารามิเตอร์ หรือเนื้อหาข้อความ

สิ่งที่คุณทำได้ในโค้ด Java

ข้อความเสริมของ Java สนับสนุนการทำงานพื้นฐานเหล่านี้:

  • การตรวจสอบหรือจัดการคำขอหรือข้อความตอบกลับ
  • การรับและตั้งค่าตัวแปรโฟลว์ คุณใช้เมธอดของ Java เพื่อเข้าถึงตัวแปรโฟลว์ Edge ได้ หากต้องการเข้าถึงข้อมูล Key Value Map (KVM) ให้ใช้นโยบาย KVM กำหนดค่า KVM ให้กับตัวแปรโฟลว์ จากนั้นคุณจะเข้าถึงตัวแปรโฟลว์จาก ภายในข้อความไฮไลต์ Java
  • กำลังโทรหาบริการภายนอก
  • การเพิ่มรอยเลื่อน
  • การจัดการข้อความแสดงข้อผิดพลาดและรหัสสถานะ

สิ่งที่ทำใน Java ไม่ได้ รหัส

การเรียกระบบส่วนใหญ่ไม่ได้รับอนุญาต คุณไม่สามารถทำสิ่งต่อไปนี้

  • กำหนดให้ระบบไฟล์ภายในอ่านหรือเขียนได้ ซึ่งหมายความว่าคุณไม่สามารถใช้ แพ็กเกจ Java สำหรับอ่าน/เขียนในระบบไฟล์ภายใน แต่คุณสามารถกำหนดค่าภายนอก การโทรระยะไกล
  • ดูข้อมูลเกี่ยวกับกระบวนการปัจจุบัน รายการกระบวนการ หรือการใช้งาน CPU/หน่วยความจำใน เครื่อง
  • เข้าถึงซอร์สโค้ดใน "expressions-1.0.0.jar" และ "message-flow-1.0.0.jar"

แม้ว่าการโทรดังกล่าวอาจใช้งานได้ แต่การโทรเหล่านี้ไม่ได้รับการสนับสนุนและมีความรับผิดที่จะถูกปิดใช้งาน ตลอดเวลา หลีกเลี่ยงการเรียกใช้ในโค้ดของคุณ

อย่าใช้หรือพึ่งพาไลบรารี Java ที่รวมอยู่ใน Apigee Edge ไลบรารีเหล่านั้นคือ สำหรับฟังก์ชันการทำงานของผลิตภัณฑ์ Edge เท่านั้น และไม่มีการรับประกันว่าจะใช้งานไลบรารีได้ ตั้งแต่เปิดตัวไปจนถึงเปิดตัว หากคุณใช้ไลบรารีดังกล่าว ให้ใช้ในการสาธิตที่ไม่ได้ใช้งานจริง เท่านั้น

ข้อความไฮไลต์สำหรับ Java

ลองมาดูตัวอย่างข้อความเสริมเกี่ยวกับ Java แบบพื้นฐาน ในตัวอย่างนี้ เราจะสร้าง พร็อกซีอย่างง่ายที่มีข้อความเสริม Java ที่แสดงข้อความ "สวัสดีโลก" คำตอบ พร็อกซีสามารถส่งกลับ ของคำตอบที่เป็นไปได้ 2 ข้อ

  • หากคุณป้อน "ชื่อผู้ใช้" ส่วนหัวที่มี "ชื่อ" ค่า พร็อกซีจะแสดงผล:

    วันที่
    Hello, <name>!
    
  • หากคุณไม่ใส่ส่วนหัว พร็อกซีจะแสดงผลดังนี้

    วันที่
    "Hello, Guest!"
    

ดาวน์โหลดโปรเจ็กต์เริ่มต้น

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

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

เขียนโค้ด Java

  1. เปิดไฟล์ต้นฉบับ Java: java-hello/callout/src/main/java/HelloJava.java ไฟล์นี้เป็นเวอร์ชันโครงกระดูกของคลาส Java หลักที่เราจะนำไปใช้ รายการที่นำเข้า ต้องระบุแพ็กเกจสำหรับโค้ดข้อความไฮไลต์ Edge 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;
    
    
    public class HelloJava implements Execution {
    
            public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) {
                    
                    try {
    
                            // Your code here.
                
                return ExecutionResult.SUCCESS;
    
                    } catch (Exception e) {
                            return ExecutionResult.ABORT;
                    }
            }
    
    }
    
  2. แทนที่บรรทัดที่แสดงความคิดเห็น // Your code here ด้วยรหัสต่อไปนี้:
    วันที่
    String name = messageContext.getMessage().getHeader("username");
    
    if (name != null && name.length()>0) {
            messageContext.getMessage().setContent("Hello, " + name + "!");
            messageContext.getMessage().removeHeader("username");
    } else {
            messageContext.getMessage().setContent("Hello, Guest!");
    }
    
  3. บันทึกไฟล์


คอมไพล์โค้ดด้วย Maven

โปรเจ็กต์ได้รับการตั้งค่าเพื่อให้คุณคอมไพล์ด้วย Maven ได้ หากคุณต้องการใช้งาน javacเราจะแสดงตัวอย่างหลังจากตัวอย่าง Maven

  1. ตรวจสอบว่าได้ติดตั้ง Maven แล้ว

    วันที่
    mvn -version
    
  2. เรียกใช้สคริปต์ java-hello/buildsetup.sh สคริปต์นี้จะติดตั้ง ทรัพยากร Dependency ของ JAR ในที่เก็บ Maven ในเครื่อง
  3. cd ไปยังไดเรกทอรี java-hello/callout
  4. ดำเนินการ Maven:

    วันที่
    mvn clean package
    
  5. หากต้องการ ให้ตรวจสอบว่าไฟล์ JAR edge-custom-policy-java-hello.jar เดิมคือ คัดลอกไปยัง java-hello/apiproxy/resources/java แล้ว นี่คือตำแหน่งที่จำเป็นสำหรับ ไฟล์ JAR ที่ต้องการทำให้ใช้งานได้ด้วยพร็อกซี

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

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

  1. CD ถึง api-platform-samples/doc-samples/java-hello
  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/HelloJava.java
    
    การดำเนินการนี้จะสร้าง com/apigeesample/HelloJava.class
  4. สร้างไฟล์ JAR ที่มีคลาสที่คอมไพล์ใน ไดเรกทอรี apiproxy/resources/java นี่คือตำแหน่งที่จำเป็นสำหรับ JAR ที่ต้องการทำให้ใช้งานได้ด้วยพร็อกซี ซึ่งทำได้โดยเรียกใช้คำสั่งต่อไปนี้ ในไดเรกทอรี java-hello (อย่าลืมเครื่องหมายจุดต่อท้าย)

    jar cvf apiproxy/resources/java/edge-custom-policy-java-hello.jar -C com .
    

ทำให้ใช้งานได้และเรียกใช้พร็อกซี

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

  1. CD ถึง api-platform-samples/doc-samples/java-hello
  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-hello -H "username:Will"
    

    ซึ่งแสดงข้อความ "สวัสดี วิลล์!

    คุณสามารถแก้ไขสคริปต์ invoke.sh เพื่อเปลี่ยนชื่อ หรือ การเรียก cURL เพื่อนำส่วนหัวออก คำสั่งจะแสดงข้อความ "สวัสดี ผู้มาเยือน"

เกี่ยวกับพร็อกซี

มาตรวจสอบนโยบายที่ใช้ในพร็อกซีนี้อย่างรวดเร็วกัน ให้ความสำคัญกับตำแหน่งของนโยบาย ในขั้นตอนพร็อกซีและทำไม

นโยบายการมอบหมายข้อความ

นโยบายการมอบหมายข้อความจะแนบอยู่กับขั้นตอนคำขอของ ProxyEndpoint ทั้งนี้ คัดลอกส่วนหัวของชื่อผู้ใช้จากคำขอและกำหนดให้กับการตอบกลับ การดำเนินการนี้ช่วยให้ นโยบายข้อความไฮไลต์ของ Java ซึ่งแนบไปกับขั้นตอนการตอบกลับเพื่อเข้าถึงส่วนหัวของชื่อผู้ใช้ และสร้างเนื้อหาการตอบกลับที่กำหนดเองโดยใช้ค่าของส่วนหัวนั้น

<AssignMessage async="false" continueOnError="false" enabled="true" name="CopyHeader">     
    <DisplayName>CopyHeader</DisplayName>     
    <Copy source="request">         
        <Headers>             
          <Header name="username"/>         
        </Headers>     
    </Copy>     
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>     
    <AssignTo createNew="false" transport="http" type="response"/> 
</AssignMessage>

นโยบายข้อความไฮไลต์ Java

นโยบายข้อความไฮไลต์ Java จะแนบไปกับขั้นตอนการตอบกลับ นั่นเป็นเพราะ โค้ด Java ที่กำหนดเองจะทำการเปลี่ยนแปลงกับส่วนหัวและข้อความการตอบกลับ ClassName ของนโยบาย จะระบุคลาสหลักที่นโยบายจะเรียกใช้ องค์ประกอบ ResourceURL คือองค์ประกอบ ของไฟล์ JAR ที่คุณสร้างและเพิ่มลงในไดเรกทอรี resources/java ของ พร็อกซี

<JavaCallout name="hello-java">         
    <ClassName>com.apigeesample.HelloJava</ClassName>         
    <ResourceURL>java://edge-custom-policy-java-hello.jar</ResourceURL> 
</JavaCallout>

สิ่งที่จำเป็นต้องทราบเกี่ยวกับข้อความไฮไลต์ Java

สิ่งสำคัญที่ควรทราบเกี่ยวกับการใช้ข้อความไฮไลต์ Java มีดังนี้

  • นำเข้าชั้นเรียนจาก com.apigee.flow.execution และ com.apigee.flow.message แพ็กเกจ แพ็กเกจเหล่านี้ต้องรวมอยู่ในไฟล์ JAR ที่จัดแพ็กเกจและทำให้ใช้งานได้ คุณอัปโหลด Java JAR ผ่านพร็อกซี UI การจัดการได้ หรือรวมไว้ในไดเรกทอรี /resources/java ในพร็อกซี API ที่ ที่คุณพัฒนาในระดับท้องถิ่น
  • ใช้อินเทอร์เฟซการดำเนินการ โค้ด Java ที่ทำงานภายในพร็อกซี API ต้อง ดำเนินการ
  • นโยบายการเรียก Java ไม่มีโค้ดจริง แต่นโยบายการเรียก Java จะอ้างอิง "ทรัพยากร" ของ Java ซึ่งคุณต้องทำแพ็กเกจใน JAR
  • ชื่อแพ็กเกจที่ควรหลีกเลี่ยง: อย่าใช้ io.apigee หรือ com.apigee เป็นชื่อแพ็กเกจในข้อความไฮไลต์ Java กิจกรรมเหล่านี้สงวนไว้และใช้โดย โมดูล Apigee อื่นๆ
  • หากข้อความไฮไลต์ Java ใช้ไลบรารีของบุคคลที่สามเพิ่มเติมซึ่งจัดเป็น JAR อิสระ แล้ววางไฟล์ JAR เหล่านั้นในไดเรกทอรี /resources/java และ โปรดตรวจสอบว่าโหลดอย่างถูกต้องขณะรันไทม์
  • หากมี JAR หลายรายการ ให้เพิ่มเป็นแหล่งข้อมูลเพิ่มเติม คุณไม่จำเป็นต้อง แก้ไขการกำหนดค่านโยบายเพื่อดูไฟล์ JAR เพิ่มเติม นำพวกเขาใส่ไว้ /resources/java ก็เพียงพอแล้ว
  • ดูข้อมูลเพิ่มเติมเกี่ยวกับการอัปโหลด Java JAR ได้ที่ไฟล์ทรัพยากร