Недавно я исследовал возможности интеграции обычного приложения JSF 2.0 в качестве портлета и портлета.
Первое, что я сделал, загрузил Pluto 2.0 (в комплекте с tomcat)и Myfaces Portlet Bridge 2 .Я создал небольшое веб-приложение ( Core JSF 2.0 глава 2 викторины).Как я видел из учебников, я создал файл portlet.xml в WEB-INF со следующим содержимым:
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd
http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd">
<portlet>
<portlet-name>QPortlet</portlet-name>
<portlet-class>javax.portlet.faces.GenericFacesPortlet</portlet-class>
<expiration-cache>0</expiration-cache>
<init-param>
<name>javax.portlet.faces.defaultViewId.view</name>
<value>faces/index.xhtml</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
</supports>
<supports>
<mime-type>application/xhtml+xml</mime-type>
<portlet-mode>VIEW</portlet-mode>
</supports>
<portlet-info>
<title>QPortlet</title>
<short-title>QPortlet</short-title>
</portlet-info>
</portlet>
</portlet-app>
Затем я добавил несколько строк в web.xml:
<servlet>
<servlet-name>QPortlet</servlet-name>
<servlet-class>org.apache.pluto.container.driver.PortletServlet</servlet-class>
<init-param>
<param-name>portlet-name</param-name>
<param-value>QPortlet</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>QPortlet</servlet-name>
<url-pattern>/PlutoInvoker/QPortlet</url-pattern>
</servlet-mapping>
Скопировали соответствующий мост Jar в папку lib, упаковали как файл war и развернули в Pluto.Сам Плутон узнал мое веб-приложение как портлет.Круто, но когда я открыл окно с портлетом, оно было просто пустым.Веб-приложение хорошо работает отдельно, но не как портлет.Я пробовал примеры из MyFaces, но самое большее, что я могу получить, это следующее исключение:
Error rendering portlet portlet-bridge-carstore.
java.lang.IllegalArgumentException: Only supported in a portlet environment
at org.apache.myfaces.portlet.faces.util.map.PortletRequestMap.(PortletRequestMap.java:42)
…
Я что-то не так делаю?Я также пробовал JBoss Portlet Bridge , но получаю тот же результат ...