有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaWebSphere8,web。xml version=“3.0”,默认servletmapping?

将遗留应用程序从WebSphereV.6迁移到WebSphereV.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"**> 

servlet没有默认映射,需要显式映射,否则找不到404页

在Servlet3.0或至少WebSphere8中,是否有方法为所有servlet定义默认url模式?tomcat有InvokerServlet,WebSphereV.8有它的版本吗


共 (2) 个答案

  1. # 1 楼答案

    看看你的答案,有一种方法可以做你想做的事。对于Servlet 3.0,ibm-web-ext.xmi文件将替换为ibm-web-ext.xml,并且可以应用您提到的那些设置。以下是ibm-web-ext.xml文件的示例代码:

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

    进一步阅读请看EJB 3.0 application bindings overview

  2. # 2 楼答案

    原来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>
    

    因此,属性serveservletsbyclassnamenabled=“true”按名称创建了旧的应用程序映射servlet,而没有servlet映射。如果应用程序是servlet 3.0,则不支持此操作