22.03.2013

XPages: Creating save conflicts mixing DominoDocument and Document methods

Category: XPages, Java

XPages

We heard some users complaining about some save conflicts in one of our XPages application. They got this irritating message:

Document has been saved by another user - Save created a new document as a response to that modified document.

The users have asked all their colleagues but no one had been working on the same document.

Taking a closer look at those documents we found that the conflict document has been created nearly at the same time as the original document had been saved. Both documents had been saved by the same user. The conclusion was obvious. There was something wrong with our code. The strange thing was that the conflict only happened very infrequently, which made searching for the problem a little difficult.

Finally after a hint from Tony McGuckin of the Ireland XPages lab we were able to narrow it down to a timing issue when using the Java classes DominoDocument and Document together.


Read More

13.03.2013

EntwicklerCamp 2013: Fehlerbehandlung in Notes

Category: EntwicklerCamp, Konferenzen, Java, Entwicklung, XPages

EntwicklerCamp

Das EntwicklerCamp ist leider fast vorbei. Mein zweiter Vortrag zum Thema „Fehlerbehandlung in Formelsprache, LotusScript, Java, JavaScript und XPages“ war heute vormittag.

Das nächste EntwicklerCamp ist vom 17.03. bis zum 19.03.2014. Ich freue mich schon!


12.03.2013

EntwicklerCamp 2013: XPages und Java

Category: EntwicklerCamp, Konferenzen, Java, Entwicklung, XPages

EntwicklerCamp

Heute durfte ich den ersten meiner zwei Vorträge auf dem diesjährigen EntwicklerCamp halten.

Im Vortrag „XPages und Java“ ging es primär darum, wie eigene Klassen für XPages in Java geschrieben werden können, was Managed Beans sind und welche Elemente aus dem JSF-Umfeld sinnvoll für eigene Anwendungen eingesetzt werden können. Den Abschluss bildete eine Betrachtung des Model-View-Controller-Patterns und wie wir es in unserem assono XPages-Framework einsetzen.

Update! Bei der Beispieldatenbank habe ich die lokale Verschlüsselung jetzt ausgeschaltet.


12.03.2013

EntwicklerCamp 2013: Reite den Mustang DIY - Selbst ist der künftige Java-Entwickler

Category: EntwicklerCamp, Konferenzen, Java, Entwicklung

EntwicklerCamp
Heute habe ich auf dem EntwicklerCamp 2013 meinen einführenden Vortrag von gestern um eine praktische Übung ergänzen dürfen. Wir sind gemeinsam die ersten Schritte gegangen, haben ein kleines Programm entwickelt, ausgeführt und den Debugger genutzt. Das Beispielprogramm lädt u.a. eine Web-Seite und eine JPEG-Grafik herunter und speichert beides in Dokumenten, wobei die Grafik "nebenbei" in eine PNG-Grafik konvertiert wird.


Die Präsentation und Beispiele zum Hands-On "Reite den Mustang DIY - Selbst ist der künftige Java-Entwickler":

12.03.2013

EntwicklerCamp 2013: Reite den Mustang - Java-Entwicklung in Notes und Domino

Category: EntwicklerCamp, Konferenzen, Java, Entwicklung

EntwicklerCamp
Gestern durfte ich auf dem EntwicklerCamp 2013 meinen einführenden Vortrag in die Java-Entwicklung für Notes- und Domino-Entwickler halten. Nach einer kurzen Einführung in die Syntax und einige für LotusScript-Entwickler ungewöhnliche Konzepte zeige ich anhand vieler Beispiele die verschiedenen Möglichkeiten, Java in/mit Notes und Domino einzusetzen: Applets, Agents, Standalone-Anwendungen, Servlets usw.


Die Präsentation und Beispiele zum Vortrag Reite den Mustang - Java-Entwicklung in Notes und Domino:

12.06.2012

XPages: Unterschiedliche Java-Versionen auf unterschiedlichen Betriebssystemen

Category: XPages, Entwicklung, Java

java_logo.gif

Wie ich heute schmerzlich erfahren musste, sind die JVMs (Java Virtuell Maschine) auf den unterschiedlichen Lotus Domino Serverplattformen bei gleicher Versionsnummer nicht identisch und verhalten sich leider auch nicht identisch.

Entwickelt und getestet hatte ich die XPage-Anwendung auf einem Linux-System mit den folgenden Werten.

  • java.version 1.6.0
  • java.vendor IBM Corporation
  • java.vm.version 2.4
  • java.vm.vendor IBM Corporation

