2012-04-02 1 views
5

Перенос устаревшего приложения из WebSphere v.6 в WebSphere v.8. Web.xml приложения содержит только объявления сервлетов, но не сервлет-сопоставлений. Тем не менее, все сервлеты без сервлет-сопоставления доступны по шаблону url по умолчанию/servlet/[имя сервлета]. Однако, на WAS8, если web.xml обновляются с версией атрибута установлены значением «3.0»:WebSphere 8, web.xml version = "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"**> 

сервлетами рыхлого отображением по умолчанию и должно быть явно отображено в противном случае это 404 страницы не найдено.

Есть ли способ в сервлет 3.0 или по крайней мере WebSphere 8, чтобы определить шаблон url по умолчанию для всех сервлетов? Есть InvokerServlet для tomcat, есть ли версия для WebSphere v.8?

ответ

3

Оказалось, что более старые версии WebSphere используют проприетарные ibm-web - *. Xmi дескрипторы для определения вариантов развертывания конкретного поставщика. Однако, поскольку v8.0 поддержка файлов .xmi была отброшена (но все же поддерживается для обратной совместимости в приложениях, объявленных как сервлет «2.4»). Старое приложение я мигрирующий содержало следующий Ibm-веб-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 = «истинный» сделал старые приложения карты сервлетов по имени без сервлета-отображения. Это не поддерживается, если приложение является сервлетом 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.