Maschinensteuerung mit OPC und JBoss Middleware im Browser

Industrie 4.0 wird häufig als die vierte industrielle Revolution bezeichnet. Die Revolution, die sich dahinter verbirgt, bezieht sich auf die Kommunikation von verteilten (industriellen) Systemen. Daher umfasst ein großer Teil von Industrie 4.0 die verteilte Steuerung und Überwachung von Maschinen. In der Regel werden Industrieanlagen heutzutage von einer oder mehreren speicherprogrammierbaren Steuerungen (SPS) kontrolliert. In diesem Artikel zeigen wir, wie man mittels JBOSS EAP Middleware (Java EE) aus einem Webbrowser heraus eine Maschine mit SPS-Controller steuern kann [EAP]. Die SPS wird dabei über das herstellerunabhängige OPC-Protokoll gesteuert [OPC]. Hierzu läuft ein OPC-Server auf einem Rechner, der via Netzwerk mit der Maschine verbunden ist. OPC-Server kommunizieren SPS-spezifisch mit der Maschine und bilden die OPC-Schnittstelle nach außen ab. Um die Brücke in die Java-Welt zu schaffen, wird die Open-Source-Bibliothek Utgard aus dem OpenSCADA-Projekt verwendet, die eine Kommunikation mittels OPC-Schnittstelle ermöglicht.

Vollständiger Artikel: http://www.sigs.de/public/ots/2016/JS_OTS_IoT_2016.pdf/Kropp_Puth_Moeller_JS_OTS_IoT_16.pdf

 

MQTT als Brücke – Ein Technologie-Stack für IoT-Anwendungen

Alle IoT-Anwendungen haben ähnliche Herausforderungen auf dem Weg vom eigentlichen Sensor über Gateways bis hin zur Aggregation, Nutzung und gegebenenfalls Weiterleitung von Sensordaten zu bewältigen. Dieser Artikel stellt eine Architektur und insbesondere einen konkreten Technologie-Stack anhand einer Beispielanwendung vor. Als ein Standardprotokoll für das Internet of Things (IoT) hat sich MQTT etabliert. Daher wird hier das IoT mit standardisierter Middleware über MQTT integriert. Es wird ein kombinierter Temperatur- und Luftfeuchtigkeitssensor mit dem Bosch XDK und einer MICA-Box der Firma Harting eingesetzt. Ein maschinennaher MQTT-Broker und die JBoss-Middleware bringen diese zwei Welten zusammen.

Vollständiger Artikel: http://www.sigs-datacom.de/uploads/tx_dmjournals/kropp_JS_04_16_M7OU.pdf

Wartbare Rich Web Applications mit AngularJS – Teil 2

Im letzten Artikel haben wir anhand einer Demo-Anwendung veranschaulicht, wie sich mit AngularJS auf einfache Weise gut wartbare Rich Web Applications erstellen lassen. Die wichtigsten Konzepte von AngularJS wurden vorgestellt: Die Umsetzung des Model-View-Controller-Patterns, die Erweiterung von HTML durch Directives und das Routing zur Navigation innerhalb der Anwendung.

Dieser Artikel erläutert die Einbindung von AngularJS in einen Maven-basierten Build-Prozess und stellt vor, wie sich automatisierte Unit-Tests und Ende-zu-Ende-Tests für AngularJS-Anwendungen erstellen lassen.

Weiterlesen

Vortragsfolien: JPA – Der Persistenz-Standard in Java

Am 31.1.2013 präsentierte die akquinet AG gemeinsam mit der Gedoplan GmbH zwei Vorträge zum Thema JPA – der Java Persistenz-Standard. Die Veranstaltung wurde gemeinsam mit der Java User Group Berlin Brandenburg organisiert und fand im Hörsaal der Informatik der FU Berlin statt. Mit ca. 100 Teilnehmern und vielen Fragen an die Experten Michael Bouschen und Dirk Weil bestand ein großes Interesse an dem Thema.

Weiterlesen

Wartbare Rich Web Applications mit AngularJS – Teil 1

Rich Web Applications unterscheiden sich gegenüber Thin Web Applications im höheren Grad der Funktionalität und Komplexität, die klientenseitig statt serverseitig implementiert werden. Während bei typischen Thin-Client-Architekturen das User Interface pro Seite serverseitig generiert wird, sind Rich Clients eigenständige Anwendungen, die im Browser ausgeführt werden. Damit sind benutzerfreundlichere, performantere und offlinefähige Oberflächen möglich, die im Funktionsumfang mit Desktop-Anwendungen vergleichbar sind. Diese Eigenschaften, insbesondere Offlinefähigkeit, sind speziell auch für mobil nutzbare Anwendungen bedeutend.

