Oracle Coherence/Fusion Middleware Wettbewerb

Geschrieben von everflux am Juni 23rd, 2010

Oracle Coherence ist eine Datagrid Lösung, mit der sich auf relativ einfache Weise Application-Clustering für gesteigerte Verfügbarkeit oder Lastskalierung realisieren lässt. (Oracle Coherence ist zum kostenlosen Download auf oracle.com/../coherence verfügbar, für den produktiven Einsatz sind ggf. kostenpflichtige Lizensierungen erforderlich.)
Mit einer Datagrid Lösung lassen sich Rechenaufgaben verteilen, um ein Computing-Grid aufzubauen, hauptsächlich findet Coherence jedoch seinen Einsatz beim Clustering von Anwendungen wie z.B. dem Confluence Wiki von Atlassian, oder auch wenn es um verteiltes Caching von Daten geht. (Ähnlich wie memcached, dass im PHP Umfeld besonders populär ist.) Weiterlesen »

Spring/JPA/Hibernate: Error while committing the transaction (RollbackException / TransactionSystemException)

Geschrieben von everflux am Juni 20th, 2010

Das Spring Framework (http://www.springsource.org/) ist eines der am weitesten verbreiteten Frameworks im Java Enterprise Umfeld. Selbst mit JavaEE 6 findet in vielen Projekten Spring noch Verwendung. Mit diesem kleinen Beitrag möchte ein paar Tipps zum debuggen einer – in meinen Augen – frustrierenden wie zeitraubenden Situation geben:

org.springframework.transaction.TransactionSystemException: Could not
commit JPA transaction; nested exception is javax.persistence.RollbackException: Error while committing
the transaction	at
org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:476) at
org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit
(AbstractPlatformTransactionManager.java:754) at
org.springframework.transaction.support.AbstractPlatformTransactionManager.commit
(AbstractPlatformTransactionManager.java:723) at
org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning
(TransactionAspectSupport.java:374)

Was ist da los? Ein Fehler bei der Ausfuehrung einer Transaktion! Und woher kommt der? Schaut man in den JpaTransactionManager in die doCommit Methode, so sieht es erst mal so aus, als handele es sich um eine Exception die von „weit weg“ kommt. Vielleicht ein Fehler in der Datenbank, dem Treiber oder etwas in der Richtung. Leider fehlt der Exception auch der „cause“ – eine geschachtelte Exception, die normalerweise schnellen Aufschluss über die Art des Programmierfehlers gibt. (Gern gesehen: NullpointerException 🙂 ) Weiterlesen »

Oracle veröffentlicht Netbeans 6.9

Geschrieben von everflux am Juni 16th, 2010

Netbeans ist nun in der Version 6.9 von Oracle freigegeben worden. Die Entwicklungsumgebung für Java, PHP, JavaScript, Groovy, Scala, … wird von Oracle zusammen mit der OpenSource Community entwickelt. Das nun veröffentlichte Netbeans 6.9 enthält viele Neuerungen. Für PHP Entwickler besonders interessant ist die Unterstützung des Zend Framework in der aktuellen Version. Weiterlesen »

OpenJDK, Java 7 und Oracle

Geschrieben von everflux am Juni 3rd, 2010

