2017-02-28 22 views
0

我的問題是監視打開的文件句柄在Java和並且獨立於(Linux操作系統,視窗等)類型的操作系統監視器打開的文件句柄在Java中 - 獨立於操作系統的

我的應用程序是一個基於Web服務器的應用程序使用tomcat和Java8運行。

對於一個可能的解決方案只有Java語言本身和兩者番石榴阿帕奇百科全書,將被視爲我公司不允許使用任何第三方庫。

如何做到這一點有什麼建議?我已經想繼承的InputStream和注入一些東西到其open()close()方法,但是這是不是真的什麼我認爲「好」的解決方案...

我會是你的幫助非常感謝!

+0

您在打開的文件描述符有趣算什麼?在count的情況下,你可以使用java.lang.management.ManagementFactory.getOperatingSystemMXBean()。getOpenFileDescriptorCount()。這對你足夠嗎? – Ivan

+0

嗯,我已經試過了,但編譯器抱怨找不到'getOpenFileDescriptorCount()'。我在其他地方發現了Linux的solulator,他們將'getOperatingSystemMXB ean()'轉換爲UnixOSMXBean,但是沒有其他操作系統的等價物。 但是,謝謝你的回覆 –

回答

0

你真的不解決方案一樣,似乎是最好的一個,你可以簡單地發出消息,例如通過EventBus(你有它在番石榴),當您打開或關閉文件。您ManagedFileInputStream剛剛打電話enventBus.post(someFilePointer)super.open()super.close()

但也有可能你的應用程序中打開許多其他文件(jar文件,如CSS,圖片,腳本,通過創建tomcat的臨時文件的網絡資源,由JVM創建的臨時文件)。

我認爲這是沒有監視由Java應用程序在Java應用程序中打開的所有文件明智的辦法,也許這就是後話了OS管理。

+0

由於我正在處理'URL.openStream()',這將迫使我重寫'java.net.URL'及其組件的很大一部分。不幸的是,這是在浪費我的時間資源,炸燬了產品的其餘部分......似乎我必須投降,並告訴我的老闆,它不能以可承受的複雜性 –

相關問題