Kai Freikorps Kai Tracid Kai Winding

buy CD Albireon download music Apparat download albums After The Eulogy albums download 2 Preciious, Lee Aaron Arthur Cordewener A Beautiful Machine Absolum online tracks Audioholics Alio Die and Zeit A Beautiful Machine Absolum buy albums Animal Collective (feat. Vashti Bunyan) download music Artento Divini online music AZ-Rotator buy tracks Alfven, Hugo buy Arizona Dream A Beautiful Machine albums buy Alexi Delano buy albums Andy Moor Annie Haslam A Beautiful Machine Absolum download CD 2Pac - Makaveli and Dillinger Accept A Beautiful Machine Absolum online albums Agresion buy CD Apparat Amsterdam Klezmer Band A Beautiful Machine Absolum online CD Acid Rain buy Anugama and Sebastiano A Beautiful Machine buy music A Split Second albums download Apocalypse download Asrai A Beautiful Machine download mp3 2 Preciious, Lee Aaron online mp3 Adam Freeland online CD A-Ha buy tracks 4 Strings and Tina Cousins buy CD Artie Shaw online CD AZ download music Amauta and Rijchary buy music ASC feat Intex Systems buy tracks Arruga, Lombardo and Friends buy music Ashen Light download Aidan Baker vs. Cymbl A Beautiful Machine albums buy Angels and Airwaves download Astrid Williamson A Beautiful Machine Akwid and Jae-P A Beautiful Machine Absolum online CD Alejandro Sanz buy tracks Aly and Fila buy tracks Alex Sword and John Chevalier online mp3 Abazagorath albums download Arthur Alexander download albums Anchors for Arms download CD Anuradha Paudwal, Sanjeev Ab.. albums download Altiplano De Chile download tracks Acron online albums Auberon buy mp3 A New Age In Relaxation online mp3 Avail albums download Angelo Badalamenti download Alan Menken A Beautiful Machine buy tracks Arcane online tracks Alternative Control online Agatus A Beautiful Machine download CD Adham Shaikh download music 68 Beats download music Alan Sorrenti buy CD Arj Snoek download Aidan Baker A Beautiful Machine download CD Akira Takasaki buy music Anathema online mp3 Alla Zagaykevych online Altus and Silvercord A Beautiful Machine download mp3 Arnold Schoenberg and Anton Webern buy mp3 Alexander online Aes Dana A Beautiful Machine download mp3 5Ive's Continuum Research Project buy mp3 Alastair Galbraith buy albums A Javelin Reign buy music Arzu buy mp3 Ahmed Sahin download tracks Apache Indian download CD Alex Parsons and Tommy Four Seven Aalto A Beautiful Machine Absolum

August 16th, 2007

java.rmi.NoSuchObjectException

Posted by frank in Java

Heute erreichte mich die Exception java.rmi.NoSuchObjectException mit der Meldung “No such object in table”. Diese Meldung habe ich zuerst nicht ganz verstanden, denn der Client hat ja zuvor über Lookup das Objekt erfolgreich geholt. Dennoch trat anschließend bei der Verwendung diese Meldung auf.
Das Problem ist jedoch so einfach wie zugleich auch etwas versteckt. Bei einem Lookup des Clients erfolgt dies auf die RMI-Registry. Diese hält die Stubs bereit und bei einem Lookup erhält der Client Informationen wie er zum eigentlichen Remote-Objekt gelangt. Der Lookup war also kein Problem. Bei der ersten Verwendung des erhaltenen Objektes wird nun eine Verbindung zum RMI-Server aufgebaut und dann das Remote-Objekt verwendet. Dies war jetzt nicht mehr da und damit kam es zu dieser Meldung. Aber warum war es nicht mehr da? Ganz einfach: Der Garbage Collector hatte es aus dem Speicher entfernt.
Die Lösung ist daher, dass die Instanz, die beim Erzeugen des UniCastRemoteObjects verwendet wird, mit gehalten werden muß, damit diese nicht vom GC entfernt wird.

August 15th, 2007

RMI Server im NAT-Netzwerk betreiben

Posted by frank in Java

