- Myapp.ear
- myapp.ejb
- meus (dãh) ejbs. (Não são importantes neste contexto)
- myapp.war
- src/main/java
- controller
- JobsController.java
- src/main/webapp
- css
- js
- jsp
- jobs
- list.jsp
servletContext.getRealPath("/WEB-INF/classes/")
<container-descriptor>
<show-archived-real-path-enabled>true</show-archived-real-path-enabled>
</container-descriptor>
Segundo problema. O weblogic "explode" o ear em DUAS pastas, algo como:
1) WEBLOGIC_HOME\bea\user_projects\domains\my_domain\servers\AdminServer\tmp\.appmergegen_1265752539359\myapp-ear
2) WEBLOGIC_HOME\bea\user_projects\domains\my_domain\servers\AdminServer\tmp\_WL_user\myapp-ear
As duas pastas possuem os recursos (html, css, js, jsp, etc) do meu projeto web (contido dentro do ear) MAS, com uma ligeira diferença.
Na 2º não existem os ".class" dentro de /WEB-INF/classes enquanto que na 1º eles estão lá.
Adivinha qual caminho o weblogic retorna no servletContext.getRealPath? O segundo lógico.
Quando acesso a uri http://localhost:7001/myapp-web/jobs/list recebo um "Error 404--Not Found".
Acredito que o que está acontecendo é que o VRaptor acaba não carregando meus Controllers pois não encontrou nenhuma classe com a anotação @Resource (na verdade não encontrou classe alguma =/).
Copiando manualmente os .class da pasta 1 pra pasta 2 e "restartando" a aplicação, bingo, a uri responde.
Tenho duas perguntas:
1) Alguém aí já teve sucesso em rodar uma aplicação com VRaptor em cima do weblogic? A saber, a vesão que estou usando é o 11gR1.
2) A api do ServetContext método getRealPath diz o seguinte:
This method returns null if the servlet container is unable to translate the given virtual path to a real path.
Obviamente não tem como garantir que o container irá conseguir traduzir o "virtual path" em "real path", mas levando em conta que "/WEB-INF/classes" é um padrão a ser seguido ele deve conseguir. No meu caso o Weblogic conseguiu mas, não tem nada lá dentro. Isso faz sentido pra alguém? Pra mim não muito mas é assim que ele funciona.
Outras pessoas já tiveram problemas com getRealPath + weblogic. Sei que parece ser uma peculiaridade do weblogic mas, levando em conta que ele está se comportando de acordo com a especificação (eu acho) não existiria uma forma melhor do VRaptor procurar pelas classes?
Se por exemplo meus controllers anotados com @Resource estiverem dentro de um .jar em /WEB-INF/lib essa estratégia com o getRealPath("/WEB-INF/classes") irá encontrá-los? Fiz um teste rápido aqui no weblogic e a resposta foi negativa.
Veja, não é uma crítica, mesmo porque não tenho uma alternativa para propor. Meu objetivo é conseguir rodar uma applicação desenvolvida com VRaptor
no weblogic.
