WebSphere 8,web.xml版本="3.0",默认的servlet-mapping?

Max*_*nya 5 java websphere web.xml servlet-3.0

将遗留应用程序从WebSphere v.6迁移到WebSphere v.8.应用程序的web.xml只包含servlet的声明,但不包含servlet映射.但是,没有servlet映射的所有servlet都可以通过默认的url模式/ servlet/[servlet名称]访问.但是,在WAS8上,如果更新了web.xml,并将属性版本设置为"3.0":

 <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"**> 
Run Code Online (Sandbox Code Playgroud)

servlet松散默认映射,需要显式映射,否则找不到404页面.

在servlet 3.0或至少是WebSphere 8中,有没有办法为所有servlet定义默认的url模式?有针对tomcat的InvokerServlet,是否有针对WebSphere v.8的版本?

Max*_*nya 3

原来旧版本的 WebSphere 使用专有的 ibm-web-*.xmi 描述符来定义供应商特定的部署选项。然而,自 v8.0 起,对 .xmi 文件的支持被删除(但仍然支持声明为 servlet“2.4”的应用程序中的向后兼容性)。我正在迁移的旧应用程序在 WEB-INF 中包含以下 ibm-web-ext.xmi:

<?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>
Run Code Online (Sandbox Code Playgroud)

因此,属性serveServletsByClassnameEnabled =“true”使旧应用程序按名称映射servlet,而无需servlet映射。如果应用程序是 servlet 3.0,则不支持此功能。