quarta-feira, 24 de agosto de 2011

Erro componente jsf 1.1 - Weblogic 11g

Boa noite,

minha intenção é registrar também algumas experiências profissionais. A primeira dela que gostaria de registrar, estou em um trabalho de migração da aplicação que trabalho do Weblogic 9.2 para o Weblogic 11g. A arquitetura da aplicação é composta por JDBC, EJB 2.0 e JSF 1.1 com RichFaces e tomahawk. Existe uma lib proprietária que foi encapsulado alguns componentes jsf. Esta lib apresentava erro de compilação toda vez que era referenciada.

O erro " No tag library could be found with this URI. Possible causes could be that the URI is incorrect, or that there were errors during parsing of the .tld file." acontecia porque a URI definida no tld desta taglib tinha o endereço da seguinte forma:
"http://endereco.com.teste/" e o Weblogic não conseguia resolver este nome. Então encontrei a solução neste link e tudo ficou claro. A URI não deveria terminar em "/" e o resultado deveria ser "http://endereco.com.teste".

Após esta mudança o erro de compilação foi resolvida.

Segue stack completa, espero ter ajudado:

javax.faces.FacesException: weblogic.servlet.jsp.CompilationException: Failed to compile JSP /errorDisplay.jsp
errorDisplay.jsp:7:5: No tag library could be found with this URI. Possible causes could be that the URI is incorrect, or that there were errors during parsing of the .tld file.
<%@ taglib uri="http://sistema.empresa.com/" prefix="p"%>
    ^----^
errorDisplay.jsp:7:5: No tag library could be found with this URI. Possible causes could be that the URI is incorrect, or that there were errors during parsing of the .tld file.
<%@ taglib uri="http://sistema.empresa.com/" prefix="p"%>
    ^----^

    at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:425)
    at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:211)
    at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
    at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216)
    at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
    Truncated. see log file for complete stacktrace


Não sei se faz diferença para vocês, mas no Weblogic 9.2 o container não reclamava se você definisse um novo prefixo na declaração da taglib, o 11g exige que você utilize o mesmo prefixo definido no tld.