2017-02-28 33 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'及其组件的很大一部分。不幸的是,这是在浪费我的时间资源,炸毁了产品的其余部分......似乎我必须投降,并告诉我的老板,它不能以可承受的复杂性 –

相关问题