Chia – Tipps und Tricks

Chia Consolen Anwendung

Viele Aufgaben lassen sich auch ohne GUI auf der Konsole erledigen. Die dazu nötige Executable findest du hier:

Windows:
C:\Users\USERNAME\AppData\Local\chia-blockchain\app-1.2.2
Ein guten Einstieg bietet die Chia Hilfe:
chia.exe -h

Linux:
/usr/lib/chia-blockchain/resources/app.asar.unpacked/daemon
Ein guten Einstieg bietet die Chia Hilfe:
./chia -h

Chia Keys anzeigen

Mit folgendem Befehl kannst du dir deine Chia Adressen anzeigen lassen. Wie du zur Chia.exe kommst siehst du im oberen Punkt.
chia keys show

Ergebnis:

Fingerprint: 12345678
Master public key (m): 12345678
Farmer public key (m/12381/8444/0/0): 12345678
Pool public key (m/12381/8444/1/0): 12345678
First wallet address: 12345678

Blockchain und Wallet auf anderen Computer übertragen

Das Herunterladen der Chia Blockchain dauert mitunter viele Stunden oder gar Tage. Wird nun eine zweite Maschine benötigt, z.B. zum Farmen, ist es Sinnvoll diese Zeit einzusparen. Zum Glück lässt sich die Blockchain und die Wallet von einem Computer auf den anderen übertragen. Dies geht auch zwischen Windows und Linux Systemen. Getestet mit Windows 10 und Ubuntu 20.04.
Dazu must du nur die beiden Verzeichnisse „db“ und „wallet“ kopieren. Du findest sie in folgendem Verzeichnis:

Windows (im User Verzeichnis):
C:\Users\USERNAME\.chia\mainnet

Linux (im User Verzeichnis. Falls die Ubuntu GUI verwendet wird. Strg + H drücken um dir die versteckten Verzeichnisse anzuzeigen):

~/.chia/mainnet

Logfiles anschauen

Chia erstellt standardmäßig Logfiles. Diese sind hilfreich um zu Prüfen ob alles Rund läuft, oder um im Fehlerfall eine schnellere Fehlerbehebung zu ermöglichen. Das Standard Log Level ist WARNING. Dieses kann nach INFO geändert werden um mehr Informationen zu erhalten. Die Konfiguration findet sich hier:

C:\Users\USERNAME\.chia\mainnet\config\config.yaml

Suche hier die Zeile
log_level = WARNING
und ändere sie auf INFO. Anschließend muss der Chia Client neu gestartet werden. Beim editieren der Datei must du Aufpassen die Formatierung nicht zu ändern. Bei dem verwendeten YAML Format ist die Einrückung der Zeilen für die Funktion wichtig!

Sobald Chia neu gestartet ist, solltest du hier das Log File sehen. Chia verwendet Logfile Rotation. d.h. es werden nach einiger Zeit mehrere Logfiles erstellt und das älteste gelöscht.
C:\Users\USERNAME\.chia\mainnet\log\debug.log

Verbindungsprobleme beheben

In der Regel sollte der Chia Client ohne manuelle Einstellungen am Router funktionieren. Sollte es doch einmal Probleme mit der Verbidnung geben, kannst du eine Portweiterleitung von Port 8444 am Router anlegen, die auf deinen Chia Rechner verweist.
Weitere Fehlerquellen die du checken kannst sind die Windows Firewall oder dein Virenscanner.

Im Chia Client kannst du unter „Full Node -> Connections -> Connect to other Peers“ versuchen weitere Peer Adressen hinzuzufügen:

node.chia.net:8444
node-eu.chia.net:8444
node-apne.chia:8444

Energieoption für Festplatte anpassen

Die Chia Blockchain fragt regelmäßig die Challenges für den nächsten Block ab. Dazu werden die Plots auf der Festplatte gescannt und ggf. ein Hashwert geliefert der zu der Challenge passt. Diesem Vorgang steht nur eine gewisse Zeit zur Verfügung. Antwortet das System nicht schnell genug verfällt die Chance die Challenge zu gewinnen. Daher sollten die Festplatten auf denen die Plots liegen immer Laufen um die Zugriffszeit so gering wie möglich zu halten. Unter Windows kann man dies in den Energie Optionen einstellen.

Systemsteuerung 🠖 Hardware und Sound 🠖 Energieoptionen 🠖 Energiesparplan bearbeiten

Chia – Plots Erstellen mit Windows PowerShell

