Pluto 2.0 + портлет MyFaces + приложение JSF 2.0 - PullRequest
2 голосов
/ 28 июля 2011

Недавно я исследовал возможности интеграции обычного приложения 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 , но получаю тот же результат ...

...