是否有编程方式来确定哪个版本的java ee环境可用?
答案 0 :(得分:5)
没有标准的方法可以做到这一点。您最接近的方法是使用reflection / ClassLoader并检查在给定Java EE版本中引入的特定API类/方法。
脱离我的头顶:
javax.ejb.Singleton
javax.ejb.Stateless
javax.ejb.TimerService
javax.ejb.MessageDrivenBean
在此之前它是J2EE 1.2 / EJB 1.1
但是,请注意,如果这是针对Tomcat(通过标记判断),最好的方法是只检查System.getProperty("tomcat.version")
。您应该能够基于Tomcat版本来暗示servlet版本。
答案 1 :(得分:4)
我不知道是否有办法获取Java EE版本号,但您可以获取Servlet API版本号和JSP版本号:
您可以从ServletContext
对象以独立于实现的方式获取servlet api版本。查找getMajorVersion()
和getMinorVersion()
方法。
您可以按如下方式获取JSP版本:
JspFactory.getDefaultFactory().getEngineInfo().getSpecificationVersion()
毫无疑问,平台(即appserver)可以找到或推断各种版本号。
值得注意的是,如果考虑到appserver供应商可能会做什么,“Java EE版本”是一个橡皮概念;例如挑选他们支持的Java EE技术,以及可能挑选樱桃的技术。例如,Tomcat不支持所有Java EE - 缺少EJB支持。
答案 2 :(得分:2)
如果您使用的是Tomcat,则可以使用Servlet API version类获取org.apache.catalina.core.Constants
运行时。 e.g。
if (Constants.MINOR_VERSION == 2 && Constants.MINOR_VERSION == 5) {
// Servlet 2.5
} else if(Constants.MINOR_VERSION == 3 && Constants.MINOR_VERSION == 0) {
// Servlet 3.0
} ...