Portlety: Pluto + WSRP4J consumer + BEA WSRP Test Server
Tento spot ma dokumentacni charakter (uz to delam podruhe a treba to nekomu pomuze). Pojednava o rozchozeni vzdaleneho portletu BeaRacing prostrednictvim WSRP4J (subversion verze ke dni 2008-01-22) na vychozim portalu Pluta-1.1.4 (JSR 168 reference implementation by Apache).
Pluto
Stahnout a rozbalit Pluto (balik pluto-current-bundle):
tar xvfj pluto-current-bundle.tar.bz2
Spravnou instalaci lze overit (http://localhost:8080/pluto/portal po spusteni, jmeno/heslo je pluto/pluto):
$PLUTO_HOME/bin/catalina.sh run
WSRP4J
Pomoci subversion stahnout zdrojaky (stabilni binarni distribuze neni na Apache strankach k dispozici), upravit polozku maven.tomcat.proxyportlet.home v souboru $WSRP4J_SRC_HOME/build.propeties a zkompilovat (ja zapotrebi maven2). Dale:
cp $WSRP4J_SRC_HOME/consumer-proxyportlet/target/wsrp4j-proxyportlet.war $PLUTO_HOME/webapps
V deploymentu chybi knihovna Xalanu, kterou potrebuji konfiguracni portlety WSRP4J. Proto je treba spustit a pote ukoncit Pluto, aby probehl deployment aplikace wsrp4j-proxyportlet. Pak se musi dokopirovat knihovna (napr. z maven repositare):
cp $HOME/.m2/repository/xalan/xalan/2.7.0/xalan-2.7.0.jar $PLUTO_HOME/webapps/wsrp4j-proxyportlet/WEB-INF/lib
Je treba nastavit Template Composer v souboru $PLUTO_HOME/webapps/wsrp4j-proxyportlet/WEB-INF/classes/wsrp4j-config.properties:
org.apache.wsrp4j.consumer.proxyportlet.templatecomposer=\
org.apache.wsrp4j.consumer.proxyportlet.template.pluto.PlutoPortalTemplateComposerService
Bohuzel, WSRP4J zavisi za behu na knihovnach Pluto-1.0.1 a bez upravy zdrojovych kodu vyskoci ClassNotFoundException. Zde je diff souboru $WSRP4J_SRC_HOME/consumer-proxyportlet/src/main/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalTemplateComposer.java. Je treba WSRP4J znovu zkompilovat a vyslednou tridu nahrat na odpovidajici misto v $PLUTO_HOME/webapps/wsrp4j-proxyportlet/WEB-INF/classes.
36,38c36,38
< //import org.apache.pluto.PortletWindow;
< //import org.apache.pluto.core.CoreUtils;
< //import org.apache.pluto.factory.PortletObjectAccess;
---
> import org.apache.pluto.core.CoreUtils;
> import org.apache.pluto.factory.PortletObjectAccess;
> import org.apache.pluto.om.window.PortletWindow;
60,61c60,61
< // PortletWindow portletWindow =
< // CoreUtils.getInternalRequest(request).getInternalPortletWindow();
---
> PortletWindow portletWindow =
> CoreUtils.getInternalRequest(request).getInternalPortletWindow();
65,67c65,67
< //HttpServletRequest servletRequest = (HttpServletRequest) request;
< //HttpServletResponse servletResponse = (HttpServletResponse) response;
< System.out.println(response.createRenderURL().toString());
---
> HttpServletRequest servletRequest = (HttpServletRequest) request;
> HttpServletResponse servletResponse = (HttpServletResponse) response;
>
Konfigurace
Do $PLUTO_HOME/webapps/pluto/WEB-INF/pluto-portal-driver-config.xml pridat fragment (toto zalozi novou zalozku WSRP4J na portalu):
<page name="WSRP4J" uri="/WEB-INF/themes/pluto-default-theme.jsp">
<portlet context="/wsrp4j-proxyportlet" name="ProducerConfig"/>
<portlet context="/wsrp4j-proxyportlet" name="PortletConfig"/>
</page>
Po restartu serveru jsou na nove zalozce k dispozici 2 portlety pro konfiguraci ProxyPortletu: Producer Registry Configuration a Deployed Portlets Configuration.
V ProduceConfig portletu pridat noveho producenta (napr. ID=bea-test-portal, kde vsechny URL adresy jsou http://wsrp.bea.com:80/portal/producer. Na detailu noveho producenta se pri kliknuti na View Offered Portlets musi zobrazit 4 portlety.
V PortletConfig portletu je nyni mozno kliknutim na Add Portlet pridat novy vzdaleny portlet (napr. ID=BeaRacing, Remote Portlet Handle=portlet_8). Po uspesnem pridani je konfigurace nove portletu pridana do $PLUTO_HOME/webapps/wsrp4j-proxyportlet/WEB-INF/portlet.xm.
Nyni je mozne do $PLUTO_HOME/webapps/pluto/WEB-INF/pluto-portal-driver-config.xml pridat novy portlet:
<page name="WSRP4J" uri="/WEB-INF/themes/pluto-default-theme.jsp">
<portlet context="/wsrp4j-proxyportlet" name="ProducerConfig"/>
<portlet context="/wsrp4j-proxyportlet" name="PortletConfig"/>
<portlet context="/wsrp4j-proxyportlet" name="BeaRacing"/>
</page>
a pridat do $PLUTO_HOME/webapps/wsrp4j-proxyportlet/WEB-INF/web.xml fragmenty:
<servlet>
<servlet-name>BeaRacing</servlet-name>
<servlet-class>org.apache.pluto.core.PortletServlet</servlet-class>
<init-param>
<param-name>portlet-name</param-name>
<param-value>BeaRacing</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>BeaRacing</servlet-name>
<url-pattern>/PlutoInvoker/BeaRacing</url-pattern>
</servlet-mapping>