Das Erstellen von Chia Plots kann nicht nur über die Chia GUI erfolgen sondern auch auf der Konsole. Dies hat den Vorteil, das kein Full Node betrieben werden muss und der Overhead der GUI entfällt. Außerdem hast du durch die Konsolenausgabe immer einen guten Überblick darüber, in welcher Phase der Plot Erstellung sich der Prozess gerade befindet. Dieser Artikel zeigt dir wie du ein kleines PowerShell Skript anlegst um Plots zu erzeugen.

Als Basis sollte das Skript im Download dienen, oder du legst es mit einem Texteditor deiner Wahl an, fügst den unten stehenden Startbfehl ein und benennst die Dateiendung in „.ps1″um.

invoke-expression ‘cmd /c start powershell -NoExit -Command {cd „C:\Users\USERNAME\AppData\Local\chia-blockchain\app-1.2.2\resources\app.asar.unpacked\daemon\“;$host.ui.RawUI.WindowTitle = „TITLE„; start-sleep 0 ; .\chia.exe plots create -k 32 -b 4000 -n 999 -r 4 -t C:\PATHTOTEMP -d C:\PATHTOFINALDIR -c POOLNFTADDRESS;Read-Host -Prompt „press enter to exit“}‘

Alle Fett markierten Stellen müssen angepasst werden. Insbesondere der Pfad zur Chia.exe und zu den Temp und finalen Plot Verzeichnis. Hierzu must du deinen Windows Benutzernamen (z.B. über den „Taskmanager -> Benutzer“ zu ermitteln) und deine verwendete Chia Version eintragen.

BENUTZER: Dein Windows Benutzername
app-1.2.2: Deine aktuelle Chia Client Version
host.ui.RawUI.WindowTitle: Hier kannst du einen Titel für das Konsolenfenster vergeben. Dies ist besonders hilfreich wenn mehrere Skripte erstellt werden und diese parallel gestartet werden. Dies ist z.B. nötig wenn verschiedene Temp Verzeichnisse genutzt werden.

Ebenso muss der Pfad zu deinem temporären Verzeichnis und zu dem Verzeichnis wo die finalen Plots hin kopiert werden sollen eingetragen werden.

Bei dem -c Parameter trägst du deine Pool NFT Adresse ein. Wie du einem Pool bei tritts wird in diesem Tutorial erklärt. Ebenso wie du deine Pool NFT Adresse ausliest.

Parameter:

  • -k : Plot Format. k32 im Beispiel
  • -b : Maximaler RAM Verbrauch. 4000MB im Beispiel
  • -n : Anzahl zu erstellender Plots. 999 im Beispiel
  • -r : Anzahl der CPU Threads. 4 Gleichzeitig im Beispiel. Nur die erste Phase der Ploterstellung nutzt mehrere Threads. Daher ist es bei der parallelen Erstellung von Plots sinnvoll die Vorgänge etwas zeitlich zu versetzen um die CPU dauerhaft maximal auszulasten
  • -t : Pfad zum Temp Verzeichnis
  • -d : Pfad zum Zielverzeichnis für fertige Plots
  • -c : P2 singleton address (pool contract address for plotting)

Die Parameter kannst du an deine Hardware anpassen. Sie sind aber eine ganz gute Orientierung zum Starten. Eine Übersicht über alle Parameter findet ihr hier. Zum Starten des Plot Vorgangs machst du einfach einen Rechtsklick auf die Skript Datei und wählst „Mit PowerShell ausführen“. Auch das Parallele Erstellen mehrerer Plots gleichzeitig ist möglich, indem du das Skript mehrfach startest. Achte hier auf deinen RAM Verbrauch und die zur Verfügung stehenden CPU Threads.

Chia Pool Farming

