{"id":7417,"date":"2021-08-30T16:05:19","date_gmt":"2021-08-30T14:05:19","guid":{"rendered":"https:\/\/u-labs.de\/portal\/?p=7417"},"modified":"2021-08-30T16:05:20","modified_gmt":"2021-08-30T14:05:20","slug":"jsps-in-hcl-connection-anpassen-um-z-b-design-erweiterungen-aenderungen-vorzunehmen","status":"publish","type":"post","link":"https:\/\/u-labs.de\/portal\/jsps-in-hcl-connection-anpassen-um-z-b-design-erweiterungen-aenderungen-vorzunehmen\/","title":{"rendered":"JSPs in HCL Connection anpassen, um z.B. (Design) Erweiterungen\/\u00c4nderungen vorzunehmen"},"content":{"rendered":"<p>HCL Connections basiert auf Java und nutzt JSP als serverseitige Platform zur Generierung der dynamischen Seiten. Verschiedene JSPs k\u00f6nnen angepasst werden. Es gibt verschiedene Gr\u00fcnde daf\u00fcr, meist geht es um Anpassungen: Beispielsweise l\u00e4sst sich das Navigationsmen\u00fc ver\u00e4ndern oder man kann eigenen CSS\/JavaScript Code einf\u00fcgen. Zwar erm\u00f6glicht dies auch der Customizer, der als Reverse-Proxy vor Connections geschaltet wird. Die JSPs haben dennoch ihre Daseinsberechtigung. Beispielsweise immer dann, wenn serverseitige Logik ben\u00f6tigt wird, die man clientseitig mit JS nicht abbilden kann. Oder auch f\u00fcr den Fall, dass der Customizer nicht installiert ist. Falls nur kleinere Anpassungen vorgenommen werden sollen, sind die JSPs eine Alternative, die ohne Erweiterung der Infrastruktur genutzt werden k\u00f6nnen.<\/p>\n<p>JSP-\u00c4nderungen funktionieren wie folgt: Es gibt &#8222;vanilla&#8220; JSPs f\u00fcr jede Anwendung. Wir k\u00f6nnen diese auf Ebene der Anwendung \u00fcberschreiben, damit eine bestimmte \u00c4nderung z.B. nur in Wikis oder Foren greift. Bestimmte JSPs wie <strong>header.jsp<\/strong>, <strong>footer.jsp<\/strong> oder <strong>login.jsp<\/strong> sind global genutzt und k\u00f6nnen auch global \u00fcberschrieben werden. M\u00f6chte man z.B. im gesamten Connections eine andere Schrift setzen, w\u00e4re die <strong>header.jsp<\/strong> Datei daf\u00fcr geeignet.<\/p>\n<p>Der Basis-Zielordner ist immer <strong>${SHARED_DIRECTORY}\/customization<\/strong>, zum Beispiel <strong>\/opt\/IBM\/shared\/customization\/<\/strong>.<\/p>\n<p><strong>Erstellt mit HCL Connections v7.0.0.0 Build IC7.0_Integration_20210423-1915<\/strong><\/p>\n<h2 class=\"wp-block-heading\">\u00dcberschreiben von JSPs einer bestimmten Anwendung<\/h2>\n<p>Die JSPs finden wir im Pfad <strong>\/opt\/IBM\/WebSphere\/AppServer\/profiles\/CnxNode01\/installedApps\/CnxCell\/Wikis.ear\/wikis.web.war\/nav\/templates<\/strong>, wobei <strong>CNXNode01\/CnxCell<\/strong> entsprechend der WebSphere Umgebung zu setzen sind. Wikis.ear ist in diesem Beispiel die Anwendung, welche angepasst werden soll. In unserem Customization-Directory kann f\u00fcr jede Anwendung ein Unterordner erstellt werden. Er hei\u00dft wie die Anwendung selbst, jedoch in Kleinbuchstaben. <a href=\"https:\/\/help.hcltechsw.com\/connections\/v7\/admin\/customize\/t_customize_find_custom_directory.html\" target=\"_blank\" rel=\"nofollow\">Eine \u00dcbersichtsliste findet man hier in der Dokumentation<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">\u00dcberschreiben von globalen JSPs<\/h2>\n<p>M\u00f6chten wir globale JSPs wie unter anderem z.B. header.jsp oder footer.jsp in der gesamten Connections-Umgebung anpassen, kopieren wir die jeweiligen Ansichten aus einer beliebigen Anwendung. Beispielsweise Wikis. Das Basis-Zielverzeichnis ist  <strong>${SHARED_DIRECTORY}\/customization\/common<\/strong>, ab hier gilt die Verzeichnisstruktur der Anwendung. Am besten legen wir den Basispfad zun\u00e4chst an, da er standardm\u00e4\u00dfig nicht existiert:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">mkdir -p \/opt\/IBM\/shared\/customization\/common\/nav\/templates<\/code><\/pre>\n<p>Nun kopieren wir im Beispiel die header.jsp aus der Wikis-Anwendung<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">cp \/opt\/IBM\/WebSphere\/AppServer\/profiles\/CnxNode01\/installedApps\/CnxCell\/Wikis.ear\/wikis.web.war\/nav\/templates\/header.jsp \/opt\/IBM\/shared\/customization\/common\/nav\/templates<\/code><\/pre>\n<p>Die Zieldatei <strong>\/opt\/IBM\/shared\/customization\/comm<\/strong>on\/nav\/templates\/header.jsp kann nun ver\u00e4ndert werden. Zur Demonstration f\u00fcgen wir nach dem letzten schlie\u00dfenden &lt;\/div&gt; Tag eine \u00dcberschrift ein. Diese befindet sich dadurch sp\u00e4ter in der Navigation, aber zum Testen spielt das keine Rolle.<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">418 --%&gt;&lt;\/div&gt;&lt;%--\n\nwird zu\n\n418 --%&gt;&lt;\/div&gt;&lt;h1&gt;Dies ist eine Anpassung&lt;\/h1&gt;&lt;%--<\/code><\/pre>\n<h2 class=\"wp-block-heading\">So werden die \u00c4nderungen wirksam<\/h2>\n<p>Um die \u00c4nderungen wirksam zu machen, muss entweder die jeweilige Anwendung (hier ist das die Homepage) per ISC neu gestartet werden. Oder man setzt die Umgebungsvariable <strong>CONNECTIONS_CUSTOMIZATION_DEBUG <\/strong>(siehe unten). Letzteres ist vor allem f\u00fcr das Testen interessant, da man so nicht st\u00e4ndig h\u00e4ndisch neu starten muss.<\/p>\n<p>Ergebnis:<\/p>\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-50.png\"><img loading=\"lazy\" decoding=\"async\" width=\"735\" height=\"121\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-50.png\" alt=\"\" class=\"wp-image-7418\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-50.png 735w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-50-300x49.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-50-70x12.png 70w\" sizes=\"auto, (max-width: 735px) 100vw, 735px\" \/><\/a><\/figure>\n<p>Bei globalen \u00c4nderungen ist zu beachten, dass diese nur in den Anwendungen greifen, die neu gestartet wurden! Wenn also z.B. Wikis neu gestartet wurde, sind die \u00c4nderungen dort aktiv &#8211; in z.B. Blogs, Foren, etc. jedoch nicht. Falls es Probleme gibt, empfehle ich Common ebenfalls neu zu starten bzw. f\u00fcr den Testbetrieb am besten das automatische Neu laden zu aktivieren (siehe folgender Abschnitt).<\/p>\n<h2 class=\"wp-block-heading\">JSP-\u00c4nderungen in Echtzeit darstellen, ohne h\u00e4ndische Neustarts<\/h2>\n<p>Connections besitzt einen Debugmodus, der die JSPs alle paar Sekunden von der Festplatte l\u00e4dt. In der ISC \u00f6ffnen wir die WebSphere-Variablen:<\/p>\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-51.png\"><img loading=\"lazy\" decoding=\"async\" width=\"620\" height=\"114\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-51.png\" alt=\"\" class=\"wp-image-7419\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-51.png 620w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-51-300x55.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-51-70x13.png 70w\" sizes=\"auto, (max-width: 620px) 100vw, 620px\" \/><\/a><\/figure>\n<p>Dort nach <strong>CONNECTIONS_CUSTOMIZATION_DEBUG <\/strong>suchen. Steht unten <strong>Filtered total: 0<\/strong> muss die Variable wie folgenden gezeigt angelegt werden. Ansonsten gen\u00fcgt es, ihren Wert auf <em>true <\/em>zu \u00e4ndern.<\/p>\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-52.png\"><img loading=\"lazy\" decoding=\"async\" width=\"813\" height=\"532\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-52.png\" alt=\"\" class=\"wp-image-7420\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-52.png 813w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-52-300x196.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-52-768x503.png 768w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-52-70x46.png 70w\" sizes=\"auto, (max-width: 813px) 100vw, 813px\" \/><\/a><\/figure>\n<p>Muss die Variable erstellt werden, ist es erforderlich, zun\u00e4chst oben einen Scope (Cell) auszuw\u00e4hlen. Dann ist es m\u00f6glich, \u00fcber den <strong>New<\/strong> Button neue Variablen anzulegen.<\/p>\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-53.png\"><img loading=\"lazy\" decoding=\"async\" width=\"439\" height=\"348\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-53.png\" alt=\"\" class=\"wp-image-7421\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-53.png 439w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-53-300x238.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-53-70x55.png 70w\" sizes=\"auto, (max-width: 439px) 100vw, 439px\" \/><\/a><\/figure>\n<p>Name: CONNECTIONS_CUSTOMIZATION_DEBUG\r\nWert: true<\/p>\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-54.png\"><img loading=\"lazy\" decoding=\"async\" width=\"533\" height=\"470\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-54.png\" alt=\"\" class=\"wp-image-7422\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-54.png 533w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-54-300x265.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-54-70x62.png 70w\" sizes=\"auto, (max-width: 533px) 100vw, 533px\" \/><\/a><\/figure>\n<p>Mit <strong>OK <\/strong>und anschlie\u00dfend <strong>Save<\/strong> best\u00e4tigen. <\/p>\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-56.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"177\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-56-1024x177.png\" alt=\"\" class=\"wp-image-7424\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-56-1024x177.png 1024w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-56-300x52.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-56-768x132.png 768w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-56-70x12.png 70w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2021\/08\/grafik-56.png 1490w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<p>Anschlie\u00dfend alle AppsCluster neu starten. Alternativ kann man auch den ganzen Node neu starten, das ist gerade auf Testsystemen oft einfacher:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">cd \/opt\/IBM\/WebSphere\/AppServer\/profiles\/CnxNode01\/bin\/\n.\/stopNode.sh -stopservers -username wasadmin -password cnx\n.\/startNode.sh<\/code><\/pre>\n<p>Nach dem Neustart werden JSP-\u00c4nderungen automatisch wirksam. Es dauert jedoch ein paar Sekunden, bis diese greifen. Daf\u00fcr spart man sich den h\u00e4ndischen Neustart, der deutlich l\u00e4nger dauert. Gerade wenn mehrere Anwendungen involviert sind, denn ansonsten m\u00fcsste man die alle von Hand stoppen und wieder starten.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>HCL Connections basiert auf Java und nutzt JSP als serverseitige Platform zur Generierung der dynamischen Seiten. Verschiedene JSPs k\u00f6nnen angepasst werden. Es gibt verschiedene Gr\u00fcnde daf\u00fcr, meist geht es um Anpassungen: Beispielsweise l\u00e4sst sich das Navigationsmen\u00fc ver\u00e4ndern oder man kann eigenen CSS\/JavaScript Code einf\u00fcgen. Zwar erm\u00f6glicht dies auch der Customizer, der als Reverse-Proxy vor Connections &#8230;<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[765],"tags":[927,926],"class_list":["post-7417","post","type-post","status-publish","format-standard","hentry","category-hcl-connections","tag-anpassen","tag-customization"],"_links":{"self":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/7417","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/comments?post=7417"}],"version-history":[{"count":2,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/7417\/revisions"}],"predecessor-version":[{"id":7426,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/7417\/revisions\/7426"}],"wp:attachment":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media?parent=7417"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/categories?post=7417"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/tags?post=7417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}