Pergunta

Eu estava usando o seguinte em web.xml para configurar um servlet para gerar dinamicamente PDFs.

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

Agora, eu também tenho que servir alguns arquivos estáticos PDF. Qual é a maneira mais limpa para configurar isso? Atualmente estou servindo apenas quatro ou cinco arquivos dinâmicos, e não esperar que a aumentar, se isso ajuda em tudo.

Foi útil?

Solução

Você não precisa de arquivos estáticos configurar pelo todo; se o Tomcat pode encontrar um arquivo, ele irá servi-lo. A configuração só é necessário quando você quer Tomcat para invocar algum código.

Outras dicas

Este é um problema surpreendentemente irritante que eu ainda tenho que encontrar uma solução satisfatória para.

A base do problema, como eu tenho certeza que você está ciente, é que o seu web.xml é configurado para enviar todos os pedidos de * .pdf para o seu servlet Primavera. A coisa óbvia a tentar é para o servlet de reconhecer que os pedidos são para PDFs estáticos, e em seguida, encaminhar o pedido internamente para esse arquivo estático, mas porque o arquivo provavelmente vai acabar com .pdf, o pedido só vai voltar através do servlet novamente, ad nauseum.

A única solução para este que eu tentei é ter o servlet manualmente ler o PDF estático do contexto do servlet (usando ServletContext.getResource()), e escrevê-lo para o fluxo de saída servlet, certificando-se de definir os diversos cabeçalhos corretamente. Não é muito agradável.

A única opção que posso pensar é fazer o url-pattern em web.xml um pouco menos amplo, de modo que os pedidos PDF somente dinâmicas se encaminhado para o servlet, e pedidos de PDFs estáticos são roteadas para o arquivo, mas isso exigiria algum tipo de convenção de nomenclatura para os seus documentos, que pode não ser uma opção.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top