Mit der Version 1.2 des Chia Clients ist es nun möglich poolfähige Plots zu erstellen. Hier die Kursfassung wie du einem Chia Pool am Beispiel von XCH Pool beitritts und Plots erstellst:

  1. Download der neusten poolfähigen Chia Client Version (1.2 aufwärts)
  2. Um einen Contract für den Pool zu erstellen brauchst du ein wenig Chia Guthaben. Du kannst dir auf https://faucet.chia.net/ oder auf https://xchfaucet.togatech.org ein paar Mojo auf deine Wallet übertragen lassen.
  3. Damit das Guthaben in deiner Wallet angezeigt und verwendet werden kann muss diese synchronisiert sein.
  4. Danach muss ein Pool NFT erstellt werden. Dies geht mit dem Befehl:
    chia plotnft create -u https://pool.xchpool.org -s pool
    Der Befehl muss auf der Commandozeile (CMD) im „daemon“ Verzeichnis deines Chia Clients ausgeführt werden
    C:\Users\[USERNAME]\AppData\Local\chia-blockchain\[APP VERSION z.B.: app-1.1.6]\resources\app.asar.unpacked\daemon
  5. Überprüfen des Plot NFT mit dem Befehl:
    chia plotnft show
    Merken solltest du hier die „Launcher ID“ und der „P2 singleton address (pool contract address for plotting)“
  6. Auf der Webseite https://explorer.xchpool.org/membersearch kannst du mit deiner Launcher ID überprüfen ob dein Client im Pool registriert ist.
  7. Die Chia Version erlaubt das Erstellen poolfähiger Plots indem der Parameter -c oder –pool_contract_address verwendet wird. Die Pool Contract Address hast du mit dem „chia plotnft show“ ausgelesen.
    chia plots create -c POOL_CONTRACT_ADDRESS

In der Chia Gui siehst du unter dem Menüpunkt „Pool“ wie viele Plots du einsetzt und wie viele Punkte du erworben hast:

Chia Blockchain – Start Plotting & Farming

Chia ist eine Proof of Space and Time (PoST) Cryptowährung des BitTorrent Erfinder Bram Cohen. Anstatt des klassischen Minings wie bei anderen Cryptowährungen, bei denen häufig der Energieintensive Proof of Work Ansatz für den Konsensmechanismus verwendet wird (z.B. bei Bitcoin), werden beim Chia „Mining“ so genannte Plot Files berechnet, die dann später gefarmt werden um Chia Coins (XCH) zu erhalten. Dieses Farming verbraucht deutlich weniger Strom, da nur die Phase der Plot File Erstellung Energieintensiv ist. Für das spätere Farming wird nur wenig CPU Power benötigt. Daher gilt Chia als neue, grünere Alternative zu Bitcoins. Dieser Artikel soll einen kurzen Einstieg in das erstellen von Plot Files und Farming unter Windows geben.

Fallstricke und einige vorab Infos

Das Chia Netzwerk wird gerade total gehypet und wächst daher rasant. Da die Erträge beim Solofarming einer Lotterie gleichkommen, bei der die Gewinnchance steigt, je größer der eigene Speicheranteil am Gesamtnetzwerk ist, kann es aktuell schon sehr lange dauern bis du den ersten XCH Coin gefarmt hast. Dadurch wird das Solofarming immer uninteressanter wenn du nicht im sehr großen Stil einsteigen möchtest. Die kommende Pool Farming Unterstützung sorgt hier hoffentlich für gleichmäßigere und kontinuierliche Einnahmen auch für kleine Farmen. Es scheint langsam loszugehen mit dem Pool Farming. Erste Schritte kannst du mit dieser Anleitung ausprobieren.

Ein weiterer wichtiger Punkt ist die Hardware. Bevor ggf. in neue Hardware investiert wird empfiehlt es sich mit bestehender Hardware Erfahrung zu sammeln und die neue Technologie zu verstehen. Mit einem modernen Desktop PC mit 6+ Kernen, 16GB RAM, einer mindestens 300 GB großen SDD zum Plotten und einigen Terrabyte Festplatte zum Farmen ist man für den Start gut gerüstet. Das Erstellen der Plots ist auch mit einer HDD möglich, dauert aber vergleichsweise lange. Daher ist eine schnelle M2 SSD mit einem möglichst hohen TBW Wert sinnvoll. SSDs verschleißen beim Schreiben und haben damit eine begrenzte Lebenszeit. Die Total Bytes Written (TBW) geben darüber Auskunft, wie viele Daten während der Lebenszeit insgesamt auf eine SSD geschrieben werden können und eignet sich daher um zu berechnen wie viele Plots ca. mit der SSD erstellt werden können. Empfehlenswert ist z.B. die Seagate FireCuda 520 der 4ten Generation. Sie bieten laut Spezifikation einen TBW von 3600 GB.
Wer sich der Risiken und Nebenwirkungen nun bewusst ist kann gerne weiterlesen und Chia auf seinem Rechner einrichten 😉

Chia Installation und Wallet einrichten

