Docker + Netbeans + Liferay

Für eine einfache Integration von Docker für die Entwicklung nutze ich Netbeans IDE in Version 8. Die integrierte Docker Unterstützung vereinfacht es, neue Application Server aufzusetzen und für spätere Anwendungen zu verteilen.

Im Vorfeld muss die lokale Docker Installation angepasst werden. Standardmäßig hört Docker auf keinen TCP Socket, das muss customized werden.

Core OS gibt eine einfache Anleitung hierfür vor:

Customizing docker

The Docker systemd unit can be customized by overriding the unit that ships with the default Container Linux settings. Common use-cases for doing this are covered below.

Enable the remote API on a new socket

Create a file called /etc/systemd/system/docker-tcp.socket to make Docker available on a TCP socket on port 2375.

<code><span class="nn">[Unit]</span>
<span class="py">Description</span><span class="p">=</span><span class="s">Docker Socket for the API</span>

<span class="nn">[Socket]</span>
<span class="py">ListenStream</span><span class="p">=</span><span class="s">2375</span>
<span class="py">BindIPv6Only</span><span class="p">=</span><span class="s">both</span>
<span class="py">Service</span><span class="p">=</span><span class="s">docker.service</span>

<span class="nn">[Install]</span>
<span class="py">WantedBy</span><span class="p">=</span><span class="s">sockets.target</span>
</code>

Then enable this new socket:

<code>systemctl <span class="nb">enable </span>docker-tcp.socket
systemctl stop docker
systemctl start docker-tcp.socket
systemctl start docker
</code>

Test that it’s working:

<code>docker -H tcp://127.0.0.1:2375 ps</code>

Quelle: https://coreos.com/os/docs/latest/customizing-docker.html

Netbeans einrichten

Über den Reiter: Services -> Docker könnt ihr mit einem Rechtsklick eine neue Docker Instanz hinzufügen. Hierbei wäre es möglich sogar Remote Systeme anzuschließen, für Teams die auf einer zentralen Installation arbeiten.

Durch die vorhergehende Konfiguration von Docker sollte Successfull beim Test Connection erscheinen.

Docker + Liferay Image

Ich verwende aktuell noch ein Liferay 6.2 Image im Docker Umfeld für ein Projekt.

Daher habe ich auf das bereits erstelle Image von snasello zurück gegriffen.

Das könnt ihr hier https://hub.docker.com/r/snasello/liferay-6.2/

für eure Docker Installation herunterladen.

Liferay in Netbeans

Alle Docker Container werden anschließend im Netbeans gelistet. Ihr könnt den Liferay Container via Rechtsklick „run“ starten. Anschließend wird der Name definiert und das Port- Mapping.

Nachdem ihr „finish“ geklickt habt, wir der Container gestartet. In eurer Console erhaltet ihr dementsprechend den output.

How To Deploy Packages on Liferay Docker Container!

Um Portlets, Themes und Co auf dem Docker Container zu deployen, muss das deployment Verzeichnis lokal gemappt werden. Hierbei könnt ihr folgenden Befehl verwenden:

Laut Docker Dokumentation soll das über den Parameter -v möglich sein.

Quelle: https://docs.docker.com/engine/tutorials/dockervolumes/

Sobald es funktioniert, update ich den Beitrag!

Connect to Docker via Shell

Um den Docker Container zu konfigurieren oder Installationen / Konfigurationen vorzunehmen könnt ihr direkt via Shell auf das System zugreifen.

<code><span class="pln">sudo docker exec </span><span class="pun">-</span><span class="pln">i </span><span class="pun">-</span><span class="pln">t {name-of-docker-container} </span><span class="pun">/</span><span class="pln">bin</span><span class="pun">/</span><span class="pln">bash</span></code>

camunda cdi and multiple datasources

Ich durfte mich die letzten Tage mit einem ziemlich fiesen Fehler rum ärgern.

Wir optimieren unsere Bestellungen und vor allem automatisieren wir unseren gesamten Verarbeitungsprozess mit dem Backend.

Der gesamte Bestand und Bestellverfahren wird automatisch mit dem Shop, dem Backend und dem Versender abgeglichen.

