繁体   English   中英

如何从Jboss(wildfly)的Web文件夹中读取MANIFEST.MF文件

[英]How to read the MANIFEST.MF file from web folder in Jboss (wildfly)

我需要从Java代码读取清单文件。 该项目是在Wildfly中运行的企业Java项目。 我需要阅读Web的清单文件。 以下是我尝试过的。

  @Resource
    private WebServiceContext context;

 ServletContext servletContext =
                (ServletContext) context.getMessageContext().get(
                        MessageContext.SERVLET_CONTEXT);

        Properties prop = new Properties();
        prop.load(servletContext.getResourceAsStream("/META-INF/MANIFEST.MF"));

但是我收到以下错误

Caused by: javax.naming.NameNotFoundException: env/abc.def.rest.ManifestRestService/context -- service jboss.naming.context.java.module.abc-ear.abc-web.env."abc.def.ManifestRestService".context
    at org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:104) [jboss-as-naming.jar:7.2.0.Final]
    at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:202) [jboss-as-naming.jar:7.2.0.Final]
    at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:179) [jboss-as-naming.jar:7.2.0.Final]
    at org.jboss.as.naming.InitialContext$DefaultInitialContext.lookup(InitialContext.java:235)

任何想法如何使它工作。

我不知道这是否是一种正确的方法,但是我设法读取了清单:

@WebListener
public class ManifestReader implements ServletContextListener {
    ...
    @Override
    public void contextInitialized(ServletContextEvent evt) {
        ServletContext ctx = servletContextEvent.getServletContext();
        InputStream is = ctx.getResourceAsStream("/META-INF/MANIFEST.MF");
        ...
    }
}

在部署时调用此回调( contextInitialized )。

在我们的例子中, ManifestReader还处理请求( @Path("/blah") ,@ @RequestScoped ),因此它具有存储读取清单的静态字段。 如果该字段不是静态的,则在处理请求时为null。

我本人想知道更好的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM