8

使用可能なJavaee環境のバージョンをプログラムで判断する方法はありますか?

4

3 に答える 3

6

Java EE のバージョン番号を取得する方法があるかどうかはわかりませんが、サーブレット API のバージョン番号と JSP のバージョン番号を取得できます。

  • オブジェクトから実装に依存しない方法でサーブレット API のバージョンを取得できServletContextます。getMajorVersion()メソッドとメソッドを探しgetMinorVersion()ます。

  • JSP バージョンは次のように取得できます。

    JspFactory.getDefaultFactory().getEngineInfo().getSpecificationVersion()

また、さまざまなバージョン番号を検索または推測するためのプラットフォーム (つまりアプリケーションサーバー) 固有の方法があることは間違いありません。


appserver ベンダーが何をするかを考えると、「Java EE バージョン」というのはゴムのような概念であることに注意してください。たとえば、サポートしている Java EE テクノロジをチェリー ピッキングし、場合によってはバージョンをチェリー ピッキングします。たとえば、Tomcat はすべての Java EE をサポートしているわけではありません。EJB のサポートはありません。

于 2013-01-20T01:04:16.167 に答える
6

それを行う標準的な方法はありません。最も近い方法は、リフレクション/ClassLoader を使用して、特定の Java EE バージョンで導入された特定の API クラス/メソッドをチェックすることです。

私の頭の上から:

  • Java EE 6 / EJB 3.1 を追加javax.ejb.Singleton
  • Java EE 5 / EJB 3.0 を追加javax.ejb.Stateless
  • J2EE 1.4 / EJB 2.1 を追加javax.ejb.TimerService
  • J2EE 1.3 / EJB 2.0 を追加javax.ejb.MessageDrivenBean

それ以前は J2EE 1.2 / EJB 1.1

ただし、これがTomcat用である場合(タグで判断)、最善の方法は単にチェックすることSystem.getProperty("tomcat.version")です. Tomcat のバージョンに基づいてサーブレットのバージョンを暗示できるはずです。

于 2013-01-20T00:34:06.640 に答える
2

Tomcat を使用している場合は、クラスを使用してランタイムのServlet API バージョンを取得できます。org.apache.catalina.core.Constants例えば

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
} ...
于 2013-01-20T00:41:42.790 に答える