Der Prozess zur Bestellübergabe wurde in camunda definiert. Die Service Tasks greifen auf CDI Beans zu. Diese Beans greifen auf JPA Ressourcen zurück.

Es wurden Projektbedingt 2 Resourceprojekte mit verschiedenen JTA- Resources definiert, die aber aufgrund der Architektur auf die gleiche Datenbank zugreifen.

 

Durch die schnelle Verarbeitung des Prozesses kommt  der Application Server durcheinander und Crasht bei der Verarbeitung der Transaktionen.  Einer der Ressourcenmanager lockt die Tabelle und verhindert das weitere verarbeiten der Daten.

Leider ist es mir nicht gelungen eine andere Lösung zu finden als beiden JPA Projekten der gleichen JNDI- Resource zu geben.  🙁

Jemand noch eine andere Idee?

JEE + Microservices, ein neuer IT- Kosmus

Wie man des öfteren ließt werden Micro-Services so etwas wie das nächste größere Ding sein für Moderne IT- Infrastruktur. Weg von großen Anwendungen die viele Daten zentralisiert speichern und nur im eigenen Universum zur Verfügung stellen. Es werden immer mehr Artikel über Micro-Services veröffentlicht. Kleine Datenmengen die sehr schnell zur Verfügung gestellt werden können. Dabei wird die Infrastruktur ziemlich zerrissen – und meiner Meinung nach – eine Art gewollte Unübersichtlichkeit geschaffen.

Da ich mich stetig mit der Entwicklung im JEE Umfeld beschäftige und eigentlich nur über Podcasts, Tutorials und Do-It-Yourself Lerne und meinen Wissensstand erweitere finde ich es nur fair, euch das leben an dieser Stelle etwas einfacher zu machen 😉

Im JEE7 Umfeld und der Verbindung von CDI- Beans ist es sehr einfach JAX-RS Web- Services zu erstellen. Ich werde die Tage ein Tutorial schreiben um euch zeigen zu können, wie einfach man die Kombination von

  • Maven
  • JEE7
  • JAX-RS

funktioniert.

Bis dahin.

PayOne + JEE Application

PayOne ist ziemlich umständlich zu integrieren. Für einen der großen Zahlungsdienstleister haben die Macher von PayOne ganz schön was nachzuholen. Ich persönliche finde PayOne vom Aufbau her ziemlich altmodisch. Man merkt, das dass Webportal des Zahlungsdienstleisters schon etwas in die Jahre gekommen ist. Ebenso der Komfort für die Kunden. Einen großen Pluspunkt hat PayOne. Die Integration in bestehende Systeme. Siehe magento – commerce, shopware, oxid, demandware oder intershop. Dadurch das sie in zahlreichen Großen Unternehmen zum Bestand zählen bietet eine feste Kundenbasis ein regelmäßigen Zahlungsfluss.

Wir sind gerade dabei die Schnittstellen für eine JEE- Anwendung anzubinden. Leider ist mir keine fertige Library im Netz über die Füße gefallen die ich nutzen hätte können. Somit kann ich wieder von vorne anfangen.

PayOne bietet seit einiger Zeit eine „Frontend“ – Lösung an. Hierbei wird über eine dynamische URL ein iFrame inkludiert oder die Seite aufgerufen über der die Zahlung abgewickelt werden kann. Dabei sind mir, im Gegensatz zur Konkurrenz z.B. Adyen wieder einige Nachteile aufgefallen.

  • Es kann lediglich eine Zahlungsart angeboten werden.
  • Die Implementierung ist ziemlich aufwendig da sehr genau Reihenfolgen eingehalten werden müssen.
  • Standard für die Implementierung ist PHP.
  • Relativ langsame Abwicklung des Zahlungsprozesses.

Ich hatte die letze Zeit öfters Gelegenheit einige der Zahlungsdienstleister ausprobieren zu können. Deren Schnittstellen zu testen und wie man darauf reagieren kann. Mir ist aufgefallen das Adyen an dieser Stelle sehr stark ist und mit einfachsten Mechanismen gute Zahlungsmöglichkeiten anbietet.

