将遗留应用程序从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"**>
servlet松散默认映射,需要显式映射,否则找不到404页面。
在servlet 3.0或者至少是WebSphere 8中,是否有办法为所有servlet定义默认的url模式?有针对tomcat的InvokerServlet,是否有适用于WebSphere v.8的版本?
答案 0 :(得分: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>
所以属性serveServletsByClassnameEnabled =“true”按名称制作了旧的app map servlet而没有servlet-mapping。如果应用程序是servlet 3.0,则不支持此功能。
答案 1 :(得分:3)
看看你的答案,有办法做你想做的事。对于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。