在我的源代码中,我想以编程方式获取部署我的代码的当前 EAR 的最后修改日期。我正在使用 Oracle WebLogic。我怎么能那样做?
谢谢你的回答
我建议退后一步,看看你要解决的问题,埃里克。
您想知道应用程序的构建时间或您部署的应用程序的特定版本吗?如果是这种情况,最好将一些东西合并到构建过程中来设置它。理想情况下,是用于打包应用程序的特定组件版本的清单。
如果您想知道应用程序是何时由管理员首次部署的,或者是最近一次部署的,那就更棘手了。依靠文件系统来解决这个问题是个坏主意,因为您受制于 WebLogic Server 正在做的任何事情,诚然这有点不透明。
如果您绝对需要这样做,WebLogic Server 的标准暂存行为会将文件的一个版本放在每个服务器实例的特定子目录中,然后很快将其分开。(它是域根目录下的 'servers//stage' 子目录 ($DOMAIN_HOME) $DOMAIN_HOME 是运行时所有服务器进程的当前目录,因此相对路径应该可以正常工作。
这应该为您提供该文件在网络上部署的时间,但您肯定希望通过重新启动服务器实例来测试观察到的行为。
问题在于,它不会为您提供任何您无法通过构建过程或围绕部署过程的 WLST 脚本更优雅地确定的内容。
如果这是最后一次部署应用程序本身(无论版本如何),那么应用程序生命周期事件监听器绝对是最好的方法。不幸的是,没有 MBean 可以为您提供单个应用程序的正常运行时间。
这里有一个关于生命周期监听器的很好的参考:
http://download.oracle.com/docs/cd/E17904_01/web.1111/e13712/app_events.htm#i178290
您可以检查文件属性或查看 EAR 中的 MANIFEST.MF。