如何从 Jboss EAP 6.4 中部署的所有战争的 manifest.mf 文件中获取实现版本详细信息

Posted

技术标签:

【中文标题】如何从 Jboss EAP 6.4 中部署的所有战争的 manifest.mf 文件中获取实现版本详细信息【英文标题】:How to get implementation version details from manifest.mf file from all the war deployed in Jboss EAP 6.4 【发布时间】:2018-12-13 01:04:13 【问题描述】:

我们在 Jboss Eap 6.4 服务器中部署了许多 war 应用程序。War 文件是使用 Maven 构建的,并热部署在 Jboss EAP 服务器中。 war 文件的名称只包含工件 id,不包含应用程序的实现版本,由于产品中的一些其他问题,我们删除了 war 文件名称中的版本。版本相关的详细信息存在于 war 中manifest.mf 文件中的文件。

我们如何获取服务器中部署的war文件的版本。

能否请您告诉我获取实现版本详细信息的可能选项。

【问题讨论】:

【参考方案1】:

您可以在战争中使用一段 java 代码为您执行此操作,该代码在first hit of the context-root 期间执行。 应该这样做:


public String getVersionNameFromManifest() throws IOException 
    InputStream manifestStream = getClass().getClassLoader().getResourceAsStream("META-INF/MANIFEST.MF");
    if (manifestStream != null) 
        Manifest manifest = new Manifest(manifestStream);
        Attributes attributes = manifest.getMainAttributes();
        return attributes.getValue("versionName");

    
    return "Not Found";

这应该返回正在使用的 jar 的确切版本,如果出现任何问题,它将返回一个字符串“未找到”。

【讨论】:

嗨,sweta,感谢您的回复。我需要一个通用的解决方案,而不是在单个战争文件中添加一个类。

以上是关于如何从 Jboss EAP 6.4 中部署的所有战争的 manifest.mf 文件中获取实现版本详细信息的主要内容,如果未能解决你的问题,请参考以下文章

Jboss (6.4 EAP) 到 WebSphere (7.x)

无法在 Jboss-eap-6.4 中部署 Spring Boot 应用程序

无法在 JBoss EAP 6.4 环境中使用 wildfly-maven-plugin 2.0.1 进行部署

Angular 2 应用程序部署在 JBOSS 6.4 eap 上,Java 服务作为后端

从Jboss EAP 6.4迁移到EAP 7.1

Jboss eap 6.4 https 配置监听端口 8443 失败