W specyfikacji Servlet 3.0, elementy <injection-target> elementy odniesienia do zasobu, który jest zdefiniowany w pliku web-fragment.xml są dodawane do pliku nadrzędnego web.xml tylko wtedy, gdy definicja odwołania do zasobu web.xml o tej samej nazwie nie ma elementu <injection-target> nazwie nie zawiera elementów <injection-target>. Specyfikacja Servlet 3.1 wyjaśnia, że dla zasobu o tej samej nazwie, wszystkie elementy <injection-target> elementy w web-fragment.xml deskryptory są dodawane do nadrzędnych deskryptorów web.xml listy elementów <injection-target>. Funkcja Servlet 3.1 może zmienić istniejące zachowanie aplikacji, aktywując wstrzykiwanie które wcześniej były wykluczone z pliku web.xml.
Ta reguła oznacza element <injection-target> w pliku web-fragment.xml jeśli plik web.xml zawiera element <injection-target> w elemencie <resource-ref>, który jest zdefiniowany za pomocą taką samą nazwą jak taką samą nazwę jak element <resource-ref> w pliku web-fragment.xml.
W poniższych przykładach przedstawiono zmianę zachowania w przypadku użycia kombinacji pliku web.xml i pliku web-fragment.xml:
web.xml:
< span class= "XmlElement"> < resource-ref> < /span> < span class= "XmlElement"> < res-ref-name> < /span>ReferenceName< span class="XmlElement"> < /res-ref-name> < /span> < span class= "XmlElement"> < res-type> < /span>javax.sql.DataSource< span class="XmlElement"> < /res-type> < /span> < span class= "XmlElement"> < res-auth> < /span> Kontener < span class="XmlElement"> < /res-auth> < /span> < span class= "XmlElement"> < res-sharing-scope> < /span> Współużytkowalne < span class="XmlElement"> < /res-sharing-scope> < /span> < span class= "XmlElement"> < injection-target> < /span> < span class= "XmlElement"><injection-target-class>Class1 < /klasa-docelowa-wstrzykiwania > < /span> < span class= "XmlElement"><injection-target-name>Resource1 < /nazwa-docelowego-wstrzykiwania> < /span> < span class= "XmlElement"> < /injection-target> < /span> < span class="XmlElement"> < /resource-ref> < /span>
web-fragment.xml:
< span class= "XmlElement"> < resource-ref> < /span> < span class= "XmlElement"> < res-ref-name> < /span>ReferenceName< span class="XmlElement"> < /res-ref-name> < /span> < span class= "XmlElement"> < res-type> < /span>javax.sql.DataSource< span class="XmlElement"> < /res-type> < /span> < span class= "XmlElement"> < res-auth> < /span> Kontener < span class="XmlElement"> < /res-auth> < /span> < span class= "XmlElement"> < res-sharing-scope> < /span> Współużytkowalne < span class="XmlElement"> < /res-sharing-scope> < /span> < span class= "XmlElement"> < injection-target> < /span> < span class= "XmlElement"><injection-target-class>Class2 < /klasa-docelowa-wstrzykiwania > < /span> < span class= "XmlElement"><injection-target-name>Resource2 < /nazwa_docelowa_wstrzykiwania> < /span> < span class= "XmlElement"> < /injection-target> < /span> < span class="XmlElement"> < /resource-ref> < /span>
W specyfikacji Servlet 3.0 w złożonym wyniku element injection-target dla elementu Class2 jest ignorowany:
< span class= "XmlElement"> < resource-ref> < /span> < span class= "XmlElement"> < res-ref-name> < /span>ReferenceName< span class="XmlElement"> < /res-ref-name> < /span> < span class= "XmlElement"> < res-type> < /span>javax.sql.DataSource< span class="XmlElement"> < /res-type> < /span> < span class= "XmlElement"> < res-auth> < /span> Kontener < span class="XmlElement"> < /res-auth> < /span> < span class= "XmlElement"> < res-sharing-scope> < /span> Współużytkowalne < span class="XmlElement"> < /res-sharing-scope> < /span> < span class= "XmlElement"> < injection-target> < /span> < span class= "XmlElement"><injection-target-class>Class1 < /klasa-docelowa-wstrzykiwania > < /span> < span class= "XmlElement"><injection-target-name>Resource1 < /nazwa-docelowego-wstrzykiwania> < /span> < span class= "XmlElement"> < /injection-target> < /span> < span class="XmlElement"> < /resource-ref> < /span>
W specyfikacji Servlet 3.1 w złożonym wyniku element injection-target dla elementu Class2 jest używany:
<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>
Więcej informacji na temat zmian zachowania specyfikacji Servlet 3.1 zawierają następujące materiały źródłowe: Zmiany zachowania specyfikacji Servlet 3.1.