[英]How to read manifest.mf from *.war/META-INF/MANIFEST.MF file?
[英]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.