Pluto 2.0 + MyFaces Portlet桥+ JSF 2.0应用程序

时间:2011-07-28 08:01:48

标签: jsf-2 portlet

最近,我探讨了将常规JSF 2.0应用程序集成为portlet的可能性。

我做的第一件事就是下载Pluto 2.0(与tomcat捆绑在一起)和Myfaces Portlet Bridge 2。我创建了一个小型webapp(Core JSF 2.0第2章测验应用程序)。 正如我在教程中看到的,我在WEB-INF中创建了portlet.xml文件,其中包含以下内容:

<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。冥王星本身将我的webapp识别为portlet。很酷但是当我用portlet打开窗口时它只是空的。 Web应用程序可以单独运行,但不能作为portlet运行。 我已经尝试过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,但我得到了同样的结果......

0 个答案:

没有答案