Posts mit dem Label Tomact werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Tomact werden angezeigt. Alle Posts anzeigen

Sonntag, 3. August 2014

Java auf einem QNAP TS-110, der zweite Versuch

Nachdem mein erster Versuch gescheitert war auf meinem QNAP TS-110 Java zu installieren, gibt es jetzt gut Nachrichten. QNAP bietet jetzt ein funktionsfähiges Java 8 als JRE. Es lässt sich einfach via QNAP App-Manager installieren.

Und hier der Beweis im Terminal:

Jetzt ist das QNAP vollständig, einen Tomcat kann man auch installieren, Damit habe ich einen kleinen Entwicklungsserver. Allerdings darf vom QNAP TS-110 nicht zu viel erwarten. Das RAM ist mit 256MB sehr begrenzt und die CPU (Marvell 800MHz) auch. Kleinere Anwendungen sollten aber möglich sein. Als nächstes Projekt kann das QNAP die Tinkerforge Wetterstation bedienen.

Montag, 6. Dezember 2010

Erste Eindrücke vom Tomcat 7

Zur Zeit teste ich wieder verschiedene neue Betaversionen bekannter Porgramme, so Eclipse Indigo und Tomcat 7 (7.0.5 beta). Tomcat 7 setzt jetzt eine Java 6 SE voraus. Zuerst fällt auf, das die Startseite des Tomcats überarbeitet wurde und ein wenig moderner anmutet. An den anderen Seiten, z.B. die des Managers hat sich grafisch nichts geändert. Allerdings wurde die Rolle des Managers aufgeteilt. Es gibt jetzt die Rollen manager-gui (dieser entspricht dem klassischen Manager), einen manager-status,  einen manager-script und einen manager-jmx. Auch der Manager wurde unterteilt in manager-gui und manager-script. Daneben wurde noch einige Kleinigkeiten geändert (siehe Link).

Mittwoch, 19. Mai 2010

Running Jackrabbit on Tomcat

Apache Jackrabbit ist ein Java-basiertes Content Repository. Es ist möglich es als Stand-alone Installation zu betreiben oder es in Tomcat als Webapp zu installieren. Mein Kombination ist Windows, Tomcat 6.0.26 und Jackrabbit 2.1.0. Mir sind mehrere Dinge aufgefallen:

  • Vor der Installation muss ins lib Verzeichnis von Tomacat noch die jcr-2.0.jar kopiert werden und anschliessend muss Tomcat neu gestartet werden. Wichtig ist die Version 2.0 von JCR und nicht die Version 1.0 zu benutzen, wie fälschlicher Weise noch in der Dokumentation steht.
  • Das installierte Jackrabbit, zumindest die Weboberfläche scheint nicht ganz fehlerfrei zu sein. Alle Fehler waren durch die falsche JCR-Version verursacht.
  • Neue Content Repositories werden im Verzeichnis CATALINA_HOME angelegt. Wenn diese Variable nicht explizit gesetzt wurde, schätzt Tomcats Startskript das Verzeichnis. Das Resultat ist das Verzeichnis aus dem Tomcat gestartet wurde. Dieses Faeture ist leider nicht dokumentiert und ich habe auch keinen einfachen Weg gefunden dies zu konfigurieren.
  • Bei der Suche nach Hilfe via Google viel mir auf, das es leider einen Vibrator gleichen Namens gibt, der leider Googles Ergebnisliste häufig dominiert.
Das Jackrabbit WebDAV-Repository lässt sich ohne weiteres unter Mac OS X 10.6 im Finder als Mit Server verbinden ... als Laufwerk einbinden. Unter Windows kann man es als Webresource einbinden oder mittels Netdrive als Laufwerk mounten. Alternativ soll auch der Befehl net funktionieren, nur leider bei mir nicht. Unter Linux kann man sich das WebDAV-Repository als Laufwerk mounten. Dazu muss man als User root folgende Zeile verwenden: mount -t davfs http://mir:8080/jackrabbit/repository/default/ /home/ebert/testset/dav
Natürlich kann man auch /etc/fstab um den WebDAV-Eintrag erweitern.

Leider fand ich auch keinen Client, der Versionierung und Locking unterstützt, damit gehen wichtige Funktionen des WebDAV verloren.

Mittwoch, 12. Mai 2010

Wiki auf Tomcat

