JSPG0036E: Не удалось найти ресурс / WEB-INF / servlet / ошибка просмотра для Liferay 4.3 + Spring Portlet в Websphere - PullRequest
1 голос
/ 13 августа 2010

Мне удалось успешно развернуть liferay в версиях websphere 6.1 и 7.0.

Кроме того, мои портлеты, разработанные с использованием Spring Portlet MVC, перечислены в дополнительном контенте.

Я используюПриведенный ниже преобразователь представления среды Spring для маршрутизации элемента управления в соответствующий портлет jsps

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/html/"/>
<property name="suffix" value=".jsp"/>
</bean>

Когда я включаю свой портлет под страницу, я получаю следующую ошибку, которая связана с неправильным поиском представления (например, jsp)... но я смог отладить и убедиться, что мой контроллер вызывается правильно и имя представления также было возвращено.

Та же настройка отлично работает в Jboss, пожалуйста, помогите, если я пропускаю что-то специфическое для websphere...

Заранее спасибо ... Ожидаем ваших ответов

Ошибка обработки JSP Код ошибки HTTP: 404

Сообщение об ошибке: JSPG0036E: Не удалось найти ресурс/ WEB-INF / servlet / view

Основная причина: java.io.FileNotFoundException: JSPG0036E: Не удалось найти ресурс / WEB-INF / servlet / view на com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionProcessor.findWrapper (AbstractJSPExtensionProcessor.java:376) в com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionProcessor.handleRequest (AbstractJSPExtensionProcessor.we.web.web. at.WebAppRequestDispatcher.include (WebAppRequestDispatcher.java:673) в org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel (InternalResourceView.java:137) в org.springframework.j.Ab.let.web.251) по адресу org.springframework.web.servlet.ViewRendererServlet.renderView (ViewRendererServlet.java:111) по адресу org.springframework.web.servlet.ViewRendererServlet.processRequest (ViewRendererServlet.erv.rv.service.pr.wev.serv.rv.serv.serv.serv.serv.serv.serv.serv.serv.serv.serv.serv.serv.serv_serv_serv.serv_serv_serv_serv.serv_serv.serv).doGet (ViewRendererServlet.java:65) в javax.servlet.http.HttpServlet.service (HttpServlet.java:718) в javax.servlet.http.HttpServlet.service (HttpServlet.java:ibm.webcontainer.servlet.ServletWrapper.service (ServletWrapper.java:1655) по адресу com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:937) по адресу com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper) at. com:,(PortletRequestDispatcherImpl.java:245) в com.liferay.portlet.PortletRequestDispatcherImpl.include (PortletRequestDispatcherImpl.java:87) в org.springframework.web.portlet.DispatcherPortlet.render (Dispatcher.prlet.portlet.DispatcherPortlet.doRenderService (DispatcherPortlet.java:811) по адресу org.springframework.web.portlet.FrameworkPortlet.processRequest (FrameworkPortlet.java:475) по адресу org.springframework.web.portlet.Framework45port.jpв javax.portlet.GenericPortlet.render (GenericPortlet.java:233) в com.liferay.portal.kernel.servlet.PortletServlet.service (PortletServlet.java:107) в javax.servlet.http.HttpServlet.service (HttpServlet.java:831) в com.m..ws.webcontainer.servlet.ServletWrapper.service (ServletWrapper.java:1655) на com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:937) на com.ibm.ws.webcontainervraraРучной запрос) на com.liferay.portlet.CachePortlet._invoke (CachePortlet.java:354) на com.liferay.portlet.CachePortlet.render (CachePortlet.java:201) наcom.ibm._jsp._render_5F_portlet._jspService (_render_5F_portlet.java:1324) на com.ibm.ws.jsp.runtime.HttpJspBase.service (HttpJspBase.java:98) на javax.servlet.http.HttpServlet.service (HttpServlet.java:831) в com.ibm.ws.webcontainer.servlet.ServletWrapper.service (ServletWrapper.java:1655) в com.ibm.ws.webcontainer.servlet.ServletWrapper.service (ServletWrapper.java:1595) в com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter (WebAppFilterChain.java:104) в com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter (WebAppFilterChain.java:77) в com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter (WebAppFilterManager.java:908) в com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:932) в com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:500) в com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest (ServletWrapperImpl.java:178) в com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest (GenericServletWrapper.java:121) в com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest (AbstractJSPExtensionServletWrapper.java:239) в com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.include (WebAppRequestDispatcher.java:673) в com.liferay.portal.util.PortalUtil.renderPortlet (PortalUtil.java:1517) в com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processPortlet (RuntimePortletUtil.java:165) в com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processPortlet (RuntimePortletUtil.java:102) в com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processTemplate (RuntimePortletUtil.java:270) в com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processTemplate (RuntimePortletUtil.java:189) в com.ibm._jsp._portlet._jspService (_portlet.java:762) в com.ibm.ws.jsp.runtime.HttpJspBase.service (HttpJspBase.java:98) в javax.servlet.http.HttpServlet.service (HttpServlet.java:831) в com.ibm.ws.webcontainer.servlet.ServletWrapper.service (ServletWrapper.java:1655) в com.ibm.ws.webcontainer.servlet.ServletWrapper.service (ServletWrapper.java:1595) в com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter (WebAppFilterChain.java:104) в com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter (WebAppFilterChain.java:77) в com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter (WebAppFilterManager.java:908) в com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:932) в com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:500) в com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest (ServletWrapperImpl.java:178) в com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest (GenericServletWrapper.java:121) в com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest (AbstractJSPExtensionServletWrapper.java:239) в com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.include (WebAppRequestDispatcher.java:673) в com.liferay.portal.action.LayoutAction.includeLayoutContent (LayoutAction.java:291) в com.liferay.portal.action.LayoutAction.execute (LayoutAction.java:174) в org.apache.struts.action.RequestProcessor.processActionPerform (RequestProcessor.java:431) в org.apache.struts.action.RequestProcessor.process (RequestProcessor.java:236) в com.liferay.portal.struts.PortalRequestProcessor.process (PortalRequestProcessor.java:157) в org.apache.struts.action.ActionServlet.process (ActionServlet.java:1196) в org.apache.struts.action.ActionServlet.doGet (ActionServlet.java:414) в javax.servlet.http.HttpServlet.service (HttpServlet.java:718) в com.liferay.portal.servlet.MainServlet.callParentService (MainServlet.java:287) в com.liferay.portal.servlet.MainServlet.service (MainServlet.java:522)в javax.servlet.http.HttpServlet.service (HttpServlet.java:831) в com.ibm.ws.webcontainer.servlet.ServletWrapper.service (ServletWrapper.java:1655) в com.ibm.ws.webcontainer.letletСлужба) на com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter (WebAppFilterManager.java:908) на com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:ib32. на comwebcontainer.servlet.ServletWrapper.WebAppRequestDispatcher.java:341) на com.liferay.portal.servlet.FriendlyURLServlet.service (FriendlyURLServlet.java:130) на javax.servlet.http.HttpServlet.service (HttpServlet.java:831) на com.ibm.ws.webcontainer.servlet.ServletWrapper.service (ServletWrapper.java:1655) на com.ibm.ws.webcontainer.servlet.ServletWrapper.service (ServletWrapper.java:15)на com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter (WebAppFilterChain.java:131) на com.liferay.filters.strip.StripFilter.doFilter (StripFilter.java:92) на com.ibm.ws.webcontainer.f.FilterInstanceWrapper.doFilter (FilterInstanceWrapper.java:188) на com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter (WebAppFilterChain.java:116) на com.liferay.filters.compression.CompilFF) в com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter (FilterInstanceWrapper.java:188) в com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter (WebAppFilterChain.jil..frayter. at6).secure.SecureFilter.doFilter (SecureFilter.java:144) на com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter (FilterInstanceWrapper.java:188) на com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter (WebAppFilterChain.java:116) при com.liferay.filters.doubleclick.DoubleClickFilter.doFilter (DoubleClickFilter.java:135) при com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188) на com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter (WebAppFilterChain.java:116) на com.liferay.portal.servlet.filters.layoutcache.LayoutCacheFilter.jF (() на com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter (FilterInstanceWrapper.java:188) на com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter (WebAppFilterChain.jal:.ray. atray) at6.servlet.filters.autologin.AutoLoginFilter.doFilter (WebAppFilterChain.java:116) на com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter.doFilter (VirtualHostFilter.java:166) по адресу com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter (FilterInstanceWrapper.java:188) по адресу com.ibm.ws.webcontainer.filter.WebAppFilterChain.inFilter (Web)на com.liferay.portal.servlet.filters.sessionid.SessionIdFilter.doFilter (SessionIdFilter.java:85) на com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter (FilterInstanceWrapper.java:188) на com.ib.webcontainer.filter.WebAppFilterChain.doFilter (WebAppFilterChain.java:116) при com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter (WebAppFilterChain.java:77) при com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908) по адресу com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:932) вcom.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:500) в com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest (ServletWrapperImpl.java:178) .web.servlet.CacheServletWrapper.handleRequest (CacheServletWrapper.java:91) в com.ibm.ws.webcontainer.WebContainer.handleRequest (WebContainer.java:864) в com.ibm.ws.webcontainer.WSWebContainer.jWReebна com.ibm.ws.webcontainer.channel.WCChannelLink.ready (WCChannelLink.java:186) на com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination (HttpInboundLink.java:455) на com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation (HttpInboundLink.java:384) по адресу com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete (HttpICLReadCallback.jibm at83).ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted (AioReadCompletionListener.java:165) в com.ibm.io.async.AbstractAsyncFuture.invokeCallback (AbstractAsync).Future.java:217) на com.ibm.io.async.AsyncChannelFuture.fireCompletionActions (AsyncChannelFuture.java:161) на com.ibm.io.async.AsyncFuture.completed (AsyncFuture.java:138) на com.ibm.io.async.ResultHandler.complete (ResultHandler.java:204) на com.ibm.io.async.ResultHandler.runEventProcessingLoop (ResultHandler.java:775) на com.ibm.io.async.ResultHandler $ 2.run (ResultHandler.java: ResultHandler.j:905) на com.ibm.ws.util.ThreadPool $ Worker.run (ThreadPool.java:1550)