Unsere Entscheidung ist etwas ungewöhnlich. Wir haben uns trotz der Nachteile für PayOne entschieden. Folgende Gründe haben dafür gesprochen:

  • Unser Sachbearbeiter war stets bemüht alle Informationen die nötig waren zu bekommen
  • Kooperativ mit uns zusammen zu arbeiten
  • Gebühren und Kosten zu minimieren, so das wir als StartUp ebenfalls eine Chance haben
  • Schnelle Reaktion bei Support-Anfragen
  • Unterstützung beim Implementierungsaufwand

Trotz der gestiegenen Aufwände bei der Implementierung sollte es möglich sein in kurzer Zeit eine kleine Library für euch zur Verfügung stellen zu können die die Zahlungsabwicklung mit dem Frontend-Interface abzubilden.

 

Bis dahin

Euer Johannes

Neues Jahr, neues Glück

Ich habe es nicht mehr geschafft letztes Jahr den ein oder anderen Beitrag zu verfassen. Dafür noch an alle die meinen Blog seit Jahr und Tag verfolgen.

!!! SORRY !!!

Ich freue mich dennoch darüber das immer wieder neue Besucher meinen Block finden und auch lesen. Es wird die nächste Zeit mal wieder das ein oder andere Tutorial geben. Speziell im Bereich Android versuche ich euch wieder das ein oder andere zu zeigen. Die neuen Benutzeroberfläche für das wohl meist verbreitete mobile Betriebssystem weltweit ist ziemlich cool, übersichtlich und scheint relativ intuitiv bedienbar zu sein.

Ich freue mich das ich endlich mal wieder geschafft habe ein paar Zeilen zu schreiben. Bis die Tage. Jo. 😉

Kurz in eigener Sache und zum Sport

Hey zusammen, wie der ein oder andere mittlerweile mitbekommen hat bin ich aktiver Crossfitter, Nein, ich mache das nicht weil ich meine Urinstinkte wecken lassen möchte oder weil es mir gefällt mich täglich anbrüllen zu lassen. Auch finde ich Aussagen wie Weichei eher für unangepasst in Boxen.

Es geht um Teamgeist, seine Leistung zu verbessern ein besseres Körpergefühl für sich zu entwickeln und vor allem dem eigenen Schweinehund den Kampf anzusagen.

Games2013_WomenZigZagSprintDaher bin auch ich nicht vollkommen unvoreingenommen, aber ich finde es gut als Allrounder, der mittlerweile über die Jahre sehr viele verschiedene Sportarten (Fussball, Handball, Kickboxen, All-Style-Karate, Mountainbiken, Skifahren, Inlinern, klassiches Fitnessstudio, Laufen, Hindernislaufen etc.) ausgeübt hat, sagen zu können das es fast keine bessere Alternative gibt sowohl Herz und Kreislauf zu festigen, seine Muskulatur zu stabilisieren und das unter Aufsicht!

1899473_1443735389195655_1895774167_o

Letzes Jahr hat mich ein kleiner Bandscheibenvorfall erwischt, leider sitze ich auch den ganzen Tag zu meist gegen 10 -12 Stunden vor dem Rechner und Tippe unverständliche Zeichen zu tausenden in den Flimmerkasten. Wenn die Tippse vorüber ist kann es auch noch dazu kommen das diverse Onlinegames und Shooter den Abend füllen können wenn man mal wieder nichts anderes zu tun hat. Quasi weiter sitzend. Ich liebe es aber auch an die frische Luft zu kommen. Mountenbiken, Laufen, Skifahren, Bouldern, Inlinern, Paintballspielen und was einem sonst noch einfällt. Meistens habe ich auch den Drang dazu es etwas zu übertreiben und somit – meine Crossfiter Kollegen der Box Kulmbach können das bezeugen – artet es ab und an mal in dem einen oder anderen Unfall aus. 😉

