2012-04-02 27 views
5

Migración de una aplicación heredada de WebSphere v.6 a WebSphere v.8. El web.xml de la aplicación solo contiene declaraciones de servlets pero no mapeos de servlets. Sin embargo, todos los servlets sin mapeo de servlet son accesibles mediante un patrón/url/servlet/servlet name predeterminado. Sin embargo, en WAS8, si web.xml se actualiza con la versión atributo establecido en "3.0":WebSphere 8, web.xml version = "3.0", mapeo de servlet predeterminado?

<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 asignación predeterminada suelta y necesitan ser asignada explícitamente lo contrario, es 404 página no encontrada.

¿Existe algún modo en servlet 3.0 o al menos WebSphere 8 para definir un patrón de URL predeterminado para todos los servlets? Hay InvokerServlet para tomcat, ¿hay una versión para WebSphere v.8?

Respuesta

3

Actualiza las versiones anteriores de los descriptores IBM-web propietarios de IBM - *. Xmi para definir las opciones de implementación específicas del proveedor. Sin embargo, desde la v8.0, se eliminó el soporte para archivos .xmi (aunque todavía es compatible con la compatibilidad con versiones anteriores en aplicaciones declaradas como servlet "2.4"). La solicitud de edad que estaba migrando contenía la siguiente ibm-web-ext.xmi en 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> 

lo que el atributo serveServletsByClassnameEnabled = "true" hizo que los viejos servlets mapa de aplicaciones por su nombre sin servlet-mapping. Esto no es compatible si la aplicación es servlet 3.0 ..

3

En cuanto a su respuesta, hay una manera de hacer lo que quiera. Para Servlet 3.0, el archivo ibm-web-ext.xmi se reemplaza por ibm-web-ext.xml y se pueden aplicar las configuraciones que mencionó. Aquí es un código de ejemplo para ibm-web-ext.xml archivo:

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

Para leer más echar un vistazo a EJB 3.0 application bindings overview.

Cuestiones relacionadas