Die Java Usergroup Muenster hatte Dalibor Topic zu Gast, der ueber OpenJDK und Java 7 referierte. (Ankündigung: http://www.jug-muenster.de/)

Interessant dabei: Seit OpenJDK in Debian und Ubuntu verfügbar ist, wird dies auch genutzt – ohne dabei jedoch zu Lasten der Nutzerzahlen des „Sun Java“ zu gehen. Es gibt hier also unterschiedliche Nutzer, und offenbar auch solche, die sich ganz bewusst für OpenJDK entscheiden.

Was bietet OpenJDK? Einen nie dagewesenen Einblick in die Entwicklung der am weitesten verbreiteten Sprache der Welt – Java. Dank OpenJDK kann man sich einen Einblick über Entwicklung, Verwaltung und Buildsystem verschaffen, und auch selber an der aktuellen Entwicklung teilhaben.

Und was kommt mit Java 7? Viele kleine Dinge (Projekt Coin), evtl. auch Closures, der Diamond Operator. Und natuerlich wird auch JavaFX durch Oracle massiv weiterentwickelt. (JavaFX ist eine RIA Platfform, die ueber Scene-Graph und Databinding die Entwicklung reichhaltiger grafischer Anwendungen stark erleichtert.) Webseite zu JDK7: https://jdk7.dev.java.net/

Einen Grossteil der Neuerungen betreffen Pruning (alte APIs sollen entfernt werden), Modularisierung der Laufzeitumgebung (Jigsaw) und das Fork-Join-Framework für verbesserte Concurrency. Da Java 7 durch Oracle gegen Ende des Jahres erwartet wird, ist nun der richtige Moment sich damit zu befassen!

Hibernate, JPA 2 und orphanRemoval=true

Geschrieben von everflux am Mai 30th, 2010

Seit JPA 2 gibt es endlich die Moeglichkeit verweiste Objekte einer Collection loeschen zu lassen, so dass keine Hibernate spezifischen Annotationen mehr erforderlich sind.

Hier am Beispiel einer unidirektionalen Assoziation mit JPA 2:

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
private Set<PhoneNumber> resultSet = new ArrayList<PhoneNumber>();

Seit Hibernate 3.5.0-Final wird dies auch unterstützt. Offenbar gibt es da aber noch (irgendwo) einen kleinen Bug. Auch kleine Bugs kann man sehr lange suchen. Wenn man weiß, dass ein Update auf Hibernate 3.5.2 Abhilfe schafft, kann man sich das Suchen auch sparen.
Man muss es eben nur wissen. Weiterlesen »

Münster: Vortrag zu OpenJDK / Java 7

Geschrieben von everflux am Mai 19th, 2010

Am kommenden Mittwoch, dem 26.5., findet ein Vortrag zum Thema OpenJDK / Java 7 in Muenster statt. Der Referent ist Dalibor Topic arbeitet als Java F/OSS Ambassador bei Sun Microsystems in Hamburg mit der OpenJDK Community daran, Java in GNU/Linux-Distributionen fest zu verankern und Portierungen auf neue Platformen in das OpenJDK-Projekt einzubinden. Desweiteren ist er bekannt als Mitbetreiber der kaffe.org-Virtual-Machine sowie des GNU-Classpath-Projekts.

Der Vortrag ist kostenlos für jeden Teilnehmer und wird folgende Themen behandeln:

Wie ist der Zwischenstand bei JDK 7? Welche Features sind drin? Was hat es mit Closures auf sich? Wie weit ist die Modularisierung des JDK fortgeschritten? Was bringt invokedynamic in der Praxis? Wie breit ist die OpenJDK-Community aufgestellt? Diese Session ist ein Report aus dem Maschinenraum von JDK 7 und der OpenJDK-Community. 

Weitere Informationen, Anfahrt etc. gibt es auf der Homepage der Java Usergroup Münster: http://www.jug-muenster.de/

Sun Java6 in Ubuntu Lucid

Geschrieben von everflux am April 28th, 2010

In Ubuntu Lucid 10.04 wird OpenJDK das standardmäßig installierte Java. Für den einen oder anderen Anwender oder Java Entwickler stellt sich OpenJDK (derzeit) nicht als sinnvolle Option dar. Neben der Möglichkeit Java – wie jede andere Drittsoftware – von Hand zu installieren und zu pflegen (was häufig vergessen wird), stellt Canonical die Sun Java Version (sun-java6-jdk etc.) über das „Partner“ Repository zur Verfügung.

Wer das Repository nicht in den Paketquellen hat, kann dies einfach hinzufügen:

  1. Synaptic Paketmanager aufrufen (oder ueber Systemverwaltung Softwarequellen)
  2. deb http://archive.canonical.com/ubuntu  lucid partner eintragen
  3. Pakete neu laden
  4. sun-java6-jdk und restliche passende Pakete installieren

Es ist davon auszugehen, dass die Sun Java Pakete auch zukünftig vernünftig gepflegt und auf relativ aktuellem Stand bleiben.

Skipfish und Ubuntu

Geschrieben von everflux am März 21st, 2010

Google hat mit dem Skipfish Projekt ein Sicherheitstool veröffentlicht, mit dem Webanwendungen auf ihre Sicherheit – oder auch Sicherheitslücken untersucht werden können.

Das in C++ Programm unterstützt Windows, Apple Mac OS X und Ubuntu als Betriebssysteme und – wie für Google üblich – wird die besonderes hohe Performanz als Feature genannt. Im folgenden gehe ich kurz die Schritte durch, Skipfish unter Ubuntu Linux zu betreiben. Weiterlesen »

Hudson + Maven: java.net.SocketTimeoutException: Accept timed out

Geschrieben von everflux am März 17th, 2010

Hudson und Maven sind an und für sich ein gutes Gespann… außer es funktioniert mal nicht.

Ausser der Meldung „Socket Timeout“ kamen nicht so viele  Hinweise:

[application] $ /usr/lib/jvm/java-6-sun/bin/java -Dmaven.repo.local=/home/hudson/maven-repository/ -Xms512m
-Xmx1024m -cp /home/hudson/hudson/plugins/maven-plugin/WEB-INF/lib/maven-agent-1.351.jar:
/home/hudson/maven/boot/classworlds-1.1.jar hudson.maven.agent.Main
/home/hudson/maven /home/hudson/hudson/war/WEB-INF/lib/remoting-1.351.jar
/home/hudson/hudson/plugins/maven-plugin/WEB-INF/lib/maven-interceptor-1.351.jar 57590
/home/hudson/hudson/plugins/maven-plugin/WEB-INF/lib/maven2.1-interceptor-1.2.jar
ERROR: Aborted Maven execution for InterruptedIOException
java.net.SocketTimeoutException: Accept timed out
	at java.net.PlainSocketImpl.socketAccept(Native Method)
	at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:390)
	at java.net.ServerSocket.implAccept(ServerSocket.java:453)
	at java.net.ServerSocket.accept(ServerSocket.java:421)
	at hudson.maven.MavenProcessFactory$SocketHandler$AcceptorImpl.accept(MavenProcessFactory.java:167)
	at hudson.maven.MavenProcessFactory.newProcess(MavenProcessFactory.java:202)
	at hudson.maven.ProcessCache.get(ProcessCache.java:231)
	at hudson.maven.MavenModuleSetBuild$RunnerImpl.doRun(MavenModuleSetBuild.java:455)
	at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:416)
	at hudson.model.Run.run(Run.java:1240)
	at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:304)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:122)
