ข้ามไปยังเนื้อหาหลัก

การเชื่อมโยงสัญญาณ Java

ไลบรารี Glasswall ใช้การจัดการสัญญาณเพื่อป้องกันไม่ให้เกิดการแครช แต่สิ่งนี้อาจรบกวน JVM เมื่อเรียกใช้ Glasswall จาก Java เพื่อให้ทำงานได้อย่างถูกต้อง จำเป็นต้องตั้งค่า signal chaining เพื่อป้องกันไม่ให้ข้อผิดพลาดใน Glasswall แพร่กระจายไปยัง JVM ระหว่างการตั้งค่า คุณจะต้องทราบตำแหน่งของไลบรารี libjsig.so ตัวอย่างตำแหน่งที่มักพบได้บ่อยมีดังนี้:

  • /usr/lib/jvm/jre/lib/libjsig.so
  • /usr/lib/jvm/jre/lib/amd64/libjsig.so
  • /usr/lib/jvm/java/lib/libjsig.so

ตำแหน่งนี้จะแตกต่างกันไปตามการกำหนดค่าระบบของคุณและตำแหน่งที่ติดตั้ง Java ในตัวอย่างของเรา ใช้พาธ /usr/lib/jvm/java/lib/libjsig.so.

Signal chaining โดยไม่ต้องตั้งค่า

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

Release 16.3 และก่อนหน้า

สำหรับ release 16.3 และก่อนหน้า คุณจะต้องตั้งค่าตัวแปรสภาพแวดล้อม LD_PRELOAD ให้ชี้ไปยังตำแหน่งของไลบรารี libjsig.so ของคุณ ข้อมูลเพิ่มเติมดูได้ที่ Signal Chaining.

ตัวอย่างของ LD_PRELOAD อาจมีลักษณะดังนี้ export LD_PRELOAD=/usr/lib/jvm/java/lib/libjsig.so หรือ ENV LD_PRELOAD=/usr/lib/jvm/java/lib/libjsig.so ในไฟล์ Docker ของคุณ ทั้งนี้ขึ้นอยู่กับพาธจริงของไลบรารี libjsig.so.

Release 16.4 และใหม่กว่า

สำหรับ release 16.4 และใหม่กว่า Java wrapper สำหรับไลบรารี Editor มีการพึ่งพาโดยตรงกับไลบรารี libjsig ซึ่งต้องมีการตั้งค่าเล็กน้อยเพื่อให้แน่ใจว่า linker สามารถค้นหาไลบรารีและแก้ไข dependency ได้ พาธจะเปลี่ยนไปตามตำแหน่งของไลบรารี ตัวอย่างการตั้งค่าบางส่วนมีเอกสารไว้ด้านล่าง:

สามารถสร้าง symbolic link ได้ทั้งใน /usr/lib หรือ /usr/lib64 ขึ้นอยู่กับระบบของคุณ เพื่อให้ชี้ไปยังไลบรารี libjsig.

ตัวอย่างเช่น เรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัลด้วยสิทธิ์ผู้ดูแลระบบ:

ln -s -T /usr/lib/jvm/java/lib/libjsig.so /usr/lib64/libjsig.so
ldconfig

ln จะสร้าง symbolic link และ ldconfig จะอัปเดต library cache เพื่อให้สามารถ resolve dependency ได้

ตัวอย่าง 2 - การใช้ตัวแปรสภาพแวดล้อม LD_LIBRARY_PATH

สามารถตั้งค่าตัวแปรสภาพแวดล้อม LD_LIBRARY_PATH ให้ชี้ไปยังไดเรกทอรีที่มีไลบรารี libjsig ได้

ตัวอย่างเช่น การตั้งค่าอาจมีลักษณะดังนี้ export LD_LIBRARY_PATH=/usr/lib/jvm/java/lib หรือ ENV LD_LIBRARY_PATH=/usr/lib/jvm/java/lib ในไฟล์ Docker ของคุณ

จากนั้นไลบรารีทั้งหมดภายในไดเรกทอรีจะพร้อมใช้งานสำหรับ linker

ตัวอย่าง 3 - การกำหนดค่าใหม่ใน /etc/ld.so.conf.d/

สามารถสร้างการกำหนดค่าใหม่ใน /etc/ld.so.conf.d ซึ่งจะมีไดเรกทอรีของไลบรารี libjsig อยู่ภายใน

ตัวอย่างเช่น เรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัลด้วยสิทธิ์ผู้ดูแลระบบ:

echo "/usr/lib/jvm/java/lib/" | tee -a /etc/ld.so.conf.d/jvm.conf
ldconfig

คำสั่งแรกจะสร้างไฟล์การกำหนดค่าที่มีเนื้อหาเป็น /usr/lib/jvm/java/lib/ เมื่อมีการเรียกใช้คำสั่ง ldconfig library cache จะถูกอัปเดตให้รวมไลบรารีทั้งหมดในไดเรกทอรีที่ระบุไว้ในไฟล์ config