2009-10-21 10 views
2

J'utilisais ce qui suit dans web.xml pour configurer une servlet pour générer dynamiquement des fichiers PDF.Mappage de fichiers statiques et dynamiques dans Tomcat/Spring?

<servlet-mapping> 
    <servlet-name>pdfServlet</servlet-name> 
    <url-pattern>*.pdf</url-pattern> 
</servlet-mapping> 

Maintenant, je dois aussi servir quelques fichiers PDF statiques. Quelle est la manière la plus propre de configurer cela? Actuellement, je ne diffuse que quatre ou cinq fichiers dynamiques, et je ne m'attends pas à ce que cela augmente, si cela peut vous aider.

Répondre

1

Vous n'avez pas du tout besoin de configurer les fichiers statiques; si Tomcat peut trouver un fichier, il le servira. La configuration n'est nécessaire que lorsque vous souhaitez que Tomcat appelle du code.

+0

ils ont tous été construits dynamiquement par iText. Maintenant, j'ai besoin de Tomcat pour passer aussi des fichiers statiques; cela ne sera-t-il pas attrapé par le mappage de servlet? –

+0

Ah, vous voulez dire des fichiers PDF statiques (c'est-à-dire des fichiers qui * correspondent * à votre règle d'URL). Ok, je ne peux pas vous aider :) –

+0

Yup. Ouais, il semble que la seule solution est de mapper individuellement tous les dynamiques, sans caractères génériques. –

3

Il s'agit d'un problème étonnamment irritant que je n'ai pas encore trouvé une solution satisfaisante. La base du problème, je suis sûr que vous le savez, est que votre fichier web.xml est configuré pour envoyer toute demande de * .pdf à votre servlet Spring. La chose évidente à essayer est que la servlet reconnaisse quelles requêtes sont pour des fichiers PDF statiques, et ensuite redirige la requête en interne vers ce fichier statique, mais comme le fichier se terminera probablement par .pdf, la requête retournera simplement dans le servlet. encore une fois, ad nauseum. La seule solution pour cela que j'ai essayé est d'avoir le servlet lire manuellement le PDF statique du contexte de servlet (en utilisant ServletContext.getResource()), et l'écrire dans le flux de sortie de servlet, en veillant à bien définir les différents en-têtes . Ce n'est pas très gentil. La seule option que je peux envisager est de rendre le url-pattern en web.xml un peu moins large, de sorte que seules les requêtes PDF dynamiques soient routées vers le servlet, et les demandes de fichiers PDF statiques soient acheminées vers le fichier, mais cela nécessiterait une sorte de convention de dénomination pour vos documents, ce qui peut ne pas être une option. J'avais précédemment Tomcat invoquer le code sur toutes les demandes PDF;

+0

Je pourrais essayer une convention de nommage; Le service manuel du fichier statique semble moins propre. Fondamentalement, nous passons d'utiliser iText à l'aide de XDP (XML + PDF) pour produire des documents dynamiques, mais le XDP nécessite un modèle PDF statique être servi. –

Questions connexes