Die Installation von Chia unter Windows ist sehr einfach. Dazu muss nur das Setup von Github heruntergeladen und ausgeführt werden. Anschließend kann über die Oberfläche ein neues Wallet in dem deine Coins gespeichert werden erstellt werden.

Das Programm erstellt dir für dein neues Wallet einen Mnemonic Phrase, der dir zum Wiederherstellen deines Wallet dient und auf jedenfall sicher gespeichert und geheim gehalten werden muss.

Im Anschluss findest du dich im Programm wieder. Das Programm startet automatisch einen Sync um den aktuellen Stand der Chia Blockchain zu laden.
Nicht nur der Full Node sondern auch die Wallet muss synchronisiert sein um Gewinne verbuchen und einsehen zu können oder zu farmen. Dies dauert für den ersten Sync mit einigen Stunden bis einen Tag sehr lange. Ein Resync nach einem Update geht dann deutlich schneller. Während des Synchronisierens wird zusätzlich die CPU stärker beansprucht. Der Chia Client kann aber auch jederzeit beendet werden und der Sync Vorgang später fortgeführt werden. Im nächsten Schritt wird das Erstellen von Plots beschrieben. Dies ist auch schon möglich solange der Client noch nicht vollständig synchronisiert ist.

Erstellen von Plots

Kommen wir nun zum Plotting. Hierzu links im Menü auf Plots klicken und „Add Plot“ wählen um eine oder mehrere Plot File(s) zu erstellen. Sind bereits Plot Files vorhanden, so können diese über „Add Plot Directory“ hinzugefügt werden. Generell lässt sich sagen das Erstellen von Plot Files über die Chia Software recht rudimentär ist. Möchte man diese automatisieren und besser steuern sollte auf weitere Software wie den SWAR Chia Plot Manager zurückgegriffen werden. Hier lässt sich besser einstellen wieviel Jobs parallel laufen sollen und wieviel Threads diesen zu Verfügung stehen. Ist ein Job abgearbeitet stellt der Manager automatisch einen neuen ein.

Im nachfolgenden Schritt werden die Einstellungen für die Erstellung der Plot Files durchgeführt:

Choose Plot Size:
Bei der Plot File Größe sollte der Standard bei (101,4GiB – K32) belassen werden. Größere Plot Files machen zum aktuellen Zeitpunkt keinen Sinn. Insbesondere da natürlich mehrere Plot Files dieser Größe erstellt werden können und Chia aktuell kein Pausieren der Plot File Erstellung kann. D.h. wenn ihr den PC einmal neu starten müsst, startet ihr wieder von ganz vorne und es sind womöglich viele Stunden Rechenzeit verloren.

Choose Number of Plots:
Hier kannst du die Anzahl der zu erstellenden Plots einstellen und ob diese parallel oder nacheinander erstellt werden sollen. Beachte das pro Plot Vorgang etwa 3,5GB Ram und 2 Cores benötigt benötigt werden. Wie viele Plots parallel erstellt werden können hängt damit im wesentlichen von den CPU Kernen und RAM in deinem PC ab. Die Dauer pro Plot liegt bei 6-12 Stunden je nach System. Hier heißt es dann etwas ausprobieren was die eigene Hardware schafft. Grundsätzlich lässt sich sagen, dass Plotting eine schnelle CPU, viel Arbeitsspeicher und eine schnelle Festplatte (SSD / NVMe SDD) benötigt. Achte auf jeden Fall da drauf deinem System einige Ressourcen über zu lassen.

Select Temporary Directory
Das temporäre Verzeichnis wird beim Erstellen der Plot Dateien benutzt. Es sollte möglichst schnell sein und ausreichend Speicherplatz zur Verfügung stellen. Pro Plot Vorgang werden temporäre Dateien mit einer Größe von 238,3 GiB (256 GB) erstellt. Dementsprechend groß muss euer schneller Speicher dimensioniert werden. Bei vier parallelen Plots wird somit schon eine NVMe-SSD mit 1,5 TB benötigt. Die finale Plot Datei besitzt eine Größe von 101,4 GiB und sollte auf einen großen, langsamen Speicher transferiert werden, der im nächsten Schritt angegeben wird.

Select Final Directory
Dieses Verzeichnis dient dir als Lagerort für die fertigen Plot Files. Er wird für das Farming genutzt und muss nicht sonderlich schnell sein. Hier bieten sich große, günstige Festplatten an. Nachdem alles eingestellt wurde kannst du mit einem Klick auf „CREATE PLOT“ den Plot Vorgang gestartet starten.