RMI ist ja das Werkzeug schlechthin um verschiedene Javaprozesse miteinander kommunizieren zu lassen. Es können damit entfernte Methoden aufgerufen (Remote Method Invocation) werden, als wäre die Klasse lokal verfügbar. Da sich Java selbst um die ganze Kommunikation über TCP kümmert, hat man natürlich wenig Einflussmöglichkeiten. Betreibt man nun einen RMI-Server hinter einem NAT-Router und möchte diesen vom Internet aus zugreifbar machen, so wird einem immer wieder auf Clientseite eine Exception um die Ohren fliegen, die sagt dass das Netzwerk mit z.B. der IP 192.168.x.x nicht verfügbar wäre. Grund hierfür ist, dass der RMI-Server seine lokale IP nach außen sendet und nicht seine globale IP. Abhilfe schafft hier der Start der Applikation mit einem Parameter:

java -Djava.rmi.server.hostname=GLOBALEIP ...

Ab jetzt sendet der Server die globale IP als Hostnamen und ein Zugriff von Außerhalb ist problemlos möglich.

April 27th, 2007

Bytecode Provider bei Hibernate wechseln

Posted by frank in Java, J2EE, Hibernate

Seit der Version 3.2 können verschiedene ByteCode-Provider eingesetzt werden. So kann der Standard-Provider CGLIB durch z.B. javassist ersetzt werden. Diese Einstellung wird über den Parameter “hibernate.bytecode.provider” in der Hibernate-Konfiguration geregelt:

hibernate.bytecode.provider = cglib | javassist

Im JBoss-Server wird diese Einstellung standardmäßig auf javassist gestellt. Da dies jedoch teilweise noch Probleme gibt, vor allem bei RMI-Anwendungen, kann dies über die persistence.xml entsprechend angepasst werden. In der Version 4.0.4.GA vom JBoss produziert JavaAssist bei jeder Abfrage eine Unmenge an Klassen, die dann den PermGen Space zum Überlauf bringen.

April 17th, 2007

AnnotationFormatError bei Verarbeitung Annotations

Posted by frank in Java, J2EE

Ich wollte soeben von einer Klasse das Vorhandensein einer Annotation prüfen.

Hierzu wie gewohnt folgender Code:

Class clazz = …
if (clazz.isAnnotationPresent(Stateless.class)) { … }

Danach bekam ich folgende Exception um die Ohren geschmissen:

java.lang.annotation.AnnotationFormatError: Invalid default: public abstract java.lang.Class org.jboss.annotation.ejb.RemoteBinding.factory()
	at java.lang.reflect.Method.getDefaultValue(Method.java:709)
	at sun.reflect.annotation.AnnotationType.(AnnotationType.java:90)
	at sun.reflect.annotation.AnnotationType.getInstance(AnnotationType.java:64)
	at sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:202)
	at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:69)
	at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:52)
	at java.lang.Class.initAnnotationsIfNecessary(Class.java:2998)
…

Nach langer Suche und anfänglicher Fehlinterpretation bin ich dank des Bugeintrages bei Java dahinter gekommen, dass einfach eine Klasse nicht zur Verfügung stand. Die Annotation RemoteBinding definiert eine Klasse als Default-Wert, die in dem Standardpaket vom JBoss nicht mit enthalten ist und daher im JUnit-Test zu Problemen führen kann. Nachdem die richtige Bibliothek mit im Klassenpfad aufgenommen wurde, funktioniert auch die Analyze wie erwartet.

April 12th, 2007

verwendete AspectJ-Bibliothek austauschen

Posted by frank in Maven

Mit Hilfe des Maven Plugins “aspectj-maven-plugin” von Codehaus kann man problemlos den AspectJ-Compiler in Maven integrieren und seine Projekte entsprechend mit Aspekten anreichern. Diese Bibliothek ist jedoch von Haus aus an AspectJ Version 1.5.2a gebunden. Man erhält bei Verwendung einer anderen Version der Runtime von AspectJ automatisch immer folgende Fehlermeldung:

bad version number found in /Users/frank/.m2/repository/aspectj/aspectjrt/1.5.3/aspectjrt-1.5.3.jar expected 1.5.2a found 1.5.3

Dies ist soweit nicht schlimm, falls man mit dem Compiler aus 1.5.2a keine Probleme hat. Da ich jedoch auf die Behebung eines Bugs in Version 1.5.3 angewiesen war, nützte die Verwendung von 1.5.2a mir recht wenig. Dies ist jedoch dank des ausgefeilten Abhängigkeitsmanagement von Maven behebbar, indem auch die AspectJ-Tools in Version 1.5.3 verwendet werden. Dazu muss einfach unter den Abhängigkeiten bei Maven folgender Punkt eingetragen werden:

