Одна из первых проблем, с которой можно столкнуться, начиная работу с сервером приложений IBM WebSphere 7.0, это ограничение на размер скомпилированной JSP-страницы. Пример сообщения об ошибке приведён ниже.
com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[/html/folder/page.jsp]: com.ibm.ws.jsp.JspCoreException: JSPG0049E: /html/folder/page.jsp failed to compile :
C:\IBM\WebSphere\AppServer\profiles\AppSrv01\temp\R420-PRD-SRVNode01\server1\myportlet\myportlet.war\html\folder\_page.java : 383 : The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit
|
В 7-й версии сервера код, получаемый после компиляции JSP, занимает больше места, чем в предыдущих версиях, и для без того больших страниц может превысить лимит в 64К байт. Это приводит к тому, что ранее успешно работающие приложения на новом сервере не запустятся.
Проблему можно обойти разбиением больших страниц на несколько и использованием для их объединения тега <jsp:include>. Но в данной статье мы рассмотрим правильное решение.
Причиной увеличения размеров страницы при компиляции является новый способ доступа к ресурсам в приложениях, введённый в функции инъекции ресурсов WebSphere 7.0. Чтобы отключить инъекцию ресурсов на стадии трансляции, нужно установить следующее свойство для JSP контейнера:
com.ibm.wsspi.jsp.disableResourceInjection true
|
Последовательность шагов для задания свойств WebSphere:
-
В консоли администратора перейти в Servers > Server Types > WebSphere application servers > server_name > Web Container Settings > Web container.
-
В блоке Additional Properties выберите Custom Properties.
-
На странице Custom Properties, нажмите New.
-
Введите имя свойства, в нашем случае “com.ibm.wsspi.jsp.disableResourceInjection”, и его значение (“true”).
-
Нажмите Apply или OK.
-
Нажмите Save в блоке Messages, чтобы сохранить изменения конфигурации.
- Перезапустите сервер.