Farming

Der Farming Prozess startet automatisch sobald die Plots fertig erstellt sind und die Software vollständig mit dem Chia Netzwerk synchronisiert ist. Happy Farming!

Weitere Überlegungen zum Chia Farming

Nachfolgend einige weitere Überlegungen zum Chia Coin (XCH) Farming:

  • Du kannst die Chia Blockchain Software auf mehreren Computern mit dem gleichen Schlüssel ausführen. Dazu must du nur anstatt „Create a new wallet“ “IMPORT FROM MNEMONICS (24 Words)” auswählen und deine 24 Mnemonics Wörter in der richtigen Reihenfolge eingeben.
  • Die Chia Software wird schnell weiter entwickelt. Prüfe öfter ob du noch aktuell bist
  • Du solltest die Chia Blockchain Software nicht zu oft Neustarten, da es bis zu einer Stunde dauern kann bis die Software wieder mit der Chia Blockchain synchronisiert ist. In dieser Zeit findet kein Farming statt.
  • Die Windows Energieoptionen sollten so eingestellt werden, das Windows und vor allem nicht die Festplatten sich ausschalten.
  • Wenn die Chia Software deinstalliert wird, bleibt dein Schlüssel erhalten. Um diesen zu löschen must du auf der Programmstartseite „DELETE ALL Keys“ wählen
  • Aktuell erstellte Plots können nicht für das Pool Farming verwendet werden. Sobald Pools verfügbar sind und du umsteigen möchtest, macht es Sinn die alten Plots nach und nach durch Poolfähige Plots zu ersetzen und nicht alle alten Plots mit einem mal zu löschen.

Raspberry Pi – DynDNS mit noip.com

Um auf dem Raspberry Pi Serverdienste anbieten zu können, die über das Internet erreichbar sind, steht vor dem Problem, das die meisten ISP (Internet Service Provider), insbesondere bei DSL-Anschlüssen, eine Zwangstrennung vornehmen und somit die IP-Adresse im Internet wechselt.
Um das Problem zu umgehen bieten DynDNS Anbieter die Möglichkeit eine DNS Adresse (z.B. meinraspi.ddns.net) zu registrieren, die über eine Software auf dem Router oder eben dem Raspberry Pi immer mit der aktuell gültigen IP Adresse aktualisiert wird. Das Tutorial beschreibt das Vorgehen für den DynDNS Anbieter noip.com. Er bietet kostenlose DynDNS Adressen und einen Client der auf dem Raspbian Linux läuft.

1. Registrieren bei no-ip.com
2. Danach wird die DynDNS Adresse über den Menüpunkt Hosts/Redirects auf “Add Host” erstellt.

3. no-ip Update Client auf dem Raspi installieren. Dazu über SSH als USer pi anmelden und den Schritten folgen:

Software herunterladen:

wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz

und entpacken:

sudo tar xf noip-duc-linux.tar.gz

In das neu erstellte Verzeichnis wechseln:

cd noip-2.1.9-1/

Software compilieren/installieren:

sudo make install

Bei der Installation werden die Logindaten für no-ip abgefragt, sowie welche Adresse in welchem Intervall aktualisiert werden soll.
Anschließend kann die no-ip Software gestartet werden:

sudo noip2

Zur Kontrolle ob die Software ausgeführt wird, kann die Prozessliste aufgerufen werden:

ps ax

Damit die no.ip Software beim nächsten Start des Raspberry Pi automatisch gestartet wird kann sie über CRON automatisch gestartet werden.

crontab -e

In die Datei den folgenden Befehl aufnehmen

@reboot cd /home/pi/noip-2.1.9-1 && sudo noip2

Nun ist das Heimnetzwerk über die eingerichtete DNS Adresse aus dem Internet erreichbar. Damit einzelne Dienste, wie z.B. ein Webserver, auf dem Raspberry Pi erreicht werden können muss auf dem Router eine entsprechende Port-Weiterleitung eingerichtet werden.

Logging mit log4j in Maven Projekt integrieren

Log4j Properties in Maven Projekt integrierenLog4j ist eine logging Library der Apache Software Foundation und ermöglicht es Log-Ausgaben im Programm an verschiedenste Ziele zu schreiben. Das bekannteste Ziel ist sicher das Schreiben der Logmeldungen in eine Log-Datei, aber auch das schreiben der Meldungen in eine Datenbank oder das Verschicken per E-Mail ist möglich. Das Ziel der Meldungen wird über sogenannte Log-Appender in der Datei log4j.properties konfiguriert. Diese liegt in einem Maven Projekt in dem Resourcen Verzeichnis. (siehe Bild)

