Stai visualizzando la documentazione di Apigee Edge.
Vai alla
documentazione di Apigee X. informazioni
UnsupportedOperationException
Codice di errore
java.lang.UnsupportedOperationException
Corpo della risposta all'errore
{
"fault":{
"faultstring":"java.lang.UnsupportedOperationException",
"detail":{
"errorcode":"Internal Server Error"
}
}
}
Causa
Questo errore si verifica se l'attributo mapIdentifier
è impostato su una stringa vuota nel criterio Operazioni mappa chiave-valore.
Diagnostica
Esamina tutti i criteri relativi alle operazioni di mappatura delle coppie chiave-valore nello specifico proxy API in cui si è verificato l'errore. Se esiste un criterio per le operazioni di mappatura delle coppie chiave-valore in cui l'attributo
mapIdentifier
è impostato come stringa vuota, è questa la causa dell'errore.Ad esempio, il seguente criterio Operazioni mappa chiave-valore ha un valore
mapIdentifier
vuoto:<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>
Risoluzione
Assicurati che l'attributo mapIdentifier
sia impostato su una mappa chiave-valore valida nel criterio Operazioni mappa chiave-valore.
Per correggere il criterio di esempio mostrato sopra, puoi specificare il valore mapIdentifier
in una mappa chiave-valore UserLocationMap
esistente.
<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
Codice di errore
steps.keyvaluemapoperations.SetVariableFailed
Corpo della risposta all'errore
{ "fault":{ "faultstring":"Failed to set variable variable_name in KeyValueMapStepDefinition policy_name", "detail":{ "errorcode":"steps.keyvaluemapoperations.SetVariableFailed" } } }
Esempio di messaggio di errore
{
"fault":{
"faultstring":"Failed to set variable myvar in KeyValueMapStepDefinition EncryptedKVM",
"detail":{
"errorcode":"steps.keyvaluemapoperations.SetVariableFailed"
}
}
}
Causa
Questo errore si verifica se tenti di recuperare un valore da una mappa chiave-valore criptata e imposti il valore su una variabile il cui nome non ha il prefisso private.
. Il prefisso, necessario per motivi di sicurezza di base durante il debug, nasconde i valori criptati dalle sessioni di traccia e debug del proxy API.
Diagnostica
1.
Identifica il criterio relativo alle operazioni di mappatura delle chiavi-valore in cui si è verificato l'errore e il nome della variabile su cui non è possibile impostare il valore. Puoi trovare entrambi gli elementi nell'elemento faultstring
della risposta di errore. Ad esempio, nel seguente faultstring
, il nome del criterio è EncryptedKVM
e la variabile è myvar
:
"faultstring":"Failed to set variable myvar in KeyValueMapStepDefinition EncryptedKVM"
1.
Nel file XML del criterio relativo alle operazioni di mappatura delle coppie chiave-valore, verifica che il nome della variabile specificata nell'attributo assignTo
dell'elemento <Get>
corrisponda al nome della variabile identificato nella stringa di errore (passaggio 1 riportato sopra). Ad esempio, il seguente criterio Operazioni mappa chiave-valore specifica una variabile denominata myvar
nell'elemento <Get>
, che corrisponde al contenuto della colonna 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>
Verifica se la mappa chiave-valore specificata nell'attributo
mapIdentifier
è un KVM criptato. Se il KVM è criptato nell'ambito dell'ambiente, puoi verificare che sia criptato nella UI perimetrale. In caso contrario, se è stata creata nell'ambito dell'organizzazione o apiproxy, devi utilizzare l'API di gestione per verificare se è criptata. Vedi anche Gestire e utilizzare i KVM.Per verificare se un KVM con ambito di ambiente è criptato nella UI perimetrale:
- Nell'interfaccia utente di Edge, fai clic su Amministrazione nel menu di navigazione a sinistra.
- Fai clic su Ambienti.
- Fai clic su Mappe chiave-valore.
- Individua la mappa chiave-valore da utilizzare.
- Fai clic sulla freccia a sinistra del nome per espandere l'elenco dei valori.
- Le mappe chiave-valore criptate mostrano i valori mascherati con asterischi nell'interfaccia utente (*****), come mostrato in Informazioni sulle KVM criptate.
Per verificare se un KVM con ambito a livello di organizzazione, ambiente o apiproxy è criptato, utilizza le API di gestione. Se utilizzi l'API, un esempio di risposta che mostra sia l'impostazione criptata che gli asterischi per il valore ha il seguente aspetto:
{ "encrypted": true, "entry": [ { "name": "foo", "value": "*****" } ], "name": "encrypted" }
Se la mappa chiave-valore è un KVM criptato e il nome della variabile utilizzato nell'attributo
assignTo
dell'elemento<Get>
non ha il prefissoprivate
. Questa è la causa dell'errore.Nell'esempio di criterio relativo alle operazioni di mappatura delle coppie chiave-valore mostrato sopra, la mappa delle coppie chiave-valore
testEncrypted
è criptata e il nome della variabilemyvar
non ha il prefissoprivate
. Riceverai quindi il codice di errore:steps.keyvaluemapoperations.SetVariableFailed
Risoluzione
Assicurati che il nome della variabile abbia il prefisso private.
nell'attributo assignTo
dell'elemento <Get>
nel criterio Key Value Map Operations se la mappa chiave-valore utilizzata è criptata.
Per correggere il criterio di esempio relativo alle operazioni di mappatura delle coppie chiave-valore mostrato sopra, puoi modificare il valore dell'attributo assignTo
in 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>