Java
Aus Xmaswiki
Inhaltsverzeichnis |
Allgemeines
Standardcode
- Main Methode
public static void main (String args[]) {..}
- If-else
if (true) {
..
} else {
..
}
- Zeilenumbruch: \r\n
Javamail
- Oracle / Sun Link zur aktuellen Version http://www.oracle.com/technetwork/java/javamail/index.html
- Mails als gelesen markieren https://blog.tuinslak.org/2008/10/imapgmail-mark-as-read/
- Authentication Exception http://stackoverflow.com/questions/2047942/how-to-resovle-javax-mail-authenticationfailedexception-issue
- Javamail SSL etc http://stackoverflow.com/questions/4726175/javamail-weblogic-imap-ssl-and-exchange-2010
- SSL Connectivity http://forums.oracle.com/forums/thread.jspa?threadID=794396&start=0&tstart=0
- No trusted certificate found http://www.java-forum.org/netzwerkprogrammierung/20144-no-trusted-certificate-found.html
- Imapordner (Google Mail) auslesen http://stackoverflow.com/questions/4790844/how-to-get-the-list-of-available-folders-in-a-mail-account-using-java-mail
- Mails von Google Mail über Imap abfragen http://stackoverflow.com/questions/61176/getting-mail-from-gmail-into-java-application-using-imap
WebServices
Sammlung von öffentlichen/frei verfügbaren Webservices: http://www.webservicex.net/
Ab Java 6.x besteht die Möglichkeit aus einer WSDL Datei Javaklassen zu geniereren um auf Webservices zuzugreifen.
Dies wird mittels des Aufrufes wsimport gemacht. Darüber kann entweder eine lokale Datei oder eine Webadresse aufgerufen werden.
wsimport "D:\Eigene Dateien\Webcenter\WebService\wsdl11.xml"
oder remote:
wsimport "http://server:port/pfad/wsdl11.xml"
Falls eine Authentifizierung vorhanden ist sollte dies mit Username & Passwort in der Adresse aufrufbar sein:
wsimport "http://username:passwort@server:port/pfad/wsdl11.xml"
Daraus werden dann Javaklassen *.class generiert, die man einbinden kann.
Erstellung eines JavaClients
- http://laurii.info/articles/2010/05/14/web-services-create-a-client-with-wsimport
- http://rathinasaba.wordpress.com/category/webservice/
Zertifikate / SSL
- keytool zum Verwalten der Zertifikate http://download.oracle.com/javase/1.3/docs/tooldocs/win32/keytool.html
- http://forums.oracle.com/forums/thread.jspa?messageID=1498129
- Certificate conatins unsupported critical extensions http://forums.oracle.com/forums/thread.jspa?messageID=3942275
- Installation von Java Zertifikaten auf Webserver (Java 6/7) http://www.thawte.nl/fr/support/manuals/sun/sun+java+system+web+server/install+certificate/
- No trusted certificate found http://www.java-forum.org/netzwerkprogrammierung/20144-no-trusted-certificate-found.html
TrustStore anzeigen
System.getProperty("javax.net.ssl.trustStore")
Debug bei Zertifikatsverbindungen
- folgende Parameter sind bei Anwendungen mit SSL Zertifkaten möglich um die Zertifikatsverbindung zu debuggen:
java -Djavax.net.debug=all MyApp java -Djavax.net.debug=ssl MyApp java -Djavax.net.debug=ssl:handshake:trustmanager MyApp
oder falls man dies nicht mit dem Java Aufruf machen will gehts so über Properties:
System.setProperty("javax.net.debug","ssl:handshake:trustmanager");
oder so wenn man Properties erstellt hat:
props.put("javax.net.debug","ssl:handshake:trustmanager");
Falls man Entwicklungsumgebungen wie Eclipse oder JDeveloper nutzt kann man diese (nur in der Form -Djavax.net.debug=all) bei Run Configurations im Bereich Arguments bei VM arguments (in Eclipse) oder Manage Run Configurations (edit default) im Feld Java Options (bei JDeveloper) eintragen. Weitere Infos unter http://java.sun.com/developer/technicalArticles/Security/secureinternet2/
keytool / Zertifikatsverwaltung
Für das Verwalten der Zertifikate und deren Speicherung ist das Tool keytool.exe vorgesehen. Dies ist im JRE/JDK von Oracle enthalten und befindet sich im JAVA_HOME\bin Ordner. Fürs aktuelle JRE6 Stable Release kann man die originale Dokumentation hier finden: http://download.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html
Zertifikate anzeigen
C:\Program Files\Java\jre6\lib\security>keytool -list -keystore "C:\Program Files\Java\jre6\lib\security\cacerts"
Zertifikat hinzufügen
Adresse im Web aufrufen und mittels Firefox das Zertifikat exportieren
- linksklick auf Adresszeile -> weitere Informationen
- weiter auf Sicherheit und Zertifikat anzeigen
- Details und dann exportieren als X.509 (PEM)
- Nun dieses exportierte Zertifikat importieren.
c:\Program Files\Java\jdk1.6.0_22\bin\keytool -import -alias imap_cer -file mail.google.com.pem -keystore cacerts -storepass changeit
Zertifikat exportieren
Anhand dieses Beispielcodes sieht man wie ein Zertifikat aus dem Standard JDK Zertifikatsspeicher (keystore=cacerts) exportiert wird. Dabei muss die Datei in der gespeichert wird, als leere Datei (equifaxsecureca.cer) vorliegen, ansonsten bekommt man einen "FileNotFound" Error.
D:\Eigene Dateien\Webcenter>keytool -export -keystore "C:\Program Files\Java\jre6\lib\security\cacerts" -alias equifaxsecureca -file equifaxsecureca.cer -storepass changeit
Zertifikat importieren
Hier anhand des Zertifikats was von Google Mail benutzt wird. Dies wird in diesem Beispiel in einen Weblogic Server importiert.
keytool -import -alias equifaxsecureca -file equifaxsecureca.cer -keystore "D:\fm11gr1\wlserver_10.3\server\lib\DemoTrust.jks" -storepass DemoTrustKeyStorePassPhrase
Zertifikatsstore importieren
Für den kompletten Import eines Zertifikatsstore benötigt man folgenden Aufruf:
keytool -importkeystore -srckeystore "C:\Program Files\Java\jre6\lib\security\cacerts" -destkeystore "C:\oracle\Middleware\wlserver_10.3\server\lib\DemoTrust.jks" -srcstoretype JKS -deststoretype JKS -srcstorepass changeit -deststorepass DemoTrustKeyStorePassPhrase
Einstellungen
- mehr Speicher: -Xmx256m
Webstart
- Java-Projekt in Eclipse erstellen
- Export -> Java -> Runnable JAR file
- Launch Configuration -> Auswahl der Mainmethode/Launch Configuration
- Export destination -> Auswahl des Verzeichnisses und Benennung der Jar-Datei -> Finish
- Export -> Java -> Runnable JAR file
- Keystore anlegen
- keytool -genkey -keystore keystore -alias <user>
- Alle Eingaben machen dabei der Einfachheit halber Keystore und Userpasswort gleich setzen. Als Landeskennzeichen "DE".
- keytool -genkey -keystore keystore -alias <user>
- Erstellte Jar-Datei signieren
- jarsigner -keystore keystore hello_world.jar <user>
- Passwort entsprechend eingeben
- jarsigner -keystore keystore hello_world.jar <user>
- jnlp-Datei erstellen
- Diese sollte folgendese Format besitzen:
<?xml version="1.0" encoding="UTF-8"?> <jnlp spec="1.0+" codebase="http://localhost/webstart" href="hello_world.jnlp"> <information> <title>Hello World</title> <vendor>domain.de</vendor> <homepage href="http://domain.de"/> <description>Hello World</description> <offline-allowed/> </information> <security> <all-permissions/> </security> <application-desc main-class="de.domain.hello_world.Main"> <argument>-nosplash</argument> </application-desc> <resources> <j2se version="1.4+" /> <jar href="hello_world.jar"/> </resources> </jnlp>
- html-Datei erstellen
- Inhalt sollte sein: <a href="hello_world.jnlp">Launch the application</a>
Links:
Eclipse
serialVersionUID Warning deaktivieren
Window -> Preferences -> JAVA -> Compiler -> Errors/Warnings -> Potential programming problems -> Serializable class without serialVersionUID -> Ignore
