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.
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.
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[/quote]
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!
<target name="geracao_jsp_java">
<echo>Geracao dos arquivos .java a partir dos arquivos .jsp</echo>
<taskdef classname="org.apache.jasper.JspC" name="jasper2" >
<classpath id="jspc.classpath">
<pathelement location="${java.home}/lib/tools.jar"/>
<fileset dir="${tomcat.home}/bin">
<include name="*.jar"/>
</fileset>
<fileset dir="${tomcat.home}/lib">
<include name="*.jar"/>
</fileset>
<fileset dir="${appFolder}/WEB-INF/lib">
<include name="*.jar"/>
</fileset>
<dirset dir="${appFolder}/WEB-INF/classes" />
</classpath>
</taskdef>
<jasper2
validateXml="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
-->
<loadfile property="webXmlFragment" srcFile="${appFolder}/WEB-INF/generated_web.xml"/>
<replace file="${appFolder}/WEB-INF/web.xml" token="<!-- [INSERT FRAGMENT HERE] -->" value="${webXmlFragment}"/>
<delete file="${appFolder}/WEB-INF/generated_web.xml" />
</target>