2012-04-02 9 views
5

Migrowanie starszych aplikacji z wersji WebSphere 6 do produktu WebSphere w wersji 8. Plik web.xml aplikacji zawiera tylko deklaracje serwletów, ale nie odwzorowania serwletów. Jednak wszystkie serwlety bez mapowania serwletów są dostępne przez domyślny wzorzec URL/servlet/[nazwę serwletu]. Jednak na WAS8, jeśli web.xml jest aktualizowany z wersji atrybut ustawiony na „3.0”:WebSphere 8, web.xml version = "3.0", domyślne mapowanie serwletów?

<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"**> 

serwletów luźne domyślne mapowanie i muszą być wyraźnie odwzorowane inaczej to 404 nie znaleziono strony.

Czy istnieje sposób w apletie 3.0 lub przynajmniej w produkcie WebSphere 8, aby zdefiniować domyślny wzorzec adresu URL dla wszystkich serwletów? Jest InvokerServlet dla tomcat, czy istnieje wersja dla WebSphere v.8?

Odpowiedz

3

Wyłącza starsze wersje produktu WebSphere z własnymi zastrzeżonymi deskryptorami ibm-web - *. Xmi w celu zdefiniowania opcji wdrażania określonych przez producenta. Jednak od wersji 8.0 obsługa plików .xmi została przerwana (ale nadal jest obsługiwana w celu zapewnienia kompatybilności wstecznej w aplikacjach zadeklarowanych jako servlet "2.4"). Stara aplikacja byłem migracji zawierał następujące ibm-web-ext.xmi w WEB-INF:

<?xml version="1.0" encoding="UTF-8"?> 
<com.ibm.ejs.models.base.extensions.webappext:WebAppExtension xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:com.ibm.ejs.models.base.extensions.webappext="webappext.xmi" xmi:id="WebApp_ID_Ext" reloadingEnabled="true" fileServingEnabled="true" directoryBrowsingEnabled="false" serveServletsByClassnameEnabled="true"> 
    <webApp href="WEB-INF/web.xml#cchange"/> 
    <extendedServlets xmi:id="ServletExtension_1"> 
    <extendedServlet href="WEB-INF/web.xml#Servlet_1"/> 
    </extendedServlets> 
    <jspAttributes xmi:id="JSPAttribute_1" name="keepgenerated" value="true"/> 
    <jspAttributes xmi:id="JSPAttribute_1333518196516" name="reloadEnabled" value="true"/> 
    <jspAttributes xmi:id="JSPAttribute_1333518196517" name="reloadInterval" value="10"/> 
</com.ibm.ejs.models.base.extensions.webappext:WebAppExtension> 

więc atrybut serveServletsByClassnameEnabled = "true" wykonaną starych map app serwletów po imieniu bez servlet-mapping. Nie jest to obsługiwane, jeśli aplikacja jest serwletem 3.0 ..

3

Patrząc na twoją odpowiedź, możesz zrobić to, co chcesz. W przypadku pliku Servlet 3.0 plik ibm-web-ext.xmi jest zamieniany na ibm-web-ext.xml, a wymienione ustawienia mogą zostać zastosowane. Oto przykładowy kod dla ibm-web-ext.xml pliku:

<?xml version="1.0" encoding="UTF-8"?><web-ext 
xmlns="http://websphere.ibm.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_0.xsd" 
version="1.0"> 

<reload-interval value="3"/> 
<enable-directory-browsing value="false"/> 
<enable-file-serving value="true"/> 
<enable-reloading value="true"/> 
<enable-serving-servlets-by-class-name value="true" /></web-ext> 

Dla dalszego czytania przyjrzeć EJB 3.0 application bindings overview.

Powiązane problemy