Datei: log4j.properties

# Root logger option
log4j.rootLogger=DEBUG, file
# LogLeel DEBUG und akive appender Console und Log-Datei

# Log to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Log to file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./log.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=2
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Log to mail
log4j.appender.email=org.apache.log4j.net.SMTPAppender
log4j.appender.email.SMTPHost=mail.mydomain.com
log4j.appender.email.SMTPUsername=myuser@mydomain.com
log4j.appender.email.SMTPPassword=mypw
log4j.appender.email.From=myuser@mydomain.com
log4j.appender.email.To=myuser@mydomain.com
log4j.appender.email.Subject=Log of messages
log4j.appender.email.BufferSize=1
log4j.appender.email.EvaluatorClass=TriggerLogEvent
log4j.appender.email.layout=org.apache.log4j.PatternLayout
log4j.appender.email.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Log to DB
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DB.URL=jdbc:mysql://localhost/DBNAME
log4j.appender.DB.driver=com.mysql.jdbc.Driver
log4j.appender.DB.user=user_name
log4j.appender.DB.password=password
log4j.appender.DB.sql=INSERT INTO LOGS VALUES('%x','%d','%C','%p','%m')
log4j.appender.DB.layout=org.apache.log4j.PatternLayout

# CREATE TABLE LOGS
#   (USER_ID VARCHAR(20) NOT NULL,
#    DATED   DATE NOT NULL,
#    LOGGER  VARCHAR(50) NOT NULL,
#    LEVEL   VARCHAR(10) NOT NULL,
#    MESSAGE VARCHAR(1000) NOT NULL
#   );

Die erste Zeile der obigen Datei wird konfiguriert das Meldungen ab dem DEBUG-Level und darunter in eine Datei geschriebenen werden. Der Detailgrad wird mit steigender Anzahl an Meldungen durch die Level OFF, FATAL, ERROR, WARN, INFO, DEBUG und ALL angegeben.
Um log4j in das Programm zu integrieren reicht es die Dependency in der pom.xml hinzuzufügen. Log4j findet die weiter oben gelistete Konfigurationsdatei von alle, wenn sie sich im Resource-Verzeichnis befindet.

<dependencies>
	<dependency>
		<groupId>log4j</groupId>
		<artifactId>log4j</artifactId>
		<version>1.2.17</version>
	</dependency>
</dependencies>

Das Ausgeben der Logmeldungen auf verschiedenen Log-Ebenen ist mit wenigen Zeilen Code erledigt:

import org.apache.log4j.Logger;
public class LoggingTest{
   private static Logger logger = Logger.getLogger(LoggingTest.class);
   logger.info("Info");
   logger.warn("Warn");
   logger.error("Fehlermeldung");
}

WildFly – Debug-Mode aktivieren und mit Eclipse verbinden

Um eine Anwendung im WildFly Applicationserver deployte Anwendung zu debuggen muss eine Debug-Verbindung zwischen IDE und Server hergestellt werden. Dies ist mit wenigen Handgriffen erledigt. Dazu wird zunächst WildFly im Debug-Mode gestartet, indem es mit dem Parameter –debug gestartet wird: „WILDFLY_HOME\bin\standalone.bat –debug“.
Wird der WildFly Server zur Entwicklung genutzt empfiehlt es sich ihn so zu konfigurieren, das er dauerhaft im Debug-Mode startet. Dies kann in der Batchdatei zum Starten dauerhaft aktiviert werden. „WILDFLY_HOME\standalone\bin\standalone.bat“:

set DEBUG_MODE=true
set DEBUG_PORT=8787

Eclipse Debug Konfiguration
Wenn WildFly im Debug-Mode läuft muss nur noch aus Eclipse eine TCP/IP Verbindung zum Port 8787 des WildFly Servers hergestellt werden. Die Eclipse-Konfiguration kann den Bildern entnommen werden. Im Beispiel läuft der Server auf dem lokalen Rechner. Ist dies nicht der Fall muss die IP Adresse des entfernten Widfly Servers genutzt werden. Nachdem die Verbindung zwischen Eclipse und WildFly hergestellt ist, werden Breakpoints die in der linken Leiste im Quellcode gesetzt werden aktiv. Zu erkennen an dem kleinen Häkchen.
Eclipse - WildFly Debug Connection

