Entfernte Portlets über WSRP bereitstellen

Ab Version 6.5.1 von CMS Fiona können mit unserem Portal Manager entfernte Portlets eines WSRP-Producers bereitgestellt werden. Dies geschieht mit Hilfe eines virtuellen Kontext-Pfades, der im Portal Manager angegeben wird. Ein solcher virtueller Kontext-Pfad verweist per URL auf eine WSDL-Datei (WSDL = Web Service Description Language), die beschreibt, wie auf den Service zugegriffen werden kann.

Dadurch, dass entfernte Portlets auf diese Weise eingebunden werden, verhalten sie sich wie Portlets des Portal Managers und können über die normale npspm-Syntax angesprochen werden.

Um WSRP-Portlets bereitzustellen, erweitern Sie bitte das ProxyPortletContainer-Bean in der Konfigurationsdatei webapps/PM/WEB-INF/pm.xml der betreffenden CMS-Instanz. Fügen Sie bitte das Property wsrpPathMapping mit einem Unterelement valuehinzu. Als Wert des value-Elements geben Sie bitte für jeden WSRP-Producer eine Zeile mit dem virtuellen Kontext-Pfad und der dazugehörenden WSDL-URL an. Beispiel:

/WS-ORA = http://portalstandards.oracle.com/portletapp/portlets?WSDL

Zeigt die URL auf eine WSDL-Datei, die Verweise auf externe Quellen enthält, die aufgrund von Zugriffsbeschränkungen im Netzwerk (Firewall o.ä.) nicht erreichbar sind, so laden Sie die WSDL-Datei herunter und referenzieren Sie sie mit file:/// über ihren Pfad im lokalen Dateisystem. Beispiel:

/WS-IBM = file:///var/temp/portalserver-ibm.wsdl

Hier ein exemplarischer Ausschnitt aus der Datei pm.xml:

<bean id="portletContainer" class="com.infopark.pm.portlet.ProxyPortletContainer">
  <property name="preferencesStorage">
    <bean class="com.infopark.pm.FilesystemPreferencesStorage" />
  </property>
  <property name="cacheManager" ref="cacheManager" />
  <property name="wsrpPathMapping">
    <value>
      /WS-ORA = http://portalstandards.oracle.com/portletapp/portlets?WSDL
      /WS-IBM = file:///var/temp/portalserver-ibm.wsdl
    </value>
  </property>
  <property name="webserviceRefreshInterval" value="0" />
</bean>

Die Änderung der Konfiguration muss durch einen Neustart des Application Servers abgeschlossen werden. Funktioniert die Kommunikation des Portal Managers mit dem Producer, können anschließend die Handles der verfügbaren Remote Portlets mit Hilfe der folgenden URL ermittelt werden:

http://mein.server:8080/PM/debug/

Ein ermitteltes Remote Portlet kann nun analog zu

<npspm includeportlet="/WS-ORA/portletHandle" />

in den Content eingebunden werden, wobei portletHandle das Handle des jeweils einzubindenden Portlets ist.

Weitere Propertys

  • webserviceRefreshInterval: Aktualisierungsintervall für die Liste der Remote Portlets (in Sekunden).

WSDL-Dateien verfügbar machen

Die WSDL-Datei, die den WSRP-Service beschreibt, enthält normalerweise Verweise auf Schemata oder Namensräume, die auf Webservern im Internet liegen (z.B. http://www.oasis-open.org/committees/wsrp/specifications/version1/wsrp_v1_bindings.wsdl, http://www.w3.org/XML/1998/namespace). Erlaubt es Ihre eigene Netzwerkkonfiguration nicht, dass der Portal Manager Verbindungen über HTTP/HTTPS außerhalb des Intranets oder der DMZ aufbaut, so müssen die Ziele der Verweise auf andere Art verfügbar gemacht werden, damit der Consumer die vollständige Beschreibung der entfernten Dienste erhält. Hierfür gibt es die folgenden Möglichkeiten.

Einsatz eines Proxy-Servers

Wenn es Ihre Netzwerk-Policy erlaubt, dass der Portal Manager über einen Proxy-Server Verbindungen ins Internet und zum Producer aufnimmt, können Sie den Applikationsserver, auf dem der Portal Manager eingesetzt wird, mit der Java-Option proxyHost und proxyPort starten.

Wenn Sie den Trifork-Server verwenden, können Sie diese Optionen in die Konfigurationsdatei rc.npsd.conf im bin-Verzeichnis der betreffenden CMS-Instanz aufnehmen. Beispiel:

  set conf(triforkArgs) [list server start -devel -vmargs=-server\
    -vmargs=-Xmx256m -vmargs=-Xms256m\
    -vmargs=-XX:MaxPermSize=128m -DproxyHost=mein.server \
    -DproxyPort=3128]

Bitte beachten Sie, dass damit allen Applikationen dieses Applikationsservers der Zugriff ins Internet über den Proxy-Server erlaubt wird.

Inkludierte Dateien beim Producer lokal bereitstellen

Konfigurieren Sie Ihren Producer so, dass er nur lokale XML-Dateien inkludiert bzw. passen Sie die WSDL-Datei des Producers dahingehend an. Die Referenzen in der WSDL-Datei können dann per Requests an den Producer aufgelöst werden.

Lokale Bereitstellung der WSDL-Datei beim Consumer

Wenn auf der Seite des Producers keine Änderung möglich ist, kann die WSDL-Datei einschließlich aller darin inkludierten XML-Dateien lokal verfügbar gemacht werden. Diese Variante ist am wenigsten flexibel, weil Änderungen beim Producer jedes Mal lokal nachvollzogen werden müssen.

Wählen Sie hierzu bitte über einen Browser die WSDL-URL an und speichern Sie sie lokal ab. Bearbeiten Sie diese Datei, suchen Sie darin alle imports zu externen Webservern, laden Sie diese externen XML-Dateien wieder über den Browser und speichern Sie sie lokal ab. Wiederholen Sie dies so lange, bis Sie alle externen inkludierten Dateien lokal abgespeichert haben. Editieren Sie alle gespeicherten Dateien und ändern Sie alle externen Bezüge so, dass sie jeweils auf die lokalen Kopien verweisen. Legen Sie alle Dateien im Applikationsserver an einem Ort ab und konfigurieren Sie in der Datei pm.xml das wsrpPathMapping für diesen Producer als lokale WSDL-Datei.