A Servlet 3.0 specifikációban a <injection-target> elemeket egy web-fragment.xml fájlban meghatározott csak akkor kerül hozzá a szülő web.xml fájlhoz, ha a web.xml erőforrás-hivatkozás definíciója az azonos névvel azonos nevű <injection-target> elemeket nem tartalmaz. A Servlet 3.1 specifikáció tisztázza, hogy egy erőforrás esetében névre való hivatkozás esetén az összes <injection-target> elemeket a web-fragment.xml leírókban hozzá kell adni a a szülő web.xml leírókhoz <injection-target> elemek listájához. A Servlet 3.1 funkció megváltoztathatja a meglévő alkalmazás viselkedését az injektálás aktiválásával célpontokat, amelyek korábban ki voltak zárva a web.xml fájlból.
Ez a szabály megjelöli a <injection-target> elemet a web-fragment.xml fájlban fájlban, ha a web.xml fájl tartalmaz egy <injection-target> elemet egy <resource-ref> elemen belül, amely a következővel van definiálva a a web-fragment.xml fájlban található <resource-ref> elemmel azonos névvel van definiálva.
A következő példák bemutatják a viselkedésváltozást egy web.xml fájl és egy web-fragment.xml fájl kombinációjának használatakor:
web.xml:
<resource-ref> <res-ref-name>ReferenceName</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> <injection-target> <injection-target-class>Class1</injection-target-class> <injection-target-name>Resource1</injection-target-name> </injection-target> </resource-ref>
web-fragment.xml:
<resource-ref> <res-ref-name>ReferenceName</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> <injection-target> <injection-target-class>Class2</injection-target-class> <injection-target-name>Resource2</injection-target-name> </injection-target> </resource-ref>
A Servlet 3.0 változatban a kombinált eredmény figyelmen kívül hagyja a Class2 beszúrási célját:
<resource-ref> <res-ref-name>ReferenceName</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> <injection-target> <injection-target-class>Class1</injection-target-class> <injection-target-name>Resource1</injection-target-name> </injection-target> </resource-ref>
A Servlet 3.1 változatban a kombinált eredmény használja a Class2 beszúrási célját:
<resource-ref> <res-ref-name>ReferenceName</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> <injection-target> <injection-target-class>Class1</injection-target-class> <injection-target-name>Resource1</injection-target-name> </injection-target> <injection-target> <injection-target-class>Class2</injection-target-class> <injection-target-name>Resource2</injection-target-name> </injection-target> </resource-ref>
A Servlet 3.1 viselkedésváltozásaival kapcsolatos további információkért tekintse meg a következőt: Servlet 3.1 viselkedésváltozások.