Netbeans 6.8 braucht neue JAX-WS Version >=2.2

Konsumiert man nach dem Update von Netbeans 6.8 einen Webservice mittels des WS-Import-Tools kommt folgender Fehler:

You are running on JDK6 which comes with JAX-WS 2.1 API, but this tool requires JAX-WS 2.2 API. Use the endorsed standards override mechanism (http://java.sun.com/javase/6/docs/technotes/guides/standards/), or set xendorsed="true" on .

Lösen lässt es sich folgendermaßen:

  • JAR runterladen und entpacken
  • Aus dem entstandenen Lib-Verzeichnis folgendes kopieren:
    Linux: cp jax*api.jar $JAVA_HOME/lib/endorsed
    MacOS X: cp jax*api.jar /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/lib/endorsed/

Eigentlich recht straight-forward und wie in der Fehlermeldung beschrieben. Hat mich allerdings dennoch einige Zeit gekostet, vielleicht hilfts jemandem.

1 Kommentar 01.01.2010

Window Snapping wie in Windows 7 unter Ubuntu!

Windows 7 kommt mit einem neuen Feature namens “Aero Snap”, mittels dessen man Fenster schnell anordnen kann. Das sieht dann wie folgt aus:

Die Jungs von OMG Ubuntu haben die Funktionalität unter Ubuntu nachgebaut! Nice!

Kommentar hinzu 11.11.2009

Neue Ajax-Metasuchmaschine

Ohne grosses Trara präsentiere ich mit Skatr.de MetaScroll.com mein neuestes Pet-Projekt! Idee dahinter ist es, eine Meta-Suchmaschine zu bauen, bei der es nicht mehr nötig ist, sich durch die einzelnen Seiten zu hangeln. Erreicht man das Ende der Ergebnisliste, wird diese automatisch durch die nächsten Einträge verlängert und man kann bequem weiterscrollen.

Interessantes technisches Detail hierbei: Die Suchanfragen an die jeweiligen Suchmaschinen werden parallel von einzelnen Threads abgearbeitet, um die Performance hier nicht durch das Hinzufügen weiterer Suchmaschinen in den Keller zu ziehen.

Die nächsten Features, an denen ich momentan arbeite sind…

  • Integration von Bing als weiterer Quelle
  • Verbesserung der Optik
  • Verbesserung der Suchperformance

Vielleicht wechselt ja der ein oder andere irgendwann mal :)

Update: Die Domain hat sich mittlerweile geändert, ich hoffe der Name ist nun ein wenig aussagekräftiger. Ausserdem ist die Bing-Integration mittlerweile vorhanden. Momentan arbeite ich daran, Wikipedia & Wolfram Alpha mit in die Abfragen aufzunehmen. Stay tuned!

7 Kommentare 26.06.2009

eBay Auktionen automatisch zum Kalender hinzufügen

Wer gerne seine von ihm beobachteten Auktionen auf einen Blick in seinem Terminkalender (Outlook, iCal, usw) sehen möchte, hat hierfür nun ein ganz einfaches, kostenloses Tool zur Verfügung.

Auction Reminder bietet nach einer kurzen Authentifizierung mit dem bestehenden eBay-Login einen persönlichen ICS-Feed, der alle beobachteten Auktionen eines Users enthält. Wird dieser einmalig im Terminkalender eingetragen erscheinen dort in Zukunft automatisch alle Auktionen, die dieser User bei eBay beobachtet. Hierfür ist idR. keine zusätzliche Software nötig.

Diese Termine können dann bei Bedarf auch, wie alle anderen Termine, mit dem Handy oder PDA abgeglichen werden.

Da dieser Dienst von mir in meiner Freizeit entwickelt wird und sich noch in einem Beta-Stadium befindet freue ich mich über euer Feedback!

Kommentar hinzu 25.05.2009

Mini-Howto: XML an Java-Klassen binden mit Jaxb

Mittels Jaxb lässt sich einfach eine XML-Quelle in Java-Objekte umwandeln. Nötig ist hierfür zum einen die Jaxb-Library und ein XSD.

Hat man ein XSD geschrieben (oder vielleicht auch vorliegen) ist es ein leichtes daraus die nötigen POJOs generieren zu lassen (hier benutze ich die Netbeans-eigene Kopie des xml-java-converter:

java -jar "path/to/NetBeans/ide10/modules/ext/jaxb/jaxb-xjc.jar" -d your/target/src/dir -p your.package.name path/to/your/xsd.xsd

Ist das XSD fehlerfrei wurden die POJOs generiert und in dem unter dem Parameter -d angegeben Verzeichnis abgelegt. Mit folgendem Stück Code lässt sich jetzt ein XML-Abruf in POJOs umsetzen (die rot markierten Zeilen müssen jeweils angepasst werden):

HttpURLConnection conn;
MyObject my = null;
JAXBContext jc = null;
InputStreamReader sr;

try {
jc = JAXBContext.newInstance("namespace.of.mapped.pojos");
} catch (JAXBException ex) {
System.out.println(ex.getMessage());
}

try {
//Authenticator.setDefault(this.getAuthenticator()); // Wenn nötig
conn = (HttpURLConnection) new URL(url).openConnection();
conn.addRequestProperty("Accept-language", "de"); // Beispiel & Platz für eigene Header
conn.setRequestMethod("GET"); // Oder Post, je nachdem
} catch (MalformedURLException ex) {
return null;
} catch (IOException ex) {
return null;
}

// Header im Result überspringen
int i=1;
String hKey;
while ((hKey = conn.getHeaderFieldKey(i)) != null) {
conn.getHeaderField(i);
i++;
}

try {
Unmarshaller u = jc.createUnmarshaller();
my = (MyObject) u.unmarshal(conn.getInputStream());
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
catch (JAXBException ex) {
System.out.println(ex.getMessage());
}

MyObject my ist nun eine Instanz des POJOs, dass den Rootknoten im XML entspricht. Mittels der Getter kann entsprechend auf die jeweiligen Attribute zugegriffen werden. Das ganze lässt sich vermutlich eleganter und schöner lösen (ich bin für Vorschläge dankbar!), aber es funktioniert erstaunlich gut.

Kommentar hinzu 21.04.2009

Vorherige Artikel