Está a ver a documentação do Apigee e do Apigee Hybrid.
Ver documentação do
Apigee Edge.
UnsupportedOperationException
Código de erro
java.lang.UnsupportedOperationException
Corpo da resposta de erro
{
"fault":{
"faultstring":"java.lang.UnsupportedOperationException",
"detail":{
"errorcode":"Internal Server Error"
}
}
}
Causa
Este erro ocorre se o atributo mapIdentifier
estiver definido como uma string vazia na política de operações de mapa de valores-chave.
Diagnóstico
Examine todas as políticas de operações do mapa de valores-chave no proxy de API específico onde ocorreu a falha. Se existir alguma política de operações de mapa de chaves-valores em que o atributo
mapIdentifier
esteja definido como uma string vazia, essa é a causa do erro.Por exemplo, a seguinte política de operações de mapa de chave-valor tem um
mapIdentifier
vazio:<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>
Resolução
Certifique-se de que o atributo mapIdentifier
está definido como um mapa de valores-chave válido na Política de Operações de Mapa de Valores-chave.
Para corrigir a política de exemplo apresentada acima, pode especificar o mapIdentifier
para um mapa de chaves-valores existente 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
Código de erro
steps.keyvaluemapoperations.SetVariableFailed
Corpo da resposta de erro
{ "fault":{ "faultstring":"Failed to set variable variable_name in KeyValueMapStepDefinition policy_name", "detail":{ "errorcode":"steps.keyvaluemapoperations.SetVariableFailed" } } }
Exemplo de mensagem de erro
{
"fault":{
"faultstring":"Failed to set variable myvar in KeyValueMapStepDefinition EncryptedKVM",
"detail":{
"errorcode":"steps.keyvaluemapoperations.SetVariableFailed"
}
}
}
Causa
Este erro ocorre se tentar obter um valor de um mapa de valores-chave encriptado e definir o valor para uma variável cujo nome não tenha o prefixo private.
. O prefixo, que é necessário para fins de segurança básicos durante a depuração, oculta os valores encriptados das sessões de depuração e rastreio do proxy de API.
Diagnóstico
1.
Identifique a política de operações do mapa de valores-chave onde ocorreu o erro e o nome da variável à qual não é possível definir o valor. Pode encontrar ambos os itens no elemento faultstring
da resposta de erro. Por exemplo, no seguinte faultstring
, o nome da política é EncryptedKVM
e a variável é myvar
:
"faultstring":"Failed to set variable myvar in KeyValueMapStepDefinition EncryptedKVM"
1.
No XML da política de operações de mapa de chave-valor com falha, verifique se o nome da variável especificado no atributo assignTo
do elemento <Get>
corresponde ao nome da variável identificado na string de falha (passo n.º 1 acima). Por exemplo, a seguinte política de operações de mapeamento de chave-valor especifica uma variável denominada myvar
no elemento <Get>
, que corresponde ao que está em 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>
Verifique se o mapa de chaves-valores especificado no atributo
mapIdentifier
é um KVM encriptado.Para verificar se um KVM está encriptado na IU do Apigee:
- Na IU do Apigee, clique em Administração no menu de navegação do lado esquerdo.
- Clique em Ambientes.
- Clique em Mapeamentos de chaves-valores.
- Encontre o mapa de valores-chave que quer usar.
- Clique na seta à esquerda do nome para expandir a lista de valores.
- Os mapas de chaves-valores encriptados apresentam valores ocultados com asteriscos na IU (*****) conforme mostrado no artigo Acerca dos KVMs encriptados.
Se o mapa de valores-chave for um KVM encriptado e o nome da variável usado no atributo
assignTo
do elemento<Get>
não tiver o prefixoprivate
. Então, essa é a causa do erro.Na política de operações de mapa de chave-valor de exemplo apresentada acima, o mapa de chave-valor
testEncrypted
está encriptado e o nome da variávelmyvar
não tem o prefixoprivate
. Por isso, recebe o código de erro:steps.keyvaluemapoperations.SetVariableFailed
Resolução
Certifique-se de que o nome da variável tem o prefixo private.
no atributo assignTo
do elemento <Get>
na política de operações de mapa de valores-chave se o mapa de valores-chave usado estiver encriptado.
Para corrigir a política de operações de mapa de chaves-valores de exemplo apresentada acima, pode modificar o valor do atributo assignTo
para 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>