2012-04-02 100 views
5

将旧版应用程序从WebSphere v.6迁移到WebSphere v.8。应用程序的web.xml只包含servlet的声明,但不包含servlet映射。然而,没有servlet映射的所有servlet都可以通过缺省的url pattern/servlet/[servlet name]访问。然而,在WAS8,如果web.xml文件中有属性的版本更新设置为“3.0”:WebSphere 8,web.xml版本=“3.0”,默认servlet映射?

<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模式? InvokerServlet for tomcat是否有针对WebSphere v.8的版本?

回答

3

发现旧版本的WebSphere使用专有ibm-web - *。xmi描述符来定义供应商特定的部署选项。但是,从v8.0开始,对.xmi文件的支持被删除(但仍支持声明为servlet“2.4”的应用程序的向后兼容性)。旧的应用程序,我迁移包含以下IBM的web-ext.xmi文件中的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> 

这个属性serveServletsByClassnameEnabled =“真正的”无Servlet映射通过名称进行了旧的应用程序映射的servlet。这是不支持,如果应用程序是servlet 3.0 ..

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