2009-01-06 54 views
0

我需要一些關於如何最好地解決此問題的想法。如何在JBoss服務器上預覽文件

我有一個運行在JBoss 4.3.3上的JBoss Seam應用程序 這個應用程序的一小部分是基於Open Office模板生成一個html和一個pdf文檔。

生成的文件放在文件系統的/ tmp /裏面。我試過用System.getProperties(「tmp.dir」)和其他一些選項,它們總是返回$ JBOSS_HOME/bin 我想選擇路徑$ JBOSS_HOME/$ DEPLOY/myEAR.ear/myWAR.war/WhateverLocationHere/

但是,我不知道如何以編程方式選擇路徑而不提供絕對路徑,或者設置$ JBOSS_HOME和$ DEPLOY。

Anybody know how I can do this?

第二個問題; 我想輕鬆預覽這些生成的文件。無論是通過JavaScript,或者最簡單的方法。但是,JavaScript無法訪問服務器上的文件系統,所以我無法通過JavaScript打開文件。

Any easy solutions out there?

回答

1

不知道你是如何生成的PDF文件,但如果可能的話,請跳過磁盤IO一起,藏匿PDF內容在byte[],它在servlet沖洗出來給用戶的MIME類型設置爲application/pdf *,它響應客戶端鏈接指定的URL或通過javascript動態設置<div>。無論如何,您可能會記住內存,除了跳過IO之外,當您完成預覽時,您不必擔心刪除tmp文件。

*****我認爲這是正確的。需要查看它。

+0

我做了這樣的事情,而且效果很好。 謝謝 – 2009-01-21 10:12:24

1

不知道我有你想要達到的一個完整的把握,但我給它一個想試試:

我的假設是,你的最終目標是使一些文件(PDF ,HTML)可通過Web應用程序提供給最終用戶。

在這種情況下,爲什麼沒有Apache將這些文件提供給最終用戶,因此您只需要您的JBOSS應用程序就可以知道映射到Apache虛擬主機的目錄的路徑。

基本上,創建一個文件並將其保存爲/var/www/html/myappfiles/tempfile.pdf(您的應用程序知道的文件夾),然後向您的用戶提供http://mydomain.com/myappfiles(Apache虛擬主機)。其餘部分將由Web服務器完成。

您必須設置一個環境變量或系統屬性,以使應用程序知道文件夾所在的位置(本例中爲/ var/www/html/myappfiles /)。

但願我是不是路要走:)

0

我不知道,如果這個工程在JBoss中給出你想要一個WAR歸檔中的路徑,但你可以嘗試使用ServletContext.getRealPath(String)

但是,我個人不希望生成的文件在我部署的應用程序中;相反,我會配置一個外部數據目錄像$JBOSS_HOME/server/default/data/myapp

1
  1. 我同意彼得(喲皮特!)。把目錄放在你的WAR之外,並設置一個環境變量指向這個。閱讀Jacob Orshalick的this post關於如何在Seam中配置環境變量:

  2. 至於預覽PDF,看看Google Docs如何處理預覽PDF - 它將它們顯示爲圖像。用Java來做到這一點,請查看Sun PDF Renderer

0
  • 首先,大多數平臺使用java.io.tmpdir來設置一個臨時目錄。一些servlet容器重新定義這個屬性是它們樹下的東西。你爲什麼關心文件寫入的地方?
  • 其次,我同意Nicholas:在服務器端生成PDF後,您可以生成一個URL,點擊後將該文件發送到瀏覽器。如果您使用MIME類型application/pdf,瀏覽器應該對它做正確的事情。
相關問題