<dependency>
     <groupId>aspectj</groupId>
     <artifactId>aspectjtools</artifactId>
     <version>1.5.3</version>
     <scope>compile</scope>
</dependency>

Damit verwendet das AspectJ-Plugin automatisch die korrekte Version auch zum Kompilieren.

Januar 2nd, 2007

Caching von Queries

Posted by frank in Standard, J2EE, Hibernate

Wie bereits bei Caching von EJB3 EntityBeans geschrieben, können diese im JBoss gecached werden. Zusätzlich ist es auch möglich häufige Datenbankabfragen zu cachen. Wenn man den JBoss und seine persistence.xml gemäß der Anleitung ist automatisch alles für das Caching von Abfragen eingestellt.
Jetzt muss bei einer Abfrage lediglich das Attribute CacheAble gesetzt werden:

Criteria crit = session.createCriteria(Entity.class);
crit.setCacheable(true);

Zusätzlich kann auch noch mit setCacheRegion die CacheRegion im TreeCache gesetzt werden.
Bei der Verwendung von ResultTransformer muss noch die Referenz beachtet werden. Der Transformer wird als Parameter mit verwendet und muss für ein erfolgreiches Caching daher immer der Gleiche sein. Unter dem Interface “Criteria” werden verschiedene Transformer angeboten. Z.B. unter Criteria.DISTINCT_ROOT_ENTITY der DistinctRootEntityResultTransformer.

August 15th, 2006

Informationen über Plugins und deren Parameter

Posted by frank in Maven

In der pom.xml-Datei können natürlich auch die vorhandenen Plugins entsprechend konfiguriert werden. Dies geschieht an folgender Stelle:

<project><build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.0</version>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>
    </plugins>

  </build></project>

Im Beispiel wird das Compiler-Plugin konfiguriert, welches Java-Dateien im Projekt kompiliert. Es wird z.B. das Source-Level auf 1.5 gesetzt, damit auch Annotations verwendet werden können.
Die Parameterbeschreibungen sind auf der einen Seite teileweise bei Apache.org verfügbar, können jedoch mit Hilfe eines sehr interessanten Plugins auch direkt abgefragt werden. (weiterlesen…)

August 15th, 2006

OneToMany, ManyToOne und ManyToMany - Parent/Child und die konfigurierbaren Parameter

Posted by frank in Java, J2EE, Hibernate

Wichtig bei der Verwendung von Beziehungen unter Entitäten bei Hibernate ist die korrekte Definition wer Parent und wer Child ist. Davon abhängig ist, wie und wer die Beziehung in der Datenbank gepflegt wird und welche SQL-Statements ausgeführt werden.
Parents pflegen dabei die Beziehung in der Datenbank und Childs müssen lediglich in den Valueobjekten gepflegt werden.
Wir haben z.B. eine Klasse A, welche eine 1:m Beziehung zu B hat. Das heißt jedes B hat genau ein A, aber ein A kann bei mehreren B genutzt werden.
Dies sieht dann ungefähr so aus:
(weiterlesen…)

August 7th, 2006

Maven 2 - Einsatz im Eclipse

Posted by frank in Maven

Da man ja in der Regel nicht mit einem einfachen Editor wild auf einem Projektverzeichnis herum editieren möchte, sondern lieber eine komfortable IDE verwendet, stellt sich die Frage nach der Unterstütztung von Maven in den bekannten IDEs IntelliJ Idea, NetBeans oder Eclipse.
(weiterlesen…)

August 7th, 2006

Maven 2 - Erste Schritte

Posted by frank in Maven

Maven 2 verfolgt mit Ant einen nahezu gleichen Ansatz. Es soll die Erstellung eines Projektes unterstützt werden. Maven jedoch bietet darüber hinaus noch ein wesentlich umfassenderes Konzept mit an. Das Konzept beinhaltet die Verwaltung mehrerer Module und deren Version sowie Abhängigkeiten und hat als Ziel nicht nur die Erstellung von Binärdateien sondern auch von Dokumentationen oder beliebigen anderen Dateien.
(weiterlesen…)

Nächste Seite »