Auf Grund meiner Wissensmanagement-Affinität setze ich  zur Dokumentation meiner Arbeitergebnisse ein Wiki ein. Dies macht meine Ergebnisse einfacher nutzbar und erschließt leichter neue Benutzer. Als bekenntder Tomcat-Fan suchte ich nach einer Java-Wiki-Lösung die auf einem Tomcat läuft. Meine Wahl fiel auf VQWiki (http://www.vqwiki.org/). VQWiki steht für Very Quick Wiki und dies kann ich nur bestätigen. Download der WAR-Datei von Sourceforge, deployen - ferig, keine weiter Installation oder Konfiguration. Am besten benennt man die WAR-Datei noch um (z.B. vqwiki-2.8.1.war -> wiki.war), um die spätere URL über der das Wiki zu erreichen sein wird, zu vereinfachen. VQWiki benutzt nicht die vom Mediawiki (Wikipedia) bekannt Syntax ein aber dies ist kein Problem. Schön gelöst ist die Admin-Administration, es wird angenommen, dass der erste Benutzer der Admin ist, eine sehr schöne Lösung.

Donnerstag, 21. Januar 2010

Datenbank-Ressource in Tomcat einbinden

Das das verwenden von Connection Poos eine tolle, Performance steigernde Sache ist hat sich sicher herumgesprochen. Nun gibt es verschiedene Möglichkeiten einen DB Connection Pool zu benutzen. Man kann natürlich auch selber entsprechende Logik in eine zentralen Datenbankklasse implementieren. Bei Serversoftware ist eher davon abzuraten, weil man dann das Connection Management komplexer wird. So schliesst die Datenbank von ihrer Seite aus eine Connection nach einer festgelegten Zeit der Inaktivität um Ressourcen zu sparen, bei MySQL sind dass 8 Stunden, d.h. wenn 8 Stunden lang keine Daten über die Datenbank Connection geflossen sind schliesst die Datenbank die Verbindung. Dies bemerkt man in der Regel erst am nächsten Tag oder am Montag, wenn man versucht Daten von Datenbank zu holen. Die Lösung lautet, man muss immer prüfen ob die Connection noch funktioniert, das macht man in dem man eine Datenbankabfrage macht, die immer ein definiertes Ergebnis liefert. Das prüfen der DB-Connection reicht nicht.
Zurück zum Pooling, Tomcat bietet ein eigenes Pooling mittel Tag resource. Das sieht in der Datei META-INF/context.xml der Webapp wie folgt aus:
<Resource
name="jdbc/MYSQLDB"
auth="Container"
type="javax.sql.DataSource"
username="smartblu"
password="xxx"
url="jdbc:mysql://localhost:3306/igd"
driverClassName="com.mysql.jdbc.Driver"
maxActive="500"
maxIdle="100"
maxWait="10000"
validationQuery="select count(*) from USER"
removeAbandoned="true"
logAbandoned="true"
/>

Mit validationQuery gibt man die oben erwähnte Wartungsabfrage an, mit der DB-Connection-Pool die Datenbankverbindung testen kann. Was jetzt noch fehlt, ist die Referenzierung der Datenbankressource in der Datei web.xml.

<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/MYSQLDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

Freitag, 3. Juli 2009

Tomcat JDBC Realm

Mit Hilfe des JDBC Realms kann man in Tomcat sehr einfach und elegant eine Benutzerauthentifizierung und Zugriffsteuerung durchführen, bzw. von Tomcat durchführen lassen. Dafür muss man in der Datei context.xml der Webapp folgenden Abschnitt einfügen:

<Realm className="sb.realm.SmartBLURealm" debug="99"

driverName="com.mysql.jdbc.Driver"

connectionURL="jdbc:mysql://localhost:3306/test"

connectionName="smartblu"

connectionPassword=""

userTable="USER"

userNameCol="LoginName"

userCredCol="Password"

userRoleTable="user_roles"

roleNameCol="role_name"

digest="sha"/>


Tomcat versucht dann die Benutzer zu Authentifizieren gegen eine Datenbank jdbc:mysql://localhost:3306/test mit den entsprechenden Parametern. Der Datenbank-Table heisst hier USER. Die Passwörter der Benutzer sind mit SHA gehasht. SHA bedeutet in der Java-Welt meines Wissens nach SHA2.


In diesem Beispiel wir nicht der normale JDBC Realm verwandt sondern ein eigener Realm, der von JDBC Realm abgeleitet wurde aber gleichzeitig ein Migrationsfunktion (das Altsystem verwendete nicht SHA sondern Crypt) besitzt. Die Jar-Datei die die hier verwandte Klasse enthält muss für Tocat verfügbar sein, sie muss sich also im Verzeichnis tomcat/libs befinden. Alternativ kann in dieses Beispiel auch der JDBC Realm (org.apache.catalina.realm.JDBCRealm) eingetragen werden.


Der Realm ist aber nur ein Baustein bei der Authentifizierung mit Tomcat. Die weiterne Bausteine (Login-Config, Rollen und Security Constraints) sind in der Datei web.xml des Projektes enthalten.