HTML5 hat sich hierfür mittlerweile als Alternative zu Lösungen wie Flash, Java Applets und Silverlight etabliert und bietet gegenüber proprietären Produkten einen offenen plattformunabhängigen Technologiestandard. HTML und CSS beschreiben hierbei die statische Struktur und das Design der Oberfläche, während die klientenseitige Dynamik mittels neuer HTML5-APIs und JavaScript implementiert wird.

Die Entwicklung von Rich Web Clients mittels HTML und JavaScript wird jedoch durch Wartbarkeitsprobleme erschwert, insbesondere deshalb, weil die Kombination HTML und JavaScript keine Möglichkeit vorsieht, den Client sauber zu modularisieren und zu testen. AngularJS versteht sich als HTML-Erweiterung, die sich dieser Problematik annimmt und verspricht, die Entwicklung wartbarer JavaScript-/HTML-basierter Rich Web Applications zu ermöglichen.

In dieser Artikelserie stellen wir das JavaScript-Framework AngularJS vor. Dieser erster Artikel erläutert die grundlegenden Konzepte wie die Umsetzung des Model-View-Controller-Patterns, die Erweiterung von HTML durch sogenannte Directives und das Routing. Im zweiten Artikel wird die Integration von Unit- und Ende-zu-Ende-Tests sowie die Einbindung dieser in einen Maven-Build-Prozess gezeigt.
Weiterlesen

Lastverteilung und Failover für entfernte EJB Clients in EAP6 und JBoss AS 7

In den letzten Posts dieser Serie über die Clusterfähigkeiten der JBoss EAP6 und des AS7 ging es um grundlegende Konzepte, Clusterknoten im Domain-Mode verwalten, und skalierbare Hochverfügbarkeitscluster. In diesem Post wird es um den Zugriff von entfernten EJB Clients auf Clustersysteme gehen. Wir werden erklären, wie ein entfernter Java Client transparent auf EJB Komponenten zugreifen kann und dabei sowohl clientseitiges Failover als auch clientseitige Lastverteilung realisiert wird. Darüber hinaus werden wir kurz darstellen wie EJB Komponenten serverseitig konfiguriert werden müssen.

Weiterlesen

Skalierbare Hochverfügbarkeitscluster mit JBoss AS 7 und EAP 6

Übersicht

Im kürzlich erschienenen Blog-Post Clustering im JBoss AS 7/EAP 6 haben wir gezeigt, wie in der neuen EAP 6 und im JBoss AS 7 einfaches Clustering verwendet werden kann. Die EAP 6 ist im Grunde genommen ein AS 7 mit offiziellem RedHat-Support. Der Cluster, den wir in diesem Post verwendet haben, war relativ klein und schlicht. Dieser Post behandelt deutlich komplexere Cluster-Strukturen, wie man diese baut und wie man den neuen Domain-Mode für Cluster verwendet. Es gibt viele Wege größere JBoss Cluster-Umgebungen zu bauen und zu verwalten. Wir werden zwei Möglichkeiten zeigen, um das zu erreichen: Die eine verwendet Separierungstechniken, die auch für ältere JBoss-Versionen verwendet werden können und die andere nutzt ein Infinispan-Feature, das Distribution genannt wird.

Skalierbarkeit vs. Verfügbarkeit

Die größte Schwierigkeit beim Bauen eines Clusters ist es, sowohl hohe Verfügbarkeit als auch Skalierbarkeit zu erreichen.

Verfügbarkeit für einen Cluster bedeutet: Wenn ein Knoten ausfällt werden alle Sessions dieses Knotens nahtlos von einem anderen Knoten übernommen. Dies kann durch Session-Replikation erreicht werden. Session-Replikation ist vorkonfiguriert und aktiviert im ha Profil in der Datei domain.xml. Flache Replikation bedeutet, dass alle Sessions auf alle anderen Knoten kopiert werden: Bei vier Knoten mit je 1 GB Speicher kann der Cluster nur 1 GB Speicher nutzen, weil alle Knoten jeweils Kopien der anderen Knoten speichern. Der Cluster wird also nicht 4 * 1 GB = 4 GB Speicher haben. Wenn man weitere Knoten hinzufügt erhält man nicht mehr Speicher, man verliert sogar Speicher durch den anfallenden Overhead der Replikation. Allerdings erhält man eine höhere Verfügbarkeit und noch wichtiger: mehr Netzwerkverkehr ebenfalls verursacht durch den Overhead der Replikation (alle Änderungen müssen auf alle anderen Knoten verteilt werden). Diese Cluster-Topologie nennen wir vollständige Replikation.
Weiterlesen