Como configurar o DTD do Tiles localmente

Ola,

Estou com uma aplicacao web JSF+Tiles que funciona normalmente. Entretanto, como a aplicacao vai rodar em um ambiente sem acesso a internet, preciso usar a validacao do DTD do Tiles localmente ou mesmo desabilitar ela. Assim, tentei duas coisas:

  1. Usar a DTD local, com /WEB-INF/tiles-def.xml contendo:
<!DOCTYPE tiles-definitions PUBLIC 
   "-//Apache Software Foundation//DTD Tiles Configuration//EN"
   "tiles-config.dtd">

Mas isso dá um erro quando a pagina é acessada, porque o Tomcat tenta localizar esse arquivo em /%TOMCAT_HOME%/bin/tiles-config.dtd, ou seja, no diretorio onde o Tomcat foi inciado.
Tambem tentei o acesso via SYSTEM, como:

<!DOCTYPE tiles-definitions SYSTEM 
    "tiles-config.dtd">

mas o problema é o mesmo.
Outra alternativa foi colocar o caminho completo do tiles-config.dtd, como:

<!DOCTYPE tiles-definitions SYSTEM 
   "file:///C:/tomcat/webapps/minhaApp/WEB-INF/tiles-config.dtd">

Isso até funciona, mas daí meu deployment fica dependente de paths, os quais eu nao posso garantir durante as instalacoes.

  1. Tambem tentei desabilitar a validacao de DTDs no Tomcat, usando no meu arquivo web.xml da minha aplicacao o seguinte:
	<servlet>
		<servlet-name>TilesServet</servlet-name>
		<servlet-class>
			org.apache.struts.tiles.TilesServlet
		</servlet-class>
		<init-param>
			<param-name>definitions-config</param-name>
			<param-value>/WEB-INF/tiles.xml</param-value>
		</init-param>
		<init-param>
		<param-name>definitions-parser-validate</param-name>
			<param-value>false</param-value>
		</init-param>
		<load-on-startup>2</load-on-startup>
	</servlet>

Mas parece que “definitions-parser-validate” nao adianta nada, porque a DTD continua sendo validada, mesmo que eu comente sua declaracao no “tiles-def.xml”.

Alguem tem alguma dica sobre o assunto?

Já tentou remover a entrada do dtd de tiles-defs.xml? Se não me engano isso funciona…

Sim, como comentei acima, isso funciona, mas ocorre um exception no Tomcat…e embora a aplicacao continue funcionando, exceptions nao sao bons…
Queria uma solucao sem exception…mas valeu mesmo assim.

Tente atualizar o ID do dtd para este:

"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"

O ID não deve corresponder ao que existe no jar, por isso que ele só funciona online.

Oi,
Nao adianta atualizar para isso…porque se eu usar SYSTEM, que é acesso local, esse valor nem precisa (ou melhor, nem é suportado)…e se eu usar PUBLIC, o valor que eu tenho (sem o 1.1) funciona sem problemas…mas dai eu preciso um endereco http:// para validacao, o que eu nao tenho nos clientes…
Att.

###DEU CERTO###

Cara, seguinte.

Usei a declaracao com o "1.1" e com o acesso PUBLIC e dai funcionou.

<!DOCTYPE tiles-definitions PUBLIC
   "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
   "tiles-config.dtd">
   
<tiles-definitions>

bla bla bla

Valeu pela dica. Nao pensava que funcionaria.

Att.