Archivi tag: Java

HTTPS su Tomcat

Per abilitare https è necessario un certificato. Su JavaStuff trovate un semplice tutorial su come crearne uno usando keytool delle j2sdk (es.: keytool -genkey -alias tomcat -keyalg RSA).

Fletto i muscoli e sono nel vuoto.

Ordinare un HashMap

E’ possibile ordine una hashmap in java utilizzando il seguente pezzo di codice:

Map yourMap= new HashMap();
// put some tuples in yourMap ...
Map sortedMap = new TreeMap(yourMap);

Fonte: Sun Java Forum

Fletto i muscoli e sono nel vuoto.

Reports molto grandi con Jasper Reports

In caso di report molto grandi è buona norma utilizzare la caratteristica “VIRTUALIZER” che permette di serializzare l’output delle pagine del report su file system, evitando di occupare tutta la memoria disponibile.

Esistono vari tipi di Virualizer

– JRFileVirtualizer, che tiene in memoria solo il numeri di pagine desiderato e conserva le pagine in eccedenza in dei file. In questo caso lo svantaggio è legato all’overhead della gestione dei file. Durante il processo di elaborazione vengono prodotti molti file. Alla fine del processo questi file vengono utilizzati per produrre il file del report finale. Questo virtualizer può essere usato quando si non si hanno sorgenti di dati molto grandi.

РJRSwapFileVirtualizer, che supera lo svantaggio del JRFileVirtualizer utilizzando un unico file in cui memorizzare le pagine in eccedenza. Questo virtualizer ̬ consigliato per sorgenti di dati molto grandi.

– JRGzipVirtualizer, è uno speciale virtualizer che invece di scrivere i dati in dei file, li comprime usando l’algoritmo gzip, riducendo l’uso di memoria.

Esempio:

JRSwapFile swapFile = null;
JRAbstractLRUVirtualizer vir = null;

if (getConfig().getVitualizerType().equalsIgnoreCase("swap")) {
  swapFile = new JRSwapFile(getOutputPath(), getConfig().getVitualizerMaxBlockSize(), getConfig().getVitualizerMinGrow());
  vir = new JRSwapFileVirtualizer(getConfig().getVitualizerMaxPage(), swapFile, true);
} else if (getConfig().getVitualizerType().equalsIgnoreCase("file")) {
  vir = new JRFileVirtualizer(getConfig().getVitualizerMaxPage(), getOutputPath());
}

if (vir != null) {
  params.put(JRParameter.REPORT_VIRTUALIZER, vir);
}

jp = JasperFillManager.fillReport(reportFilename, params, getDataSource());

Fletto i muscoli e sono nel vuoto.

powered by IMHO 1.3

java.util.zip – Compressing/Decompressing a Byte Array

Ecco un esempio di utilizzo di java.util.zip per la compressione di un array di byte.

byte[] input = "some some bytes to compress".getBytes(); // Configuriamo il livello di compressione
Deflater compressor = new Deflater();
compressor.setLevel(Deflater.BEST_COMPRESSION); // Inseriamo i dati da comprimere.
compressor.setInput(input);
compressor.finish(); // Creiamo un array espandibile per contenere i dati compressi.
// Non possiamo utilizzare un array delle stesse dimensioni dei dati in
// input perché non è garantito che la i dati compressi abbiano una
// dimensione inferiore all'originale.
ByteArrayOutputStream bos = new ByteArrayOutputStream(input.length); // Avvio compressione
byte[] buf = new byte[1024];
while (!compressor.finished()) {
int count = compressor.deflate(buf);
bos.write(buf, 0, count);
}
try {
bos.close();
} catch (IOException e) {
} // Prelievo dati compressi
byte[] compressedData = bos.toByteArray(); 

Decompressing a Byte Array

// Inseriamo i dati da decomprimere
Inflater decompressor = new Inflater();
decompressor.setInput(compressedData); // Creiamo un array espandibile per la decompressione dei dati.
ByteArrayOutputStream bos = new ByteArrayOutputStream(compressedData.length); // Avvio decompressione
byte[] buf = new byte[1024];

while (!decompressor.finished()) {
try {
int count = decompressor.inflate(buf);
bos.write(buf, 0, count);
} catch (DataFormatException e) {
}
}
try {
bos.close();
} catch (IOException e) {
} // Prelievo dati decompressi.

byte[] decompressedData = bos.toByteArray();

Fletto i muscoli e sono nel vuoto.

Fonte: The Java Developers Almanac 1.4

powered by IMHO 1.3

Internet Explorer Attachments Error

Ecco un altro errore di IE.

Quando inviate sulla response un allegato.

response.setHeader(“Content-disposition”,
“attachment; filename=” + outputFilename);

IE vi chiede se volete aprirlo o salvarlo. Se lo salvate non c’è problema. Tuttavia se provate ad aprirlo, molto probabilmente non riuscirete a farlo.

Per ovviare al problema bisogna aggiugere:

response.setHeader(“Expires”, “0”);
response.setHeader(“Pragma”, “cache”);
response.setHeader(“Cache-Control”, “private”);

Fletto i muscoli e sono nel vuoto.

powered by IMHO 1.3

Java String Padding

Java non propone un metodo built’in per il paddig di una stringa. O meglio non propone i classici metodi PadLeft, PadRight.

Per ovviare al problema ci sono due possibili alternative:

  • Crearsi da soli i metodi sopracitati.
  • Affidarsi ad una libreria di terze parti.

Nel primo caso basta cercare per internet (ops dovrei dire googlare ?).

Nel secondo caso vi consiglio un ottima libreria Jakarta Commons Lang che offre un insieme di utility per manipolare le core-class.

Fletto i muscoli e sono nel vuoto.