Der Kunde betreibt seinen Server auf SunOS.

  • java.version 1.6.0_17
  • java.vendor Sun Microsystems Inc.
  • java.vm.version 14.3-b01
  • java.vm.vendor Sun Microsystems Inc.

Normallerweise dürfte es keinen Unterschied machen. In meinem Fall hat sich die Implementierung von java.util.TreeSet. aber doch erheblich im Verhalten unterschieden.


Read More

30.03.2012

EntwicklerCamp 2012: Zähme den Tiger - Java-Entwicklung in Notes und Domino

Category: EntwicklerCamp, Konferenzen, Java, Entwicklung

EntwicklerCamp
Wie auf dem EntwicklerCamp versprochen die Folien und Beispiele zu dem Vortrag Track 1 - Session 7: Zähme den Tiger - Java-Entwicklung in Notes und Domino

Ich kenne keine Konferenz im deutschsprachigen Raum bei der soviel geballtes Notes-Know how vorhanden ist. Es macht wirklich jedes Jahr viel Spaß. Auch wenn dieses Jahr der Schwerpunkt eindeutig XPages war, gab es auch viele spannende Vorträge zu anderen Entwicklungsthemen.

Das nächste EntwicklerCamp ist vom 11.03. bis zum 13.03.2013. Wir werden sicherlich wieder mit dabei sein!

 

Noch ein Hinweis zum Thema "Java unter Lotus Domino". Es gibt ein sehr gutes Buch von
Thomas Ekert: "Java unter Lotus Domino" vom Springer Verlag, ISBN 978-3540221760, 804 S.

Das Buch ist auf Deutsch und wird zur Zeit zu einem genialem Preis von 9,95 € verkauft.

buch_java_unter_Lotus_Domin.png


23.02.2011

EntwicklerCamp 2011: Zähme den Tiger - Java-Entwicklung in Notes und Domino

Category: EntwicklerCamp, Konferenzen, Java, Entwicklung

EntwicklerCamp
Wow, der dritte Tag des EntwicklerCamps ist schon fast vorbei. Wieder ist diese tolle Konferenz viel zu schnell zu Ende gegangen. Aber nach dem EntwicklerCamp ist vor dem AdminCamp...

Die Präsentation und Beispiele zum Vortrag Zähme den Tiger - Java-Entwicklung in Notes und Domino:


16.12.2010

Versionsverwaltung mit Source Control Enablement und Mercurial

Category: Lotus Notes, Java, OpenNTF

Versionsverwaltung ist aus der modernen Software-Entwicklung kaum wegzudenken, bei der Entwicklung unter Lotus Notes hatte man es bisher allerdings schwer, ein entsprechendes Repository zu pflegen, da sich Gestaltungselemente und Bibliotheken nur schwer extern verwalten lassen. Bei dem aktuellen, auf Eclipse basierenden Domino Designer stehen einem jedoch eine Vielzahl neuer Möglichkeiten offen, um den Entwicklungsprozess durch zusätzliche Werkzeuge zu optimieren - so zum Beispiel Werkzeuge zur Versionsverwaltung.

Mit dem auf OpenNTF verfügbaren Eclipse-Plugin "Source Control Enablement" etwa kann man ein lokales Quellcode-Repository mit einer Notes-Anwendung verknüpfen, dabei werden Gestaltungselemente aus der Notes-Anwendung per DXL exportiert (bzw. in umgekehrter Richtung wieder importiert). DXL Imports stehen allgemein nicht umbedingt im besten Ruf, da DXL nicht 100% roundtrip-fähig ist. Entsprechend sollte bei der Entwicklung mit einem über das "Source Control Enablement" eingerichteten Repository mit Bedacht gehandelt werden.

Offiziell ist in der Dokumentation des "Source Control Enablement"-Plugins nur die Rede von Subversion als Versionsverwaltungssystem. Da das Plugin aber ein ganz gewöhnliches Eclipse-Projektverzeichnis im lokalen Dateisystem anlegt und dort alle Dateien ablegt, eignet es sich auch für andere Versionsverwaltungssysteme. Gerade moderne, dezentrale Systeme, wie Git und Mercurial erfreuen sich zurecht einer ständig steigenden Beliebtheit, weil damit auch verteilte Teams an mehreren Standorten mit einem jeweils lokalen Repository arbeiten können. CVS und Subversion sehen dazu keine Möglichkeit vor.

Mit "MercurialEclipse" steht auch ein Eclipse-Plugin zur Verfügung, dass sich im Domino Designer verwenden lässt. Etwas anders liegt es hier mit Git bzw. dem Eclipse-Plugin "EGit". Dieses lässt sich aufgrund einiger nicht lösbarer Abhängigkeiten nicht im Domino Designer installieren.

