Anda sedang melihat dokumentasi Apigee Edge.
  Buka
     Dokumentasi Apigee X. info
UnsupportedOperationException
Kode error
java.lang.UnsupportedOperationException
Isi respons error
{
   "fault":{
      "faultstring":"java.lang.UnsupportedOperationException",
      "detail":{
         "errorcode":"Internal Server Error"
      }
   }
}
Penyebab
Error ini terjadi jika atribut mapIdentifier ditetapkan ke string kosong dalam kebijakan Operasi Peta Nilai Kunci.
Diagnosis
Periksa semua kebijakan Operasi Peta Nilai Kunci di Proxy API tertentu tempat kegagalan terjadi. Jika ada kebijakan Operasi Peta Nilai Kunci yang menetapkan atribut
mapIdentifiersebagai string kosong, maka itulah penyebab error.Misalnya, kebijakan Operasi Peta Nilai Kunci berikut memiliki
mapIdentifierkosong:<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>
Resolusi
Pastikan atribut mapIdentifier ditetapkan ke peta nilai kunci yang valid dalam kebijakan Operasi Peta Nilai Kunci.
Untuk memperbaiki contoh kebijakan yang ditampilkan di atas, Anda dapat menetapkan mapIdentifier ke peta nilai kunci yang ada 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
Kode error
steps.keyvaluemapoperations.SetVariableFailed
Isi respons error
{
   "fault":{
      "faultstring":"Failed to set variable variable_name in KeyValueMapStepDefinition policy_name",
      "detail":{
         "errorcode":"steps.keyvaluemapoperations.SetVariableFailed"
      }
   }
}
Contoh Pesan Error
{
   "fault":{
      "faultstring":"Failed to set variable myvar in KeyValueMapStepDefinition EncryptedKVM",
      "detail":{
         "errorcode":"steps.keyvaluemapoperations.SetVariableFailed"
      }
   }
}
Penyebab
Error ini terjadi jika Anda mencoba mengambil nilai dari peta nilai kunci terenkripsi
dan tetapkan nilai ke variabel yang namanya tidak memiliki awalan private.. Tujuan
, yang diperlukan untuk tujuan keamanan dasar selama proses debug, akan menyembunyikan
nilai terenkripsi dari Trace proxy API dan sesi debug.
Diagnosis
1.
Mengidentifikasi kebijakan Operasi Peta Nilai Kunci tempat error terjadi dan nama variabel yang nilainya tidak dapat ditetapkan. Anda dapat menemukan kedua item ini di elemen faultstring respons error. Misalnya, dalam faultstring berikut, nama kebijakannya adalah EncryptedKVM dan variabelnya adalah myvar:
  "faultstring":"Failed to set variable myvar in KeyValueMapStepDefinition EncryptedKVM"
1.
Dalam XML kebijakan Operasi Peta Nilai Kunci yang gagal, pastikan nama variabel yang ditentukan dalam atribut assignTo dari elemen <Get> cocok dengan nama variabel yang diidentifikasi dalam string error (langkah #1 di atas). Misalnya, kebijakan Operasi Peta Nilai Kunci berikut menentukan variabel bernama myvar di elemen <Get>, yang cocok dengan yang ada di 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>
Periksa apakah peta nilai kunci yang ditentukan dalam atribut
mapIdentifieradalah KVM terenkripsi. Jika KVM dienkripsi di cakupan lingkungan, Anda dapat memverifikasi bahwa KVM di UI Edge. Atau, jika dibuat pada organisasi atau cakupan apiproxy, Anda harus menggunakan Management API untuk memverifikasi apakah file itu dienkripsi. Lihat juga Mengelola dan menggunakan KVM.Untuk memeriksa apakah KVM cakupan lingkungan dienkripsi di UI Edge:
- Di UI Edge, klik Admin di menu navigasi sebelah kiri.
 - Klik Environments.
 - Klik Key Value Maps.
 - Temukan Peta Nilai Kunci yang ingin Anda gunakan.
 - Klik panah di sebelah kiri nama untuk meluaskan daftar nilai.
 - Peta Nilai Kunci Terenkripsi menampilkan nilai yang disamarkan dengan tanda bintang di UI (*****) seperti yang ditunjukkan dalam Tentang KVM Terenkripsi.
 
Untuk memeriksa apakah KVM yang dicakup di tingkat organisasi, lingkungan, atau apiproxy dienkripsi, gunakan Management API. Jika Anda menggunakan API, contoh respons yang menunjukkan setelan terenkripsi dan tanda bintang untuk nilai, terlihat seperti ini:
{ "encrypted": true, "entry": [ { "name": "foo", "value": "*****" } ], "name": "encrypted" }Jika peta nilai kunci adalah KVM terenkripsi dan nama variabel yang digunakan dalam Atribut
assignTodari elemen<Get>tidak memiliki awalanprivate. Itulah penyebab errornya.Pada contoh kebijakan Operasi Peta Nilai Kunci yang ditampilkan di atas, peta nilai kunci
testEncrypteddienkripsi dan nama variabelmyvartidak memiliki awalanprivate. Oleh karena itu, Anda menerima kode error:steps.keyvaluemapoperations.SetVariableFailed
Resolusi
Pastikan nama variabel memiliki awalan private. dalam atribut assignTo
elemen <Get> dalam kebijakan Operasi Peta Nilai Kunci jika peta nilai kunci
yang digunakan dienkripsi.
Untuk memperbaiki contoh kebijakan Operasi Peta Nilai Kunci yang ditunjukkan di atas, Anda dapat memodifikasi
nilai atribut assignTo hingga 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>