أنت تعرض مستندات Apigee Edge.
انتقل إلى
مستندات Apigee X. معلومات
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 للتأكّد من تشفيرها. راجع أيضًا إدارة KVMs واستخدامها.للتحقّق مما إذا كان قد تم تشفير وحدة تحكّم افتراضية للمؤسسات على مستوى البيئة في واجهة مستخدم Edge:
- في واجهة مستخدم Edge، انقر على المشرف في قائمة التنقّل اليمنى.
- انقر على البيئات.
- انقر على خرائط القيم الرئيسية.
- ابحث عن "خريطة المفاتيح والقيم" التي تريد استخدامها.
- انقر على السهم على يمين الاسم لتوسيع قائمة القيم.
- تعرِض "خرائط قيم المفاتيح المشفّرة" القيم المخفية بعلامات نجمية في واجهة المستخدم (*****) كما هو موضّح في لمحة عن "خرائط قيم المفاتيح المشفّرة".
للتحقّق مما إذا كان قد تم تشفير KVM على مستوى المؤسسة أو البيئة أو مستوى واجهة برمجة التطبيقات (apiproxy)، يمكنك استخدام العنصر Management API: إذا كنت تستخدم واجهة برمجة التطبيقات، ونموذج الرد الذي يعرض الإعداد المشفّر والعلامات النجمية للقيمة يظهر على النحو التالي:
{ "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>