يتم الآن عرض مستندات 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 للتحقّق مما إذا كان مشفَّرًا أم لا. راجِع أيضًا إدارة آلات KVM واستخدامها.للتحقق مما إذا كان KVM نطاق البيئة مشفَّرًا في واجهة مستخدم Edge:
- في واجهة مستخدم Edge، انقر على المشرف في قائمة التنقّل اليمنى.
- انقر على البيئات.
- انقر على خرائط القيم الرئيسية.
- ابحث عن "خريطة القيم الرئيسية" التي تريد استخدامها.
- انقر على السهم على يمين الاسم لتوسيع قائمة القيم.
- تعرض "خرائط القيم الرئيسية" المشفّرة القيم المغطاة بعلامات نجمية في واجهة المستخدم (*****) كما هو موضّح في القسم لمحة عن آلات KVM المشفّرة.
للتحقّق مما إذا كان آلة متجه الدعم (KVM) على مستوى المؤسسة أو البيئة أو خادم apiproxy، والتي تم تشفيرها مشفّرة، يمكنك استخدام واجهات برمجة تطبيقات الإدارة. إذا كنت تستخدم واجهة برمجة التطبيقات، فإن نموذج الرد الذي يعرض كلاً من الإعداد المشفَّر والعلامات النجمية للقيمة سيبدو على النحو التالي:
{ "encrypted": true, "entry": [ { "name": "foo", "value": "*****" } ], "name": "encrypted" }
إذا كانت خريطة قيمة المفتاح عبارة عن خوارزمية KVM مشفّرة ولا يمكن استخدام البادئة
private
في اسم المتغيّر المستخدَم في السمةassignTo
للعنصر<Get>
. بالتالي يكون هذا هو سبب الخطأ.في مثال سياسة عمليات ربط القيم الرئيسية الموضّحة أعلاه، يتم تشفير خريطة قيمة المفتاح
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>