Ответы [ 2 ]

1 голос
/ 31 августа 2010

Решение найдено :): -

Расширьте пружинный класс DispatcherPortlet и напишите свой собственный класс портлета.

Переопределите метод рендеринга, большая часть реализации такая же, как метод рендеринга базового классареализация.

Добавьте эти строки в конце метода -

HttpServletRequest httpRequest = PortalUtil.getHttpServletRequest(request);
HttpServletResponse httpResponse = PortalUtil.getHttpServletResponse(response);
//constant below indicate the url pattern of view renderer servlet configured in web.xml
RequestDispatcher portletRequestDispatcher = httpRequest.getRequestDispatcher("/WEB-INF/servlet/view");

portletRequestDispatcher.include(httpRequest, httpResponse);

Примечание: не забудьте настроить свой собственный класс портлета в portlet.xml для своих портлетов.

Надеюсь, это полезно для вас тоже.

0 голосов
/ 12 апреля 2017

Эта ошибка также возникает в более новых версиях, когда вместо включения сервлета выполняется прямой вызов сервлета.

Я наблюдал это, используя Apache Tiles 2 и Spring Portlet MVC 4.3 в WebSphere 8.5, например. В этом случае, если вы используете бин Spring viewResolver, вы можете настроить его для принудительного включения сервлета:

<bean id="viewResolver" class="org.springframework.web.servlet.view.tiles2.TilesViewResolver">
    <property name="alwaysInclude" value="true" />
</bean>

Обратите внимание, что поддержка Tiles 2 устарела в Spring MVC 4.3. Я только добавил это решение на случай, если у кого-то возникнут проблемы с существующим кодом.

Что касается тайлов, другой способ - принудительно включить сервлет. Вам необходимо установить атрибут запроса ServletUtil.FORCE_INCLUDE_ATTRIBUTE_NAME в true. Однако я не знаю, работает ли это, если вы установите его в запросе портлета, поскольку атрибуты запроса портлета могут быть недоступны в запросе сервлета. Насколько я знаю, нет официального способа получить объект запроса сервлета из объекта запроса портлета. Таким образом, здесь кто-то предлагает создать фильтр сервлета для "* .tiles", который устанавливает атрибут. Однако я этого не пробовал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...