Fórum

Portlet deploy/Scheduler problem

Günther Neckritz, modificado 11 Anos atrás.

Portlet deploy/Scheduler problem

New Member Mensagem: 1 Data de Entrada: 30/12/12 Postagens Recentes
Hallo zusammen.
Ich bin noch ziemlich frisch in der Liferay-Materie und wühle mich gerade so durch.
Momentan versuche ich, ein Slide/-Diashow-Portlet zu schreiben (mit Vaadin). Soweit, so schön, ich bekomme meine Bilder geladen und auch angezeigt. Nun möchte ich allerdings einen Timer integrieren, der mir in regelmäßigen Abständen ein neues Bild anzeigt. Der Scheduler-Mechanismus in Liferay scheint ja eigentlich genau das richtige für sowas zu sein, aber irgendwie bekomme ich es nicht ans Laufen. Nach vielem googeln und dem Lesen vieler Beispiele sieht das Ganze bei mir jetzt folgendermaßen aus:
Mein Vaadin-Portlet:

public class TeasershowApplication extends Application implements MessageListener
{
...
public void receive(Message arg0) throws MessageListenerException
{
	System.out.println("Message received"); //Zum debuggen, reagiert momentan nicht
}

Die portlet-xml:

<!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" 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>TeasershowApplicationPortlet</portlet-name>
        <display-name>TeaserShow</display-name>
        
        <portlet-class>com.vaadin.terminal.gwt.server.ApplicationPortlet2</portlet-class>
        <init-param>
            <name>application</name>
            <value>de.playermanager.teasershow.TeasershowApplication</value>
        </init-param>
        
        <!--
          To enable displaying multiple Vaadin portlets on a page,
          they should all use the same widgetset. In that case, the
          widgetset can be configured on the portal level (parameter
          vaadin.widgetset) or here for each portlet.
        -->
        <!--
        <init-param>
            <name>widgetset</name>
            <value>com.vaadin.portal.gwt.PortalDefaultWidgetSet</value>
        </init-param>
        -->
        
        <!-- Supported portlet modes and content types. -->
        <supports>
            <mime-type>text/html</mime-type>
            <portlet-mode>view</portlet-mode>
            <!-- <portlet-mode>edit</portlet-mode> -->
            <!-- <portlet-mode>help</portlet-mode> -->
        </supports>
        
        <!-- Not always required but Liferay uses these. -->
        <portlet-info>
            <title>Teaser-Show</title>
            <short-title>Teaser-Show</short-title>
        </portlet-info>
    </portlet>
</portlet-app>

liferay-display.xml:

<!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->

<display>
    <category name="Vaadin">
        <portlet id="TeasershowApplicationPortlet" />
    </category>
</display>

web.xml:

<!--?xml version="1.0" encoding="UTF-8"?-->
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>TeaserShow</display-name>
	<context-param>
		<description>
		Vaadin production mode</description>
		<param-name>productionMode</param-name>
		<param-value>false</param-value>
	</context-param>
	<servlet>
		<servlet-name>TeasershowApplicationPortlet</servlet-name>
		<servlet-class>com.vaadin.terminal.gwt.server.ApplicationServlet</servlet-class>
		<init-param>
			<description>
			Vaadin application class to start</description>
			<param-name>application</param-name>
			<param-value>de.playermanager.teasershow.TeasershowApplication</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>TeasershowApplicationPortlet</servlet-name>
		<url-pattern>/TeasershowApplicationServlet/*</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>TeasershowApplicationPortlet</servlet-name>
		<url-pattern>/VAADIN/*</url-pattern>
	</servlet-mapping>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
</web-app>

Der liferay-portlet.xml habe ich folgendes hinzugefügt:

<portlet>
		<portlet-name>TeasershowApplicationPortlet</portlet-name>
		<scheduler-entry>
			<scheduler-event-listener-class>de.playermanager.teasershow.TeasershowApplication</scheduler-event-listener-class>
			<trigger>
				<simple>
					<simple-trigger-value>45</simple-trigger-value>
					<time-unit>second</time-unit>
				</simple>
			</trigger>
		</scheduler-entry>
	</portlet>


Was übersehe ich hier bzw. was mache ich falsch? Vielen Dank schon mal im Voraus.
thumbnail
Armin Cyrus Dahncke, modificado 11 Anos atrás.

RE: Portlet deploy/Scheduler problem

Junior Member Postagens: 81 Data de Entrada: 12/08/08 Postagens Recentes
Hallo Günther,

der Liferay Scheduler ist eigentlich für serverseitige (CRON)Jobs gedacht, in meinem Fall zum Beispiel zum aufräumen in der DB von alten Laufzeitdaten, zum importieren von regelmäßig bereitgestellten XML Dateien usw.. Wenn Du in Vaadin etwas im Browser nachladen möchtest schau dir mal "Poll" an bei Vaadin. Damit kann man z.B. eine versteckte Progressbar benutzen, damit der Browser vom server neue Daten abholt.

https://vaadin.com/web/matti/blog/-/blogs/1072952