如何从 Java EE 应用程序外部化 PDF?

Posted

技术标签:

【中文标题】如何从 Java EE 应用程序外部化 PDF?【英文标题】:How can I externalize a PDF from a Java EE application? 【发布时间】:2012-12-31 12:18:24 【问题描述】:

我有一个 Java EE 应用程序,在 WebLogic 10.3.5 和 Java 6 下运行。 我曾经有一个 pdf 帮助文件,嵌入在我的 war 文件中,但我需要从那里提取它并将它放在一个外部目录中(它可以在我的同一个 WebLogic 域目录中)。

我试图把它放在我的 WebLogic 域中,然后 它,但似乎浏览器有限制,出于安全原因,不允许使用 href 或 javascript 下载本地文件。

这曾经只适用于保存在我的计算机上的静态 html 文件,但 HTML 页面部署在服务器上,这似乎是不可能的。

知道如何将我的 help.pdf 文件从我的 war 文件中外部化吗?

【问题讨论】:

【参考方案1】:

@limc 是对的

你应该把这个静态文件放在 Weblogic 之外,作为一个 Apache Web 服务器上的文件

但是,在 Weblogic 中,有一个虚拟目录映射功能,它允许您将 weblogic 域之外的文件夹声明为任何静态内容的内容存储。

http://docs.oracle.com/cd/E11035_01/wls100/webapp/weblogic_xml.html#wp1039396

此条目位于 WEB-INF/weblogic.xml 中

<virtual-directory-mapping>      
<local-path>c:/usr/mypdfs</local-path>      
<url-pattern>/pdf/*</url-pattern>      
</virtual-directory-mapping>

【讨论】:

谢谢,但不幸的是,这确实是静态的;更新帮助文件时需要重新启动域。但这总比没有好。【参考方案2】:

虽然一些应用服务器允许 Java EE 应用程序引用 Web 容器外的文件,但实际上,您的 Web 应用程序不应该对 Web 容器外的任何内容有任何了解,正如您所提到的,它确实是一个巨大的安全隐患。

根据您尝试使用此 PDF 文件完成的工作,如果您只想在网络上公开此文件,请按照 @duffmo 所说的操作,它会正常工作。如果您希望灵活地频繁修改此 PDF 文件而无需一次又一次地重新创建 war 文件,您可能需要考虑将此 PDF 文件托管在某些 HTTP Web 服务器(Apache2、IIS 等)中,现在您从您的 Web 引用该链接应用程序。

【讨论】:

【参考方案3】:

您需要将它放在您的网络上下文的根目录,与 HTML 页面完全相同的位置。您的网络服务器将能够在那里找到它。

【讨论】:

以上是关于如何从 Java EE 应用程序外部化 PDF?的主要内容,如果未能解决你的问题,请参考以下文章

开发基于 Java EE 的 Web 应用程序时如何提高生产力

将JMS消息从Java EE应用程序发送到Java SE应用程序

在 J2EE 中外部化查询的推荐实践(特定接缝)

如何将 ResponseBody(在我的情况下为 PDF)写入外部存储? java.lang.IllegalStateException 的问题:已关闭

在 JAVA ee 中使用 JWT 保护 REST 服务

在 Java EE Maven 项目中将数据库连接设置提取到外部文件的最佳方法