Mapeamento do controlador de graals padrão não resolvendo corretamente
-
21-09-2019 - |
Pergunta
Este tem me deixando louco hoje. Desde que a atualização para o Grails 1.2 e WebLogic 10.3 O mapeamento de raiz padrão para "/" parou de funcionar. Aqui está o que eu tenho ...
Eu tenho este mapeamento de URL:
"/"(controller:"IGive", action:"index" )
Eu tenho um controlador chamado IgiveController com um fechamento de índice
def index = {
render "foo"
}
Quando vou ao meu aplicativo em execução no tomcat incorporado e no cais com http: // localhost: 8080/myContext/ Eu recebo a propriedade "foo" devolvida. Mas quando construo uma guerra e implanto para o WebLogic 10.3, recebo um 404.
Eu rebaixei para o Grails 1.1.2 e ainda não funcionou no WebLogic 10.3, mas o erro foi mais descritivo
Could not open ServletContext resource [/WEB-INF/grails-app/views/index.gsp]
Parece que está ignorando completamente meu mapeamento de URL para "/", mas outros mapeamentos de URL que são mais profundos estão funcionando. Alguma pista ??
Solução
Eu acho que isso está mais relacionado ao WebLogic - estou vendo o mesmo no WebLogic 9.2 - mas não no tomcat ou no cais. Não atinge meu URLMapping:
"/"(controller: 'home', action: 'index')
Eu acho que o WebLogic está sendo inteligente e converte / -> index.gsp, que depois volta como um 404.
Há uma solução alternativa um pouco feia - basta adicionar um mapeamento assim:
"/index.gsp"(controller: 'home', action: 'index')
E isso parece fazer o truque. Alguém tem uma maneira melhor de consertar isso ???
Outras dicas
Pode estar relacionado a um bug de Grails 1.2. Ver Grails-5609 e isto fio no fórum de Grails. É corrigido em 1.2.1. Parece que o 1.2 introduziu alguns bugs de regressão com Urlmappings ...