Uma questão… preciso empacotar um componente de segurança que será importado por toda e qualquer aplicação Java a ser desenvolvida aqui. Este componente deverá contemplar, além dos Filters que verificarão a autenticação, as páginas de Login e o menu padrão da aplicação (aqui, nenhuma aplicação tem menu, o administrador cadastra os links para as páginas “top” da aplicação em uma tabela e este menu padrão lê a tabela e monta o menu).
No caso do Filter, se eu colocar dentro de um JAR e distribuir, o cara só precisará configurar no Web.xml dele a referencia a esse filter. Eu queria fazer algo semelhante com as páginas. Hoje, ele tem que pegar o fonte do JSP e adicionar diretamente ao WEB-INF da aplicação dele, junto com as páginas específicas da aplicação. Tem algum jeito de eu, por exemplo, mandar os JSP dentro de um JAR, ou WAR, de maneira que o cara simplesmente referencie estes JSP no WELCOME-FILE-LIST (Web.xml) dele e nao consiga nem ver o código-fonte?
Localizar os .class gerados pela compilação dos .jsps; (são classes que tipicamente ficam no pacote org.apache.jsp.WEB_002dINF.jsp);
Modificar web.xml de modo que as referências a essas páginas JSP em particular sejam feitas para os .class gerados. Essas referências devem ser feitas como se essas classes referenciassem servlets.
Isso dá um bocadinho de trabalho.
S
souzatg
Valeu pela resposta!
Realmente parece meio trabalhoso. Acho até que ficaria melhor se conseguíssemos transformar os caras em servlets ao invés de JSP né… o problema é que numa das telas vamos usar JSF, e aí nao tem como fugir dessa solução… De qualquer jeito já foi de grande ajuda.
Abraços!
Thiago
mmilanez
souzatg:
Valeu pela resposta!
Realmente parece meio trabalhoso. Acho até que ficaria melhor se conseguíssemos transformar os caras em servlets ao invés de JSP né… o problema é que numa das telas vamos usar JSF, e aí nao tem como fugir dessa solução… De qualquer jeito já foi de grande ajuda.
Abraços!
Thiago
Você pode fazer isto sim, basta utilizar o script ANT abaixo que todos os seus JSPs são compilados, tranformando-se em servlets. O script abaixo inclusive altera o seu arquivo web.xml automaticamente. Quanto ao trabalho de adicionar parametros para cada página, isto continuará.
Não esqueça de identificar as variáveis ANT necessárias abaixo…
Falows!
<targetname="geracao_jsp_java"><echo>Geracaodosarquivos.javaapartirdosarquivos.jsp</echo><taskdefclassname="org.apache.jasper.JspC"name="jasper2"><classpathid="jspc.classpath"><pathelementlocation="${java.home}/lib/tools.jar"/><filesetdir="${tomcat.home}/bin"><includename="*.jar"/></fileset><filesetdir="${tomcat.home}/lib"><includename="*.jar"/></fileset><filesetdir="${appFolder}/WEB-INF/lib"><includename="*.jar"/></fileset><dirsetdir="${appFolder}/WEB-INF/classes"/></classpath></taskdef><jasper2validateXml="false"uriroot="${appFolder}"webXmlFragment="${appFolder}/WEB-INF/generated_web.xml"outputDir="${appFolder}/WEB-INF/src"/><!-- abaixo o merge dos arquivos web.xml. note que deve haver a frase [INSERT FRAGMENT HERE] entre comentarios no seu arquivo web.xml original, logo apos a ultima declaracao de servlet-class (antes do primeiro servlet-mapping) para isso funcionar --><loadfileproperty="webXmlFragment"srcFile="${appFolder}/WEB-INF/generated_web.xml"/><replacefile="${appFolder}/WEB-INF/web.xml"token="<!-- [INSERT FRAGMENT HERE] -->"value="${webXmlFragment}"/><deletefile="${appFolder}/WEB-INF/generated_web.xml"/></target>