2012-04-02 13 views
5

Migrazione di un'applicazione legacy da WebSphere v.6 a WebSphere v.8. Il web.xml dell'applicazione contiene solo dichiarazioni di servlet ma non mappature servlet. Tuttavia, tutti i servlet senza mappatura servlet sono accessibili da un pattern/servlet/[nome servlet] predefinito. Tuttavia, il WAS8, se web.xml è aggiornato con la versione attributo impostato su "3.0":WebSphere 8, versione web.xml = "3.0", mappatura servlet predefinita?

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

servlet mappatura predefinita sciolti e devono essere esplicitamente mappati altrimenti è 404 pagina non trovata.

C'è un modo in servlet 3.0 o almeno WebSphere 8, per definire un modello di URL predefinito per tutti i servlet? C'è InvokerServlet per tomcat, c'è una versione di esso per WebSphere v.8?

risposta

3

Sono state rilevate versioni precedenti di WebSphere utilizzate da descrittori ibm-web - *. Xmi per definire le opzioni di distribuzione specifiche del fornitore. Tuttavia, poiché v8.0 il supporto per i file .xmi è stato eliminato (ma ancora supportato per compatibilità con le versioni precedenti nelle applicazioni dichiarate come servlet "2.4"). La vecchia applicazione che stavo migrando conteneva la seguente 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> 

così l'attributo serveServletsByClassnameEnabled = "true" fatto il vecchio app mappa servlet per nome senza servlet-mapping. Questo non è supportato se l'applicazione è servlet 3.0 ..

3

Guardando la tua risposta c'è un modo per fare ciò che vuoi. Per Servlet 3.0, il file ibm-web-ext.xmi viene sostituito da ibm-web-ext.xml e le impostazioni menzionate possono essere applicate. Ecco un codice di esempio per ibm-web-ext.xml di file:

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

Per ulteriori letture di dare un'occhiata a EJB 3.0 application bindings overview.

Problemi correlati