Read More

29.01.2010

Artikel über Lotus Notes/Domino in der Perl-Zeitschrift $foo

Category: Lotus Notes, Lotus Domino, Perl, Java, assono Framework 2


Lotus Notes ist für sich genommen schon eine starke Sache. Aber man kann es auch noch vielfältig erweitern z.B. mit Perl und Java, wie bereits in diesem Blog-Eintrag gezeigt.
Für die aktuelle Ausgabe der Zeitschrift $foo habe ich ein solches Beispiel einer (zugegebenermaßen eher ungewöhnlichen Anwendung) beschrieben. Insbesondere *nix- Administratoren, die auch Notes/Domino einsetzen, wird der Artikel interessieren. Anschaulich wird gezeigt, wie man mit Perl über Java-Schnittstellen auf Notes/Domino-Anwendungen zugreift und so die unterschiedlichen "Welten" miteinander verbindet. Auf jeden Fall eine hochinteressante Kombination.
Read More

20.08.2009

Domino - Welten verkleben mit Perl

Category: Lotus Domino, Java, Perl, Entwicklung


Wenn man Notes/Domino und Perl in einem Satz erwähnt, werden die meisten (zumindest die, die beides kennen) sicher sofort an OLE-Automatisierung denken, aber es geht auch anders.

So kann man mit dem Perlmodul "Inline::Java" die Java-Schnittstellen des Domino-Servers nutzen und so die Stärken von Perl und Java kombinieren.
Gerade wenn man mal ein kleines Tool für zwischendurch benötigt, ist Perl hier sehr nützlich - im Hintergrund verrichtet natürlich immer noch Java die Arbeit.
Read More

15.05.2009

Java Applet Zertifikate Lotus Notes/Domino laufen ab

Category: Java, Web-Entwicklung, Lotus Domino


Für alle, die heise regelmäßig lesen ist das keine Neuigkeit. Für die anderen hier ein Link:
http://www.heise.de/newsticker/Zertifikate-fuer-Java-Applets-in-Lotus-Domino-laufen-ab--/meldung/137891

Das Ablaufen der Zertifikate betrifft alle, die einige Web - basierte bzw. -fähige Standardanwendungen von Lotus Notes nutzen oder in Einzelfällen, welche für den Web - einsatz haben entwickeln lassen. Sprechen Sie das im Einzelfall mit den Entwicklern ab.
Außerdem betroffen sind Nutzer der Sametime-Konferenzen und Lotus Quickr.

Zum Download und Installation neuer Applets hier eine Anleitung von IBM:
  • Domino: http://www-01.ibm.com/support/docview.wss?rs=899&uid=swg24022981
  • Sametime: http://www-01.ibm.com/support/docview.wss?rs=899&uid=swg21385734
  • Quickr: http://www-01.ibm.com/support/docview.wss?rs=0&uid=swg21385599

Wir stehen natürlich auch gerne in Rat und Tat zur Verfügung.

23.04.2008

JAX 08: 5 Regeln für eine bessere Architektur (Update)

Category: JAX, Konferenzen, Java


A picture named M2

Alexander von Zitzewitz
5 Regeln für eine bessere Architektur

Your most frightening enemy: the Dragon of Complexity

Erosion of Architecture - Dragon Fire
Architecture erosion is quite a known problem
  • System knowledge and skills are not evenly distributed
  • coupling and complexity grows faster than system size. When you realize it, it is often too late.
  • Unwanted dependencies are created without being noticed.
  • Management usually doesn't care about internal quality (black box)
  • Time pressure is always a good excuse to sacrifice structure

Typical symptoms of an eroded architecture are a high degree of coupling and a lot of cyclic dependencies
  • Changes become increasingly difficult
  • Testing and code comprehension also become increasingly difficult
  • Deployment problems of all kind

Read More

23.04.2008

JAX 08: Web 2.0 Enterprise: Wiki- und Blog-Anwendungen mit Java

Category: JAX, Konferenzen, Java


A picture named M2

Frank Pientka
Web 2.0 Enterprise: Wiki- und Blog-Anwendungen mit Java
  • Web 2.0, semantisches Netz und soziale Software
  • Wiki - schnelles und kleines Web-CMS
  • Standards, Bibliotheken, Werkzeuge
  • Blog
  • Ausblick

Read More

22.04.2008

JAX 08: 20 Grundkonzepte der Softwarearchitektur

Category: JAX, Konferenzen, Java


A picture named M2

Markus Völter:
20 Grundkonzepte der Softwarearchitektur

