Portale und Portlets

Caching (JSR-286)

Varianten des Caching

Expiration Cache

  • enthält ein einfaches "Verfallsdatum"
  • Output wird dann neu erzeugt
Setzen der Ablaufzeit auf 60 Sekunden, Inhaltz der Caches wird nicht mit anderen Usern geteilt
...
<portlet>
...
<expiration-cache>60</expiration-cache>
<cache-scope>private</cache-scope>
...
</portlet>
...

Validation Cache

  • Erweiterung des #Expiration Cache
  • es wird zusätzlich ein sogenannter Validation Token gesetzt
Nutzen es Validation-Caches
protected void doView(RenderRequest request, RenderResponse response) throws PortletException, java.io.IOException{
...
  //Pruefung auf Validation Token
  if(request.getETag() != null) {
    if(checkMarkupStillValid(request.getETag())){
      //Markup immer noch gueltig
      response.getCacheControl().etExpirationTime(30);
      response.getCacheControl().setUseCachedContent(true);
      return;
    }
  }
//Cache ausgelaufen bzw. kein ETag gesetzt --> Markup erzeugen
response.getCacheControl().setETag(etagID);
response.getCacheControl().setExpirationTime(30);

PrintWriter writer=response.getWriter();
writer.println("Hallo Caching");
...
}

Unterstützte Annotations

@RenderMode

  • ermöglicht es, einen beliebigen Methodennamen anstelle der doView-Methode zu wählen
Nutzen von @RenderMode
@RenderMode(name="view")
public void meineTolleRenderMethode(RenderRequest request, RenderResponse response) throws PortletException, IOException {
...}

@ProcessAction

  • dient als Annotation für die ActionRequest-Verarbeitung
Nutzen von @ProcessAction
public void doView(RenderRequest request, RenderResponse response) throws PortletException, java.io.IOException {
...
PortletURL aActionUrl=response.createActionURL();
aActionUrl.setParameter(ActionRequest.ACTION_NAME,"meineTolleActionMethode");
...
}

@ProcessAction(name="meineTolleActionMethode")
public void processMeineTolleAction(ActionRequest request, ActionResponse response) throws PortletException, IOException {
...}

@ProcessEvent

  • dient der Event-Unterstützung

Quelle

  1. Java-Magazin 3/2009, Seite 30-32