web-dev-qa-db-ja.com

Webアプリのバージョンとは正確には何ですか?何が影響しますか?

Java Webアプリケーションには、web.xmlというファイルがあり、バージョン管理があります。

これは正確に何ですか?それは何のために使われますか?

ここ はSO web.xmlのwikiです。しかし、実際にはあまり説明していません。

サーブレット、フィルター、リスナーなど、WebアプリケーションでサーブレットAPIベースの実装を定義、宣言、および構成できます。

誰か簡単な例でこれを説明できますか?

ありがとうございました。

編集:

サンプルweb.xmlバージョン管理:

<web-app xmlns="http://Java.Sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
24
Koray Tugay

Web.xmlは、Webアプリケーションの構成を定義する中心的な場所です。たとえば、そこに指定できます:

また、これらのパラメーターの多くはアノテーションを通じて設定できるServlet 3.0仕様を調査することをお勧めします。

バージョニング

バージョン管理とは、web.xmlファイルの構文に従う必要があるXMLスキーマバージョンを指します。さらに重要なことは、アプリケーションが実装するサーブレット仕様のバージョンも示します。サーブレット3.0準拠のweb.xmlの開始例:

<web-app version="3.0" xmlns="http://Java.Sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd">

ほとんどのIDEは、web.xmlのその部分を自動的に生成します。何らかの理由で手動で変更する場合は、web-appとxsdのバージョンを一致させるように注意してください。たとえば、 this answer を参照してください。

web.xmlの具体例については、以下を参照してください。

30
Miljen Mikic

Servlet 3.0以降では、Web.xmlはオプションです。代わりに@WebServletアノテーションを使用できます。

Springを使用している場合org.springframework.web.WebApplicationInitializerを使用できます代わりにまたは一緒に web.xml。

WebApplicationInitializer:

従来のweb.xmlベースのアプローチとは対照的に(または可能性として)ServletContextをプログラムで設定するために、Servlet 3.0+環境に実装されるインターフェイス。

以下の質問に答えるため。

何が影響しますか? (Springアプリケーションの場合

web.xmlバージョン管理:

ただし、アプリケーションでWEB-INF/web.xmlが存在する場合、そのバージョン属性「3.0」以上に設定する必要があります、それ以外の場合はServletContainerInitializerブートストラップは無視されますサーブレットコンテナ。

完全なJava WebApplicationInitializerのドキュメント here を読むことができます。

web-app version="3.0"の部分についてweb.xml espから理解しているのは、サーブレットのバージョンです。だから、私はサーブレットバージョンへの私の答えを制限し、なぜそれがそんなに重要なのか。ご存知かもしれませんが、Java EEでプログラミングしている場合、サーブレットのバージョンは他のほとんどの標準を制御します。

例えば、

JSF 2.0ではSERVLET 2.5にJava EE5が付属している必要があり、WEBLOGIC 10.3.Xはこれらすべてのテクノロジーをサポートしています。他のコンテナーについてはリリースノートを確認してください。次に、JSF 2.1ではSERVLET 3.0にJava EE6が必要であり、WEBLOGIC 12cはこれらすべてのテクノロジーをサポートする必要があります。もちろん、後方互換性は保証されていますが、ほとんどの場合、いくつかの問題が発生する可能性があります。

weblogic 12cのリリースノートを確認するとき、サーブレットバージョンとともにサポートされている最も重要なテクノロジーにスターを付けました。これがMiljen Mikicのすばらしい答えであなたにも役立つことを願っています。

Standard    Version
Contexts and Dependency Injection for Java EE   1.0
Dependency Injection for Java EE    1.0
Expression Language (EL)    2.2, 2.1, 2.0
Only JSP 2.0 and greater supports Expression Language 2.x.
JAAS    1.0 Full
JASPIC  1.0
Java API for XML-Based Web Services (JAX-WS)    2.2, 2.1, 2.0
Java API for RESTful Web Services (JAX-RS)  1.1
Java Authorization Contract for Containers (JACC)   1.4
**Java EE   6.0**
Java EE Application Deployment  1.2
Java EE Bean Validation 1.1
Jave EE Common Annotations  1.0
Java EE Connector Architecture  1.6
Java EE EJB 3.1
Java EE Enterprise Web Services 1.3, 1.2, 1.1
Jave EE Interceptors    1.1
**Java EE JDBC  4.0, 3.0**
Java EE JMS 1.1, 1.0.2b
Java EE JNDI    1.2
**Java EE JSF   2.1, 2.0, 1.2, 1.1**
Java EE JSP 2.2, 2.1, 2.0, 1.2, and 1.1
JSP 1.2. and 1.1 include Expression Language (EL), but do not support EL 2.x or greater.
Java EE Managed Beans   1.0
**Java EE Servlet   3.0, 2.5, 2.4, 2.3, and 2.2**
Java RMI    1.0
JavaMail    1.4
JAX-B   2.2, 2.1, 2.0
JAX-P   1.3, 1.2, 1.1
JAX-R   1.0
JAX-RPC 1.1
JCE 1.4
**JDKs  6.0 (aka 1.6), 5.0 (aka 1.5, clients only)**
JMX 1.2, 1.0
JPA 2.0, 1.0
JSR 77: Java EE Management  1.1
JSTL    1.2
Managed Beans   1.0
OTS/JTA OTS 1.2 and JTA 1.1
RMI/IIOP    1.0
SOAP Attachments for Java (SAAJ)    1.3, 1.2
Streaming API for XML (StAX)    1.0
Web Services Metadata for the Java Platform 2.0, 1.1
1
berkay