WildFly – Systemproperties konfigurieren und auslesen

Im WildFly Anwendungsserver können über die Systemproperties Werte gesetzt werden auf die die deployten Anwendungen zugreifen können. Dies stellt einen einfachen Weg zum Konfigurieren von Anwendungen dar. Die Konfiguration wird in der Datei „/WILDFLY_HOME/standalone/configuration/standalone.xml“ vorgenommen:

<server xmlns="urn:jboss:domain:1.3">
  <extensions>
  ...
  </extensions>
  <system-properties>
    <property name="property1name" value="property1value"/>
    <property name="property2name" value="property2value"/>
  </system-properties>
	...
</server>

Auslesen der Systemproperties im Java Programm:

String valueProperty1 = System.getProperty("property1name");

Betriebssystem Umgebungsvariablen auslesen

Auch auf die Systemvariablen des Betriebssystem lässt sich zugreifen:

System.getenv("NAME_DER_UMGEBUNGSVARIABLE ");

WildFly – Administration über die Webkonsole, CLI und Standalone.xml

WildFly speichert seine Konfiguration XML-formatiert in einer Datei ab. Die Konfiguration des Server kann direkt in dieser Datei erfolgen, oder alternativ über die Weboberfläche oder das Command Line Interface. Im folgenden werden die unterschiedlichen Wege kurz vorgestellt.

Weboberfläche

Wildfly stellt auf Port 9990 eine Weboberfläche zur Konfiguration einiger Systemeinstellungen bereit und liefert Informationen zur JVM und Systemumgebung. Zu einigen Subsystem werden Daten angezeigt und Konfigurationsmöglichkeiten angeboten. Dazu zählen u.a. Datasources, JPA, JNDI, Transactions und Webservices.

Bevor auf die Webmanagement-Oberfläche zugegriffen werden kann muss ein Management-User angelegt werden. Dazu führen Sie das Skript „add-user.bat“ unter Windows (wildfly_root\bin\add-user.bat) oder „add-user.sh“ unter Linux aus und folgen den Anweisungen.
Anschließend kann sich mit dem neuen Benutzer angemeldet werden:

http://127.0.0.1:9990/
Wildfly Webmanagement

Wildfly Webmanagement

CLI – Command Line Tool

Wildfly_CLI_GUI
Seit JBoss AS 7 gibt es ein Command Line Interface (CLI) Tool mit dem man sich zum Server verbinden kann und diverse Aufgaben durchführen kann. U.a:

  • Anwendungen im Standalone/Domain Mode deployen oder undeployen
  • Informationen zu deployten Anwendungen anzeigen
  • Starten, stoppen und neustarten des Servers
  • Hinzufügen, ändern und löschen von Subsystemen
  • Anzeige von Logdateien

    • Das CLI Tool wird über ein Skript (jboss-cli.bat oder sh) im Bin-Verzeichnis gestartet.

      "WILDFLY_HOME/bin/jboss-cli.bat"

      Mit dem Parameter gui „jboss-cli.bat –gui“ kann die Konsole in einer grafischen Ausführung gestartet werden:

      XML Konfigurationsdatei

      Wildfly speichert seine Konfiguration als XML formatierte Datei ab. Diese liegt für Standalone-Anwendungen in „WILDFLY_HOME/standalone/configuration/standalone.xml“ und für geclusterte Anwendungen, die in einer Domain zusammengefasst werden und sich eine Konfiguration teilen, in „WILDFLY_HOME/domain/configuration/domain.xml“.

      Die Konfigurationsdatei enthält für jedes Subsystem einen einzelnen Konfigurationsblock. Einige der häufiger benötigten Subsysteme sind u.a. Datasources zur Verbindung zu Datenbanken, Mail und Logging. Im unteren Part finden sich mit den Interfaces und Socket-Binding-Groups die Konfigurationseinstellungen auf welchen Ports der Wildfly Server Dienste bereit stellt. Hier ist z.B. konfiguriert, das der Server mit den Default-Einstellungen seine Dienste nur auf der lokalen IP-Adresse bereitstellt (localhost – 127.0.0.1)

WildFly – Installieren und als Dienst ausführen

