Dienstag, 30. November 2010

Upgrade Java Server Faces von 1.2 auf 2.0 - faces-config.xml

Java Server Faces 1.2.14 zu 2.0.3
Tomahawk 1.1.10

Beim Upgrade eines JSF Projekts müssen einige Bibliotheken ausgetauscht werden und wenn es sich um ein mit Eclipse und dem JBoss Tools erzeugtes Projekt handelt sogar einige der .settings Files per Hand angepasst werden (zumindest fand ich keinen anderen Weg).

Eine besondere Falle, insbesondere da die Fehlermeldungen nicht vorhanden sind, bzw. nichts aussagen, ist die faces-config.xml. Bemerkt habe ich das Problem, als aus irgendeinem Grund meine Tomahawk Tags nicht mehr in Html umgewandelt wurden sondern z.B. als t:graphicImage nutzlos direkt mitübertragen wurden.

Die Lösung war, den ersten Teil der faces-config, der so aussah:




durch eine 2.0 kompatible zu ersetzten:





Montag, 29. November 2010

Tomahawk: inputFileUpload

Java Server Faces: 2.0.3
Tomahawk 1.1.10 für JSF 2.0

Um Files angenehm hochladen zu können habe ich mal den Tag inputFileUpload aus der Tomahawk Bibliothek ausprobiert.

Dazu das xhtml File:


    
    
  

Zu beachten ist, das die Form den enctype braucht, sonst funkt es nicht.

Da die Bean:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.myfaces.custom.fileupload.UploadedFile;

public class FileUploadBean {
 private UploadedFile upFile;
 FileOutputStream out;
 InputStream stream;

 public FileUploadBean() {
 }

 public UploadedFile getUpFile() {
  return upFile;
 }

 public void setUpFile(UploadedFile upFile) {
  this.upFile = upFile;
 }

 public String upload() throws IOException {
  try {
   stream = upFile.getInputStream();
   long size = upFile.getSize();
   byte[] buffer = new byte[(int) size];
   stream.read(buffer, 0, (int) size);
   out = new FileOutputStream("/path/to/your/dir/testfile.jpg");
   out.write(buffer);
   System.out.println("Erfolgreicher Upload");
   return "ok";
  } catch (Exception ioe) {
   System.out.println("Upload gescheitert");
   return "no";
  } finally {
   if (stream != null) {
    stream.close();
   }
   if (out != null) {
    out.close();
   }
  }
 }
}


Tomahawk braucht noch einen Eintrag in das web.xml:


 
  Extensions Filter
  org.apache.myfaces.webapp.filter.ExtensionsFilter
  
   uploadMaxFileSize100m
  
   uploadThresholdSize100k
  
   
   Set the path where the intermediary files will be stored.
        
   uploadRepositoryPath/temp
 
 
  Extensions Filter
  Faces Servlet
 


Weiters darf man natürlich nicht vergessen das Bean in der faces-config.xml als ManagedBean zu registrieren.

Links:
Beispiel für inputFileUpload auf roseindia.net
Beispiel für inputFileUpload von balusc
Tomahawk Homepage

Freitag, 19. November 2010

Unterschied zwischen -DskipTests und -Dmaven.test.skip

Während -DskipTests zumindest die Testsourcen kompiliert, ignoriert -Dmaven.test.skip den Testfolder vollkommen.

Hierzu aus den Maven FAQ´s:
Add the parameter -Dmaven.test.skip=true or -DskipTests=true in the command line, depending on whether you want to skip test compilation and execution or only execution.


Links:
Maven Homepage

Sonntag, 14. November 2010

NetworkManager durch Wicd ersetzen

Der NetworkManager in Ubuntu hat die unangenehme Eigenschaft, manchmal den Dienst zu verweigern, namentlich das nm-applet tritt nach besonderen Ereignissen gerne mal in den Streik.

Nachdem ich meine Festplatte volllaufen hab lassen und mich nicht mehr als User einloggen konnte, aber zum Glück noch als root, damit wieder Platz freischaufeln konnte, war das nm-applet aus dem Panel verschwunden. In der Prozessliste war es wie üblich vorhanden, aber wlan0 verweigerte den Dienst, eth0 ging zum Glück noch, ist scheinbar unabhängig von dem nm-applet. Nachdem ich 2 Stunden Lösungsvorschlägen aus Foren gefolgt bin mochte ich nichtmehr. Frühere Erfahrungen mit dem Applet haben zwar gezeigt, daß es irgenwie immer geht, es wieder hinzukriegen, aber diesmal reichte es: NetworkManager raus, Wicd rein, so gehts:

sudo apt-get install wicd
sudo apt-get remove --purge network-manager network-manager-gnome

Anzumerken wäre noch, die eingespeicherten Verbindungen aus dem NetworkManager werden nicht übernommen, da sollte man sich im Fall des Falles die entsprechenden Einstellungen notieren.

Links
Ubuntuusers Beitrag