Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
UnsupportedOperationException
Codice di errore
java.lang.UnsupportedOperationException
Corpo della risposta di 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 di mappatura chiave-valore.
Diagnosi
Esamina tutte le norme relative alle operazioni della mappa chiave-valore nel proxy API specifico in cui si è verificato l'errore. Se esiste un criterio Operazioni mappa chiave-valore in cui l'attributo
mapIdentifierè impostato come stringa vuota, questa è la causa dell'errore.Ad esempio, la seguente policy Key Value Map Operations ha un
mapIdentifiervuoto:<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>environment</Scope> </KeyValueMapOperations>
Risoluzione
Assicurati che l'attributo mapIdentifier sia impostato su una mappa chiave-valore valida nel criterio Operazioni mappa chiave-valore.
Per correggere la policy di esempio mostrata sopra, puoi specificare mapIdentifier in una mappa chiave-valore esistente 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>environment</Scope>
</KeyValueMapOperations>
SetVariableFailed
Codice di errore
steps.keyvaluemapoperations.SetVariableFailed
Corpo della risposta di 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 di impostare il valore su una variabile il cui nome non ha il prefisso private.. Il prefisso, necessario per scopi di sicurezza di base durante il debug, nasconde i valori criptati dalle sessioni di Trace e debug del proxy API.
Diagnosi
1.
Identifica il criterio Operazioni di mappatura chiave-valore in cui si è verificato l'errore e il nome della variabile a cui non è possibile impostare il valore. Puoi trovare entrambi questi elementi nell'elemento faultstring della risposta di errore. Ad esempio, nel seguente faultstring, il nome della policy è EncryptedKVM e la variabile è myvar:
"faultstring":"Failed to set variable myvar in KeyValueMapStepDefinition EncryptedKVM"
1.
Nel file XML della policy Key Value Map Operations non riuscita, 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 sopra). Ad esempio, la seguente norma relativa alle operazioni di mappatura chiave-valore specifica una variabile denominata myvar nell'elemento <Get>, che corrisponde a quanto riportato in 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>
Controlla se la mappa chiave/valore specificata nell'attributo
mapIdentifierè una KVM criptata.Per verificare se un KVM è criptato nella UI di Apigee:
- Nell'interfaccia utente Apigee, fai clic su Admin nel menu di navigazione a sinistra.
- Fai clic su Ambientazioni.
- Fai clic su Mappe chiave-valore.
- Trova la mappa chiave-valore che vuoi utilizzare.
- Fai clic sulla freccia a sinistra del nome per espandere l'elenco dei valori.
- Le mappe chiave-valore criptate mostrano valori mascherati con asterischi nella UI (*****) come mostrato in Informazioni sulle mappe chiave-valore criptate.
Se la mappa chiave-valore è un KVM criptato e il nome della variabile utilizzato nell'attributo
assignTodell'elemento<Get>non ha il prefissoprivate. In questo caso, la causa dell'errore è proprio questa.Nell'esempio di norma Operazioni mappa di coppie chiave-valore mostrato sopra, la mappa di coppie chiave-valore
testEncryptedè criptata e il nome della variabilemyvarnon ha il prefissoprivate. Pertanto, ricevi 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 Operazioni mappa di coppie chiave-valore se la mappa di coppie chiave-valore
utilizzata è criptata.
Per correggere la policy Key Value Map Operations di esempio mostrata 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>