WebSphere 8, web.xml version = "3.0", отображение сервлетов по умолчанию? - PullRequest
5 голосов
/ 02 апреля 2012

Миграция устаревшего приложения из WebSphere v.6 в WebSphere v.8. Приложение web.xml содержит только объявления сервлетов, но не отображений сервлетов. Тем не менее, все сервлеты без отображения сервлетов доступны по шаблону URL по умолчанию / 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"**> 

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

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

Ответы [ 2 ]

3 голосов
/ 22 ноября 2013

Глядя на ваш ответ, есть способ сделать то, что вы хотите. Для 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 .

3 голосов
/ 04 апреля 2012

Оказывается, более старые версии WebSphere использовали проприетарные дескрипторы ibm-web - *. Xmi для определения конкретных вариантов развертывания.Однако, начиная с версии 8.0, поддержка файлов .xmi была прекращена (но все же поддерживается обратная совместимость в приложениях, объявленных как сервлет «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 = "true" сделал старые сервлеты сопоставления приложений по имени без отображения сервлетов,Это не поддерживается, если приложение является сервлетом 3.0 ..

...