2012-04-02 6 views
5

Migrieren einer Legacy-Anwendung von WebSphere Version 6 zu WebSphere Version 8. Die web.xml der Anwendung enthält nur Deklarationen von Servlets, aber keine Servlet-Mappings. Auf alle Servlets ohne Servlet-Mapping kann jedoch mit einem Standard-URL-Muster/Servlet/[Servlet-Name] zugegriffen werden. Doch auf WAS8, wenn web.xml mit dem Attribut Version aktualisiert wird auf „3.0“:WebSphere 8, web.xml version = "3.0", Standard-Servlet-Mapping?

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

Servlets lose Standardzuordnung und müssen explizit anders abgebildet werden es 404 Seite nicht gefunden.

Gibt es eine Möglichkeit in Servlet 3.0 oder mindestens WebSphere 8, ein Standard-URL-Muster für alle Servlets zu definieren? Es gibt InvokerServlet für tomcat, gibt es eine Version für WebSphere v.8?

Antwort

3

Zeigt an, dass ältere Versionen von WebSphere proprietäre ibm-web - * .xmi-Deskriptoren verwenden, um herstellerspezifische Implementierungsoptionen zu definieren. Seit Version 8.0 wurde die Unterstützung für .xmi-Dateien jedoch verworfen (und in Anwendungen, die als Servlet "2.4" deklariert sind, weiterhin zur Abwärtskompatibilität unterstützt). Die alte Anwendung Ich war die Migration enthielt folgendes ibm-web-ext.xmi in 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> 

so das Attribut serveServletsByClassnameEnabled = "true" gemacht, um die alte App Karte Servlets mit Namen ohne Servlet-Mapping. Dies wird nicht unterstützt, wenn die Anwendung Servlet 3.0 ist.

3

Mit Blick auf Ihre Antwort gibt es eine Möglichkeit zu tun, was Sie wollen. Für Servlet 3.0 wird die Datei ibm-web-ext.xmi durch die Datei ibm-web-ext.xml ersetzt, und die von Ihnen erwähnten Einstellungen können angewendet werden. Hier ist ein Beispielcode für ibm-web-ext.xml Datei:

<?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> 

Für weitere Lesung in EJB 3.0 application bindings overview einen Blick darauf werfen.

Verwandte Themen