2015-08-14 7 views
0

У меня есть приложение портлета JSR 168, которое было первоначально разработано для WebSphere Portal 6.0, а затем перешло в WebSphere Portal 7.0 с минимальными изменениями, необходимыми для его создания работа, и теперь я пытаюсь переместить его в WebSphere Portal 8.5.WebSphere Portal 8.5 - Приложение портлета - NullPointerException, вызванное служебным методом Error.jsp

Я тестировал только один из портлетов до сих пор на WP 8.5, используя версию приложения WP 7.0 без изменений. Кажется, это запускает приложение Error.jsp приложения, которое само создает исключение NullPointerException в журнале сервера.

Фрагменты проекта проекта включают в себя «JavaServer Faces 1.1» и «JavaServer Faces (IBM Enhanced) 7.0».

портлета Я тестирование имеет JSP, указанный в качестве домашней страницы с помощью этого элемента в portlet элемента в файле «portlet.xml» в приложении:

<init-param> 
    <name>com.ibm.faces.portlet.page.view</name> 
    <value>/Admin/AdministratorControlView.jsp</value> 
</init-param>

Когда я открываю страницу, содержащую этот портлет в браузере, ожидаемый контент выглядит правильно, но ссылки в содержимом ничего не делают.
Каждая загрузка страницы производит эту трассировку стеки в «SystemOut.log» на сервере, который я усеченная несколько:

[14/08/15 13:52:27:826 EST] 00000158 ServletWrappe E com.ibm.ws.webcontainer.servlet.ServletWrapper service 
CWSRV0068E: An exception was thrown by one of the service methods of the servlet [/Error.jsp] 
in application [PA_TeamElite]. Exception created : [java.lang.NullPointerException 
    at com.ibm.ws.portletcontainer.tags.DefineObjectsTag.doStartTag(DefineObjectsTag.java:62) 
    at com.ibm._jsp._Error._jspService(_Error.java:105) 
    at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:99) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1230) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178) 
    ... 

я предполагаю, другая ошибку вызвала error.jsp, но, если это так, исходная ошибка не отображается в файлах журналов или в браузере.
Что может вызвать NullPointerException в Error.jsp и как его исправить?

Я подозреваю, что это проблема с конфигурацией, но полный контент Error.jsp приведен ниже, если это какая-то помощь.
MHFacesPortlet Используется в Error.jsp - это пользовательский класс, который расширяет com.ibm.faces.portlet.FacesPortlet.


<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet"%> 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1" session="false" isErrorPage="true" 
    import="com.devcompany.util.portlet.MHFacesPortlet"%> 
<portlet:defineObjects /> 

<%javax.portlet.PortletURL url = renderResponse.createActionURL(); 
    url.setParameter(MHFacesPortlet.PARAMETER_EXTENDED_ACTION, 
     MHFacesPortlet.ACTION_VIEW_MODE_RESET); 
%> 

<p>The following error has occurred. Click <a href="<%= url.toString()%>">here</a> 
to go to the portlet home page.</p> 

<%Throwable e = exception; 
while (e != null) 
{%> 
    <%=e.getMessage()%> 
    <br> 
    <br> 
<% 
    e.printStackTrace(); 
    e = e.getCause(); 
}%>
+1

Похоже, вы пытаетесь использовать портлет связанных тег '<портлетов: defineObjects />' внутри страницы JSP, которая является не выполняются в потоке запросов портлета. Вы уверены, что ваш 'Error.jsp' отображается как часть портлета и не является отдельной страницей? –

+0

@ KonstantinV.Salikhov - Нет, я не уверен в этом. Я знаю, что тот же самый «Error.jsp» работает в более старых версиях WebSphere Portal, и, когда он отображает, он делает это в той же области страницы, на которой отображается портлет. –

ответ

1

Я обнаружил, что запуск error.jsp, и пришел к выводу, что NullPointerException является, как это было предложено в комментарии Константина, вызванное error.jsp не оказывающего через портлет.

При использовании приложения в WebSphere Portal 8.5, этот тег добавляется в HTML:

<script type="text/javascript" 
src="/wps/PA_AppName/portlet/javax.faces.resource/oamSubmit.js?ln=org.apache.myfaces">

Путь в этом теге выдает ошибку 404, которая вызывает error.jsp, который затем производит NullPointerException.
Ошибка 404 также несет ответственность за сбои ссылок в портлете JSP, поскольку они полагаются на javascript, который должен находиться в oamSubmit.js.

Я установил обе проблемы, добавив в файл web.xml:

<context-param> 
    <param-name>org.apache.myfaces.RENDER_FORM_SUBMIT_SCRIPT_INLINE</param-name> 
    <param-value>true</param-value> 
    <description></description> 
</context-param>
Смежные вопросы