Wildfly- UmgebungsvariableWildfly ist ein Application Server für Java Anwendungen der den Java EE Standard implementiert. Er ist leicht zu installieren, da es ausreicht ein aktuelles Java JRE oder JDK auf dem System zu installieren und das Wildfly Zip-Archiv zu entpackt. Die Systemvariablen sollten um eine Variable „WILDFLY_HOME“ erweitert werden, die auf das Root-Verzeichnis des Wildfly Servers zeigt. (Win7: Rechtsklick Computer -> Eigenschaften -> Erweiterte Systemeinstellungen -> Umgebungsvariablen) (Siehe Screenshot) Unter Linux wird die Systemvariable mit dem Export Befehl gesetzt: „export WILDFLY_HOME=/opt/wildfly/“

Zum Starten des Servers reicht es unter Windows die Datei „standalone.bat“ oder unter Linux die Datei „standalone.sh“ im „bin“ Verzeichnis zu starten. In einer Produktivumgebung empfiehlt es sich WildFly als Windows-Dienst oder Linux Service einzurichten.

Wildfly als Windowsdienst einrichten

Gegenüber dem JBoss AS7 ist die Installation des WildFy Anwendungsservers als Windowsservice sehr einfach, da bereits alles „ab Werk“ mit ausgeliefert wird. Dazu wird lediglich die Batchdatei „WILDFLY_HOME\bin\service\service.bat“ mit dem Parameter „install“ aufgerufen. Die Verwaltung des Dienstes inklusive Starten und Stoppen erfolgt wie gewohnt über die Computerverwaltung. Siehe Screenshot. (Windows7: Rechtsklick Computer Icon -> Verwalten -> Dienste – und Anwendungen Dienste)

Wildfly Windowsservice

Wildfly Windowsservice

WildFly als Linux Service einrichten

Um WildFly als Linux Service einzurichten werden die Skripte aus dem Verzeichnis „WILDFLY_HOME/bin/init.d“ verwendet. In diesem Verzeichnis finden sich die folgenden Skripte:

wildfly-init-redhat.sh: Dieses Skript wird für Red Hat Enterprise Linux Distributions verwendet wie RHEL oder Centos.
wildfly-init-debian.sh: Dieses Skript wird für Debian basierende Distributionen wie Debian oder Ubuntu verwendet.
wildfly.conf: Diese Datei enthält die Konfiguration für die beiden oben genannten Init-Skripte.

1. WildFly nach „/opt/wildfly“ entpacken oder kopieren. z.B. mit WinSCP. Sofern das Java JRE installiert ist, kann der WildFly Server bereits testweise gestartet werden, indem das Shell Skript „WILDFLY_HOME/bin/standalone.sh“ ausgeführt wird.

cd /opt/wildfly/bin/
./standalone.sh
Wenn die Berechtigungen nicht zum Ausführen des Skriptes reichen müssen sie entsprechend gesetzt werden:
chmod 777 standalone.sh

2. Das zur Linux Distribution passende Skript wird in das Verzeichnis „/etc/init.d“ kopiert. Für RHEL sieht dies ausgehend vom Verzeichnis „WILDFLY_HOME/bin/init.d“ wie folgt aus:

cp wildfly-init-redhat.sh /etc/init.d/wildfly

3. Die Konfigurationsdatei „wildfly.conf“ muss in das Verzeichnis „/etc/default/wildfly“ kopiert werden, damit das Startskript sie findet:

mkdir /etc/default/wildfly
cp wildfly.conf /etc/default/wildfly

4. Anschließend wird die Konfigurationsdatei angepasst. Dazu kann der Editor Nano oder vi genutzt werden:

nano /etc/default/wildfly/wildfly.conf

Der Pfad zum Java JDK und der User unter dem der Wildfly Service ausgeführt werden sollen müssen entsprechend angepasst werden. Ein neuer User kann mit dem Befehl „adduser“ angelegt werden:

JAVA_HOME=/usr/java/jdk1.7.0_21
# Location of WildFly
JBOSS_HOME=/usr/share/wildfly.8.0.0.Final
# The username who should own the process.
JBOSS_USER=wildfly
# The mode WildFly should start, standalone or domain
JBOSS_MODE=standalone
# Configuration for standalone mode
JBOSS_CONFIG=standalone.xml

5. Als nächstes wird dem Befehl „chkconfig“ das Wildfly Skript als Dienst eingerichtet. Der zweite Befehl setzt die Runlevel in denen der Dienst gestartet wird.

chkconfig --add wildfly
chkconfig --level 2345 wildfly on

6. Sofern alles richtig konfiguriert ist lässt sich der WildFly Service wie folgt starten und stoppen:

service wildfly start
service wildfly stop