Aber ich lenke zu sehr vom Thema ab. Ich habe heute durch Zufall einen Blogeintrag vom Stern gelesen. Alexandra Kraft, scheinbar (ich spekuliere) selbst nie in einer Crossfit Box teilgenommen da sie über Preise in New York schwadruliert die 100 Dollar oder mehr kosten können. Abwertend über – als Drillsergeant betitelte – Trainer oder gar Weicheiermentalität. Für meine Verhältnisse finde ich diesen Artikel ziemlich belustigend, Crossfit kommt viel härter rüber als es ist. Natürlich kann es sein das es mal lauter wird, aber das dient der Motivation – wie es auch im Blogeintrag von Alexandra richtig, aber auch abwertend erkannt wurde. Um die letzen Reserven den Schweinehund aus seinem Häuschen zu jagen fehlt einem selbst ab und an die Überwindung und da kommt der Teamgeist der Crossfitter heraus. Anfeuern, nicht locker lassen und seine Mitstreiter so lange unter die Arme kitzeln bis die letze Übung, die letze Wiederholung vollendet wurde. Gehört dazu, egal bei welcher Sportart. Ich kann nicht im Wettkampf ab der Hälfte aufhören und gehen. Ich werde auch bei einem Turnier vermeiden vorzeitig auszuscheiden oder im Fall eines Läufers einen Marathon nicht nach 10 Kilometern abbrechen. Im Fall von Crossfit ist jedes WOD sein eigener kleiner Wettkampf, in meiner Leistungsgruppe. Kann ich keine Liegestütze mache ich sie auf den Knien. Kann ich keine Klimmzüge, gehe ich an die Ringe und skaliere mir mein Gewicht so zu Recht das ich es schaffe mein WOD durchzuhalten. Natürlich sollte das Ganze auch anstrengend sein, immerhin will man keine 2Stunden dafür in Kauf nehmen.

c2e0e164d9124a2a2e6551b895635ea0-1684ced9cba38c8aea3c3773fabd59ba

Wenn ich dagegen Abschnitte wie den folgenden Lese, weiß ich wirklich nicht ob sich Alexandra schon ernsthaft mit der Materie beschäftigt hat.

Heute dagegen ist Fitness harte Arbeit. Der Spaß ist vorbei. Es geht um maximalen Muskelaufbau in kürzeste Zeit. Doppelt gut, wenn das alle noch in die Mittagspause passt. Es gilt: Kein Schmerz, kein Gewinn.

 

Das Prinzip ist einfach und schmerzhaft. Durch systematische Überbelastung soll maximaler Trainingserfolg erzielt werden. Ob das gesund für Muskeln, Herz und Kreislauf ist, hat noch keiner vernünftig belegt. Die Zahl der Anhänger wächst aber trotzdem dramatisch. Das wird auch nicht davon gebremst, dass zahlreiche Kardiologen vor der Überlastung, vor allem für Ungeübte, warnen.

 

Lustig ist das längst nicht mehr. Wer nicht durchhält, gilt als Weichei. Und wer es lieber entspannt mag, als Zeitverschwender. Wenn ich theoretisch in sieben Minuten fit werden kann, warum soll ich dann eine halbe Stunde meiner wertvollen Zeit dafür hergeben? Der perfekte Sport für ein Land wie die USA, in dem es für Arbeitnehmer keinen gesetzlichen Urlaub gibt.

Der Schlusssatz verrät alles 😉

Und umso öfter ich dabei zuschaue, umso sicherer bin ich, dass Cross Fit nichts für mich ist.

Alle Sportarten haben ihre Eigenheiten, alles macht unterschiedlich Spaß und fördert, fordert seinen Körper. Aber man sollte nicht so herablassend über eine Sportart schreiben die man selbst nur aus der Ferne beäugt.

JSPWiki in glassfish

Ich habe vor kurzem einen Application- Server von glassfish 4 auf 4.1 geupdatet. Problem, Jspwiki weigert sich Umlaute korrekt dar zu stellen.

Hat schon mal jemand ähnliche Probleme mit dem aktuellen glassfish und eine Lösung parat?

Meine Lösung derzeit ist ein aktueller tomcat 8 mit einer jdk 7. Leider wird von jspwiki kein Java 8 voll unterstützt.

Für Tipps wäre ich dankbar.

PS: Konfiguriert ist das gesamte System mit UTF-8. Sowohl in custom.properties als auch auf dem application server. Auch das local File encoding steht auf UTF-8. Das gesamte JSPWiki wird falsch dargestellt. Sowohl die Inhalte als auch die Seiten.