У меня странное поведение на Webshphere 8.5.5.13 в Linux.
Я расширил приложение для крупных предприятий (IBM Maximo Enterprise Asset Management 7.6.0.9) и добавил несколько классов и файл JSP.
Эти изменения прекрасно работают на Webshere под Windows (и Weblogic) в течение многих месяцев для многих клиентов.
Теперь у нас есть клиент, который развернул это корпоративное приложение в Linux, и возникли непредвиденные проблемы.
При доступе к моему простому JSP в Linux я получаю следующее сообщение об ошибке в SystemOut.log сервера приложений:
[8/28/18 16:16:06:336 CEST] 00000633 FfdcProvider W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on /opt/IBM/WebSphere/AppServer/profiles/ctgAppSrv01/logs/ffdc/MXServer_79a40fc5_18.08.28_16.16.06.3072776788115294465046.txt com.ibm.ws.jsp.webcontainerext.JSPExtensionServletWrapper.translateJsp 259
[8/28/18 16:16:06:337 CEST] 00000633 webapp E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[/webclient/common/eamdmtrequesthandler.jsp]: com.ibm.ws.jsp.JspCoreException: JSPG0049E: /webclient/common/eamdmtrequesthandler.jsp failed to compile :
JSPG0091E: An error occurred at line: 3 in the file: /webclient/common/eamdmtrequesthandler.jsp
JSPG0093E: Generated servlet error from file: /webclient/common/eamdmtrequesthandler.jsp
/opt/IBM/WebSphere/AppServer/profiles/ctgAppSrv01/temp/ctgNode01/MXServer/MAXIMO/maximouiweb.war/webclient/common/_eamdmtrequesthandler.java : 7 : The import de cannot be resolved
JSPG0091E: An error occurred at line: 8 in the file: /webclient/common/eamdmtrequesthandler.jsp
JSPG0093E: Generated servlet error from file: /webclient/common/eamdmtrequesthandler.jsp
/opt/IBM/WebSphere/AppServer/profiles/ctgAppSrv01/temp/ctgNode01/MXServer/MAXIMO/maximouiweb.war/webclient/common/_eamdmtrequesthandler.java : 87 : ExportXLS cannot be resolved to a type
JSPG0091E: An error occurred at line: 8 in the file: /webclient/common/eamdmtrequesthandler.jsp
JSPG0093E: Generated servlet error from file: /webclient/common/eamdmtrequesthandler.jsp
/opt/IBM/WebSphere/AppServer/profiles/ctgAppSrv01/temp/ctgNode01/MXServer/MAXIMO/maximouiweb.war/webclient/common/_eamdmtrequesthandler.java : 87 : ExportXLS cannot be resolved to a type
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.translateJsp(AbstractJSPExtensionServletWrapper.java:616)
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper._checkForTranslation(AbstractJSPExtensionServletWrapper.java:477)
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.checkForTranslation(AbstractJSPExtensionServletWrapper.java:298)
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:167)
Факты:
- Все необходимые классы доступны в правильной папке. Я проверил файл EAR и папку установленных приложений в Websphere.
- Все файлы читабельны и доступны. Нет проблем с разрешениями. Websphere работает как root, SELinux отключен
- В том же файле EAR, в котором есть эта ошибка в Linux, такой проблемы нет при развертывании в Windows.
- Я получаю то же сообщение об ошибке, когда пытаюсь скомпилировать JSP с помощью команды JspBatchCompiler.sh из командной строки.
- Я переместил свои классы из de.eam.webclient.servlet в psdi.webclient.servlet (уже существующий пакет, который является частью Maximo), и затем JSP работает как положено.
Я проверил файл журнала MXServer_79a40fc5_18.08.28_16.16.06.3072776788115294465046.txt и также проверил, что путь к классам содержит мои классы в моей папке.
Что может быть причиной того, что Websphere не нашел мой каталог пакета верхнего уровня "de" и не нашел классы, даже если они находятся в пути к классам и находятся в Windows.
Что я могу сделать, чтобы отследить это? Это ошибка в Websphere в Linux?
Файл JSP:
</p>
<pre><code><%@ page language="java"
%><%@ page contentType="text/html; charset=utf-8"
%><%@ page import="de.eam.webclient.servlet.ExportXLS"
%><%
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
ExportXLS servlet = new ExportXLS();
servlet.handleRequest(request, response);
%>