Finished: ABORTED

Aber auch eine Lösung konnte ich für das Hudson/Maven Problem finden: Deaktivieren von ipv6 brachte die Lösung. Ob es wirklich am ipv6 liegt, oder was dann der tatsächliche Grund war, habe ich nicht weiter untersucht.

Das sonst bei Java Anwendungen gerne verwendete -Djava.net.preferIPv4Stack=true
half in meinem Fall jedenfalls nicht.

Google Exception Handling

Geschrieben von everflux am Februar 5th, 2010

Google schafft es immer wieder cool, um nicht zu sagen charmant zu sein. Diese Exception kam beim duplizieren einer Präsentation unter Google Docs:

Wer kann da böse sein? Besonders angenehm finde ich:

  • Google bedankt sich dafür, dass man mitgeholfen hat, einen Bug zu finden
  • Eine Entschuldigung gibt es auch
  • Aus der Meldung wird klar, dass es sich jemand ansehen wird, ohne dass man einen Fehler melden muss o.ä.
  • Und ganz besonders für technisch interessierte gibt es einen Ausschnitt aus dem Stacktrace, so dass nicht das Gefühl aufkommt, man würde irgendwie lediglich abgespeist

Nicht zu vergessen sind die Google Docs und Writely Entwickler auch nur Menschen – irgendwie beruhigend, dass auch bei denen NullpointerException auftreten können….


http://everflux.de/
Copyright © 2007, 2008 everflux. Alle Rechte vorbehalten. All rights reserved.