أنت تطّلع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
UnsupportedOperationException
رمز الخطأ
java.lang.UnsupportedOperationException
نص الاستجابة للخطأ
{
"fault":{
"faultstring":"java.lang.UnsupportedOperationException",
"detail":{
"errorcode":"Internal Server Error"
}
}
}
السبب
يحدث هذا الخطأ إذا تم ضبط سمة mapIdentifier
على سلسلة فارغة في سياسة "عمليات ربط المفاتيح بالقيم".
التشخيص
راجِع جميع سياسات عمليات ربط المفاتيح بالقيم في وكيل واجهة برمجة التطبيقات المحدّد الذي حدث فيه العُطل. في حال كانت هناك أي سياسة "عمليات ربط القيم الأساسية" تم فيها ضبط السمة
mapIdentifier
كسلسلة فارغة، هذا هو سبب الخطأ.على سبيل المثال، تحتوي سياسة "عمليات تعيين قيم المفاتيح" التالية على
mapIdentifier
فارغ:<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="StoreKvm" mapIdentifier=""> <DisplayName>StoreKvm</DisplayName> <Properties/> <ExclusiveCache>false</ExclusiveCache> <ExpiryTimeInSecs>300</ExpiryTimeInSecs> <Put override="true"> <Key> <Parameter ref="request.queryparam.key"/> </Key> <Value ref="request.queryparam.value"/> </Put> <Scope>apiproxy</Scope> </KeyValueMapOperations>
الدقة
تأكَّد من ضبط السمة mapIdentifier
على خريطة قيم مفاتيح صالحة في سياسة عمليات خريطة القيم المفاتيح.
لتصحيح نموذج السياسة الموضّح أعلاه، يمكنك تحديد mapIdentifier
لربطها بجدول قيم مفاتيح حالي UserLocationMap
.
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="StoreKvm" mapIdentifier="UserLocationMap">
<DisplayName>StoreKvm</DisplayName>
<Properties/>
<ExclusiveCache>false</ExclusiveCache>
<ExpiryTimeInSecs>300</ExpiryTimeInSecs>
<Put override="true">
<Key>
<Parameter ref="request.queryparam.key"/>
</Key>
<Value ref="request.queryparam.value"/>
</Put>
<Scope>apiproxy</Scope>
</KeyValueMapOperations>
SetVariableFailed
رمز الخطأ
steps.keyvaluemapoperations.SetVariableFailed
نص استجابة الخطأ
{ "fault":{ "faultstring":"Failed to set variable variable_name in KeyValueMapStepDefinition policy_name", "detail":{ "errorcode":"steps.keyvaluemapoperations.SetVariableFailed" } } }
مثال على رسالة الخطأ
{
"fault":{
"faultstring":"Failed to set variable myvar in KeyValueMapStepDefinition EncryptedKVM",
"detail":{
"errorcode":"steps.keyvaluemapoperations.SetVariableFailed"
}
}
}
السبب
يحدث هذا الخطأ إذا حاولت استرداد قيمة من خريطة قيمة مفتاح مشفّرة وضبطت القيمة على متغيّر لا يحتوي اسمه على البادئة private.
. إنّ البادئة
، وهي مطلوبة لأغراض الأمان الأساسية أثناء تصحيح الأخطاء، تخفي القيمة
المشفَّرة من جلسات تتبُّع وإصلاح الأخطاء في الوكيل لواجهة برمجة التطبيقات.
التشخيص
1.
حدِّد سياسة عمليات ربط القيم الرئيسية التي حدث فيها الخطأ واسم المتغيّر الذي لا يمكن ضبط القيمة عليه. يمكنك العثور على كلا العنصرَين في عنصر faultstring
من استجابة الخطأ. على سبيل المثال، في العنصر faultstring
التالي، اسم السياسة هو EncryptedKVM
والمتغيّر هو myvar
:
"faultstring":"Failed to set variable myvar in KeyValueMapStepDefinition EncryptedKVM"
1.
في ملف XML الخاص بسياسة عمليات ربط القيم بالمفاتيح التي تعذّر تنفيذها، تأكَّد من أنّ اسم المتغيّر المحدّد في سمة assignTo
للعنصر <Get>
يتطابق مع اسم المتغيّر المحدّد في سلسلة الخطأ (الخطوة 1 أعلاه). على سبيل المثال، تحدّد سياسة عمليات تعيين القيم إلى المفاتيح التالية متغيّرًا باسم myvar
في عنصر <Get>
، والذي يتطابق مع العنصر faultstring
:
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Key-Value-Map-Operations-1" mapIdentifier="testEncrypted">
<DisplayName>KeyValueMapOperations-1</DisplayName>
<Properties/>
<ExclusiveCache>false</ExclusiveCache>
<ExpiryTimeInSecs>300</ExpiryTimeInSecs>
<Get assignTo="myvar" index="1">
<Key>
<Parameter>foo</Parameter>
</Key>
</Get>
<Scope>environment</Scope>
</KeyValueMapOperations>
تحقَّق ممّا إذا كانت خريطة قيم المفاتيح المحدّدة في سمة
mapIdentifier
هي مفتاح تشفير KVM. إذا تم تشفير KVM على مستوى نطاق البيئة، يمكنك التحقّق من تشفيره في واجهة مستخدم Edge. بخلاف ذلك، إذا تم إنشاؤه على مستوى المؤسسة أو نطاق apiproxy، عليك استخدام Management API للتحقّق مما إذا كان مشفَّرًا. يُرجى الاطّلاع أيضًا على إدارة وحدات التحكّم في واجهة المستخدم (KVM) واستخدامها.للتحقّق مما إذا كان قد تم تشفير وحدة تحكّم افتراضية للمؤسسات على مستوى البيئة في واجهة مستخدم Edge:
- في واجهة مستخدم Edge، انقر على المشرف في قائمة التنقّل اليمنى.
- انقر على البيئات.
- انقر على خرائط القيم الرئيسية.
- ابحث عن "خريطة المفاتيح والقيم" التي تريد استخدامها.
- انقر على السهم على يمين الاسم لتوسيع قائمة القيم.
- تعرِض "خرائط قيم المفاتيح المشفّرة" القيم المخفية بعلامات نجمية في واجهة المستخدم (*****) كما هو موضّح في لمحة عن "خرائط قيم المفاتيح المشفّرة".
للتحقّق مما إذا كان خادم KVM مشفَّرًا على مستوى المؤسسة أو البيئة أو apiproxy، استخدِم Management APIs. في حال استخدام واجهة برمجة التطبيقات، سيظهر نموذج الاستجابة الذي يعرض كلّ من الإعداد المشفَّر والعلامات النجمية للقيمة على النحو التالي:
{ "encrypted": true, "entry": [ { "name": "foo", "value": "*****" } ], "name": "encrypted" }
إذا كانت خريطة قيم المفاتيح هي مفتاح تشفير مرئي (KVM) مشفَّر ولم يكن لاسم المتغيّر المستخدَم في سمة
assignTo
للعنصر<Get>
البادئةprivate
. هذا هو سبب الخطأ.في مثال سياسة عمليات خريطة القيمة الرئيسية الموضّحة أعلاه، تم تشفير خريطة القيمة الرئيسية
testEncrypted
ولا يحتوي اسم المتغيّرmyvar
على البادئةprivate
. وبالتالي، يظهر لك رمز الخطأ التالي:steps.keyvaluemapoperations.SetVariableFailed
الدقة
تأكَّد من أنّ اسم المتغيّر يحتوي على البادئة private.
في سمة assignTo
لعنصر <Get>
في سياسة "عمليات خريطة القيمة الرئيسية" إذا كانت خريطة القيمة الرئيسية
المستخدَمة مشفّرة.
لتصحيح مثال "سياسة عمليات ربط القيم الأساسية" الموضّحة أعلاه، يمكنك تعديل قيمة السمة assignTo
إلى private.myvar
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Key-Value-Map-Operations-1" mapIdentifier="testEncrypted">
<DisplayName>KeyValueMapOperations-1</DisplayName>
<Properties/>
<ExclusiveCache>false</ExclusiveCache>
<ExpiryTimeInSecs>300</ExpiryTimeInSecs>
<Get assignTo="private.myvar" index="1">
<Key>
<Parameter>foo</Parameter>
</Key>
</Get>
<Scope>environment</Scope>
</KeyValueMapOperations>