Concepts
  • Atomic
  • Combinable
  • Technology Neutral
  • Describable Named
  • (Patterns, Laws, Principles)

Read More

22.04.2008

JAX 08: API-Design - Entwurf stabiler und beständiger Schnittstellen

Category: JAX, Konferenzen, Java


A picture named M2

Arno Haase, Sven Efftinge:
API-Design – Entwurf stabiler und beständiger Schnittstellen

API - Application Programming Interface
SPI - Service Provider Interface -
  • Art von API zur Konfiguration,
  • siehe Strategy-Pattern, Listener, Callback-Funktionen
  • in Java häufig Interface
  • Clients müssen SPI implementieren

Read More

22.04.2008

JAX 08: Java Performance Engineering

Category: JAX, Konferenzen, Java


A picture named M2

Christian Kücherer, Georg Molter:
Java Performance Engineering

Performanceprobleme haben viele Symptome
  • schlechte Antwortzeiten
  • geringer Durchsatz
  • langsame GUI-Raaktivität
  • Hänger im Programmablauf
  • geringe Verfügbarkeit
  • indeterministisches Systemverhalten
  • Instabilität des Systems
  • usw.

Folge
Nicherfüllung nicht-funktionaler Anforderungen
Das System kann nicht so genutzt werden wie geplant.

Read More

22.04.2008

JAX 08: Keynote - The Future of Enterprise Java

Category: JAX, Konferenzen, Java


A picture named M2
Heute ist der erste "richtige" Konferenztag auf der JAX 08. Und der Tag beginnt mit einer Keynote, womit sonst?

Rod Johnson, SpringSource:
The Future of Enterprise Java

Does enterprise Java have a future?
Third answer: "No one will date a Java Programmer"

Java market is not shrinking and still huge in comparison to e. g. Ruby.
Still growing, but there are strong competitive threats, and Java hasn't fully delivered on its promise, yet.

Forces for change
  • Current trends
  • Introduction to Java EE 6
  • The market scenario
Technology forces
Six predictions for the future
  • plus two totally free bonus predictions

Read More

05.03.2008

Java: Option -jar beim Aufruf des Java-Interpreters ignoriert den Classpath

Category: Java


java_logo.gif Diese Erkenntnis hat mich einige Kopfschmerzen gekostet.  Damit es anderen nicht auch so geht, sind hier die Details.

Zunächst als Erklärung zur Option -jar beim Aufruf von java.exe. Wenn in einem Projekt mehrere Javaklassen benötigt werden, so können sie zusammen in einer komprimierten Datei gespeichert werden. Eine solche Datei ist im Prinzip eine ZIP-Datei mit der Dateiendung JAR. Damit der Java-Interpreter (java.exe) weiß, welche der Klassen er beim Aufruf direkt ausführen soll, existiert in der JAR-Datei ein so genanntes Manifest. Mit
java.exe -jar MyProject.jar
wird also Java so aufgerufen, dass in der JAR-Datei nach dem Manifest gesucht wird und die dort angegebene Klasse aufgerufen wird.
Read More

21.06.2007

SnTT: Bilder per Agent herunterladen und skalieren auf Linuxserver

Category: Show-n-Tell Thursday, Lotus Notes, Java

showntell-w120.png
Bilder von einer Webcam herunterladen und skalieren mittels eines Lotus Notes Agents kann ja nicht so schwierig sein. Schließlich gibt es mit Java Image I/O ein entsprechendes Paket, dass alles notwendige mitbringt. Nach ein paar Versuchen funktioniert die Lösung auch in einem Backend-Agent. Zumindest tut sie das auf einem Domino Server, der unter Windows läuft.

Läuft der Server unter Linux gibt es eine hässliche Fehlermeldung:
java.lang.NoClassDefFoundError: sun/awt/X11GraphicsEnvironment

Nach ein wenig Recherche war die Ursache für das Problem gefunden. Java Image I/O verwendet Funktionen des Betriebssystems, um die Grafiken herunterzuladen und umzuwandeln. Wenn der Server unter Linux ohne graphische Oberfläche läuft, stehen diese Funktionen aber leider nicht zur Verfügung.

Die Lösung für dieses Problem heißt JIMI. Ursprünglich wurde JIMI entwickelt, um unter Java 1.1.x die Bearbeitung von Bildern zu ermöglichen. Sun stellt es kostenlos als Download zur Verfügung: http://java.sun.com/products/jimi/

Read More

Tags

Deutsche RSS-Feeds (German)

Custom Button Custom Button

English RSS feeds

Custom Button Custom Button