giovedì 29 maggio 2008
Firefox 3 Download Day 2008
E' stato rilasciato Firefox 3 RC1 ,e il 5 giugno verra rilasciata la RC2 per correggere i 10 bug individuati, pochi passi mancano alla release finale e firefox punta a stabilire un Guinness dei Primati.Partecipa anche tu, come fare?
Basta scaricare Firefox 3 durante il Download Day. Aderisci al evento.
La data ufficiale del rilascio di Firefox 3 verrà annunciata molto presto su Spread Firefox.
giovedì 15 maggio 2008
lunedì 28 aprile 2008
Crea il tuo avatar
Divertitevi a creare il vostro avatar.
giovedì 24 aprile 2008
vNES emulatore Nintendo su web
Prima posizione per Java nella classifica dei linguaggi 2008
www.jaaava.com un motore di ricerca per java
Upgrade To Ubuntu 8.04
martedì 15 aprile 2008
lunedì 14 aprile 2008
Java Remoting: hack a Wiimote
per iscriversi andare Jug Roma
lunedì 7 aprile 2008
venerdì 4 aprile 2008
Gestire code su WebSphere 6.0
Prima di tutto apriamo la Console di Amministrazione di WebSphere e andiamo a definire un bus,
che è lo strato logico interposto tra produttore e consumatore, può essere distribuito su varie macchine o processori.
CREAZIONE BUS
Sulla console andiamo
Integrazione Servizi > Bus > Inseriamo un nuovo bus, NOSTROBUS. (Non attivare la sicurezza).
Dopo la creazione del Bus andiamo ad aggiungere il nostro server come membro del bus
( NOSTROBUS >membri del bus)
Una volta finito di creare il bus andiamo a definire la destinazione, che non è altro che un punto di transito per ogni messaggio inserito nel bus.
CREAZIONE DESTINAZIONE
Per definire una destinazione andiamo su:
Integrazione Servizi > bus > NOSTROBUS > Destinazioni
Nuovo > Coda > Avanti > NOSTRADESTINAZIONE
Dopo aver definito il bus e la destinazione andiamo a creare una JMS Connection Factory che ci servirà per recuperare la connessione in fase di lettura e scrittura dei messaggi.
CREAZIONE JMS CONNECTION FACTORY
Per fare questo andiamo:
Risorse > Provider JMS > Messaggistica Predefinita > Produzione di connessioni JMS > Nuovo
A questo punto andiamo ad inserire il nome della nostra Connection Factory NOSTRACF , il riferimento jndi JMS/NOSTRACF e selezioniamo il bus NOSTROBUS
A questo punto possiamo andare a definire la nostra Coda (Queue):
CREAZIONE CODA
Per fare questo andiamo:
Risorse > Provider JMS > Messaggistica Predefinita > Code JMS > Nuovo
A questo punto andiamo ad inserire il nome della nostra Coda NOSTRACODA , il riferimento jndi
JMS/ NOSTRACODA e selezioniamo il bus NOSTROBUS e la nostra destinazione NOSTRADESTINAZIONE.
A questo punto abbiamo terminato la configurazione della nostra coda JMS , adesso andiamo a vedere come gestirle.
Inserire un messaggio sulla coda
Per inserire un messaggio sulla coda utilizziamo
private void inviaMessaggio(String messaggio) {
//Per prima cosa dichiariamo Connection,Session e MessageProducer di javax.jms.
Connection conn = null;
Session session = null;
MessageProducer mp = null;
try{
//Recuperiamo l’initialContext
InitialContext contesto = new InitialContext();
//Facciamo la lookup della ConnectionFactory tramite jndi
ConnectionFactory cf = (ConnectionFactory) contesto.lookup("JMS/NOSTRACF ");
// Facciamo la lookup della Destinazione tramite jndi della coda
Destination destinazione = (Destination) contesto.lookup("JMS/ NOSTRACODA ");
//Creiamo una connessione dalla Connection Factory
conn = cf.createConnection();
//Creiamo la sessione dalla Connessione
session = conn.createSession(false,Session.AUTO_ACKNOWLEDGE);
//Creo il producer passandogli come parametro la nostra destinazione
mp=session.createProducer(destinazione);
//Creo Messaggio
TextMessage message = session.createTextMessage();
//Inserisco il testo del messaggio
message.setText(messaggio);
//Imposto la destinazione del messaggio
message.setJMSDestination(destinazione);
//Imposto la modalità in fase di consegna (NON_PERSISTENT significa che il messaggio verrà letto solo da un singolo consumatore e poi sarà eliminato dalla coda)
mp.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
//Invio Messaggio
mp.send(message);
System.out.println("Messaggio Inviato!!!!");
}catch (Exception e) {
System.out.println("Messaggio Exception!!!!"+e.getMessage());
}finally{
if(conn!=null){try {
session.close();
mp.close();
conn.close();
}catch (Exception e1) {
e1.printStackTrace();
}
}
}
}
Leggere un messaggio dalla coda
Per leggere un messaggio dalla coda utilizziamo
private String leggiCoda(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
//Per prima cosa dichiariamo Connection,Session e MessageConsumer di javax.jms
Connection conn = null;
Session session = null;
MessageConsumer mc = null;
try{
//Recuperiamo l’initialContext
InitialContext contesto = new InitialContext();
//Facciamo la lookup della ConnectionFactory tramite jndi
ConnectionFactory cf = (ConnectionFactory) contesto.lookup("JMS/NOSTRACF ");
// Facciamo la lookup della Destinazione tramite jndi della coda
Destination destinazione = (Destination) contesto.lookup("JMS/ NOSTRACODA ");
//Creiamo una connessione dalla Connection Factory
conn = cf.createConnection();
//Creiamo la sessione dalla Connessione
session = conn.createSession(false,Session.AUTO_ACKNOWLEDGE);
//Creo il consumer passandogli come parametro la nostra destinazione
mc=session.createConsumer(destinazione);
//Apriamo la connessione
conn.start();
//Creiamo un ciclo while per rimanere in ascolto di messaggi presenti nella coda
TextMessage message = null;
while (true) {
Message m = mc.receive(1);
//Se c’è un messaggio restituiamo il testo.
if (m != null) {
message = (TextMessage) m;
System.out.println("Messaggio Ricevuto!!!!");
return message.getText();
}
}
}catch (Exception e) {
System.out.println("Messaggio Exception!!!!"+e.getMessage());
}finally{
if(conn!=null){try {
session.close();
mc.close();
conn.close();
}catch (Exception e1) {
e1.printStackTrace();
}
}
}
return null;
}
giovedì 20 marzo 2008
Upload e Download File
package com.myapp.struts.action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;
/**
*
* @author r.sheshi
*/
public class UploadFile extends ActionForm {
private FormFile file;
public FormFile getFile() {
return file;
}
public void setFile(FormFile file) {
this.file = file;
}
}
Dopo aver definito il form creiamo la jsp che si occuperà del upload.
<html:form action="/upload" enctype="multipart/form-data">
<html:file property="file" />
<html:submit value="carica" />
</html:form>
Il form deve avere l’enctype impostato “multipart/form-data” e usa il tag html:file con la propetrty impostata a “file” come mappata nel nostro form. A questo punto andiamo a creare la nostra action.
/**
*
* @author r.sheshi
*/
public class CaricaFileAction extends Action{
@Override
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception{
DynaActionForm f =(DynaActionForm) form;
FormFile ff = (FormFile) f.get("file");
return mapping.findForward("success");
}
}
Nella action ci prendiamo il file dal bean che struts ha valorizzato.Dopo aver preso il file bisogna andarlo a inserilo nel nostro campo blob. Pertanto ci creamo un oggetto che si occupera di trasferire i dati dalla action nel Dao che si ocuperà di inserirlo.
/**
*
* @author r.sheshi
*/
public class FileDto {
private int id;
private byte[] bytes;
private int size;
private String name;
private String contentType;
public void setBytes(byte[] bytes) {
this.bytes = bytes;
}
public byte[] getBytes() {
return bytes;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public void setSize(int size) {
this.size = size;
}
public void setContentType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public int getSize() {
return size;
}
public String getContentType() {
return type;
}
}
Adesso che abbiamo il nostro Dto che ha un variabile di classe un array di byte che verra valorizzarlo nella action dal FormFile con il metodo getFileData().
DynaActionForm f =(DynaActionForm) form;
FormFile ff = (FormFile) f.get("file");
FileDto dto= new FileDto();
dto.setBytes(ff.getFileData());
dto.setContentType(ff.getContentType());
dto.setSize(ff.getFileSize());
dto.setName(ff.getFileName());
Adesso che abbiamo valorizzato il nostro Dto lo passiamo al dao per inserirlo nel database.
FileDao dao= new FileDao();
dao.insert(dto);
Poi nel FileDao esguiamo le operazioni per l’inseriento nella nostra tabella FILE,che avra 4 campi(ID , FILE (BLOB), NOME(VARCHAR), CONTENT_TYPE(VARCHAR)).
private String INSERT="INSERT INTO FILE VALUES(?,?,?,?)";
public void insert(FileDto dto) {
PreparedStatement ps = null;
Connection con = null;
try {
con = getConnection();
ps = con.prepareStatement(INSERT);
ps.setInt(1, dto.getId);
ps.setBytes(2, dto.getBytes());
ps.setString(3, dto.getName());
ps.setString(4, dto.getContentType());
ps.executeUpdate();
} catch (SQLException ex) {
Logger.getLogger(FileDao.class.getName())
.log(Level.SEVERE, null, ex);
}finally{
try {
if (ps != null) ps.close();
if (con != null)con.close();
} catch (SQLException ex) {
Logger.getLogger(FileDao.class.getName())
.log(Level.SEVERE, null, ex);
}
}
}
A questo punto avremo dentro la tabella il nostro file e tutte le informazioni al riguardo.
Come facciamo a prendere il file quando ci serve?
Adesso che abbiamo i nostri file nel database creiamo una action per visualizzare una lista dei file.
Aggiungiamo un metodo al Dao che fara una select ritornandoci un Arraylist di Dto con valorizzato solo id e il nome.
public ArrayList listaFile() {
PreparedStatement ps = null;
ResultSet rs = null;
Connection con = null;
ArrayList dtos = new ArrayList();
try {
con = getConnection();
ps = con.prepareStatement(SELECT);
rs = ps.executeQuery();
while(rs.next()) {
FileDto dto = new FileDto();
dto.setId(rs.getInt(1));
dto.setName(rs.getString(2));
dtos.add(dto);
}
} catch (SQLException ex) {
Logger.getLogger(FileDao.class.getName())
.log(Level.SEVERE, null, ex);
}finally {
try {
if (rs != null) ps.close();
if (ps != null) ps.close();
if (con != null)con.close();
} catch (SQLException ex) {
Logger.getLogger(FileDao.class.getName())
.log(Level.SEVERE, null, ex);
}
}
return dtos;
}
Poi creiamo una nuova Action che chiamerà il metodo listaFile che avra come ritorno la nostra collection che mettermo in request per poi scorrerla nella jsp.
public class ListaFileAction extends Action{
@Override
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception{
FileDao dao =new FileDao();
ArrayList dtos = dao.listaFile();
request.setAttribute("lista", dtos);
return mapping.findForward("lista");
}
}
Ora che abbiamo la nostra lista visualizziamola nella jsp come una serie di link che al click chiamera una action passandogli id del file per scaricarlo.
<html:html>
<logic:present name="lista" >
<logic:iterate name="lista" id="dto" >
<html:link action="/download" paramId="idFile"
paramName="dto" paramProperty="id">
<bean:write name="dto" property="name" />
</html:link>
</logic:iterate>
</logic:present>
</html:html>
Procediamo nel creare la action che gestisce il download dei file in base all’id che gli passeremo nel link andrà a recuperare il file nel database chiamando il Dao.
private String SELECT_BY_ID="Select * from file where id = ?";
public FileDto findById(int id) {
PreparedStatement ps = null;
ResultSet rs = null;
Connection con = null;
FileDto dto = new FileDto();
try {
con = getConnection();
ps = con.prepareStatement(SELECT_BY_ID);
ps.setInt(1,id);
rs = ps.executeQuery();
while(rs.next()) {
Blob blob = rs.getBlob(2);
byte[] bytes =blob.getBytes(1, (int)blob.length());
dto.setId(rs.getInt(1));
dto.setBytes(bytes);
dto.setName(rs.getString(3));
dto.setContentType(rs.getString(4));
}
} catch (SQLException ex) {
Logger.getLogger(FileDao.class.getName())
.log(Level.SEVERE, null, ex);
}finally {
try {
if (rs != null) ps.close();
if (ps != null) ps.close();
if (con != null)con.close();
} catch (SQLException ex) {
Logger.getLogger(FileDao.class.getName())
.log(Level.SEVERE, null, ex);
}
}
return dto;
}
Dopo aver chiamato il metodo findById() del Dao settiamo nella response il ContentType in base alla tipologia del file. Nel Header settiamo attachment in modo che venga scaricato in locale e il nome del File. Poi Recuperiamo ServletOutputStream e scriviamo l’array di byte.
public class DownloadAction extends Action{
@Override
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception{
FileDao dao =new FileDao();
String id = request.getParameter("idFile");
FileDto dto= dao.findById(Integer.parseInt(id));
response.setContentType(dto.getContentType());
response.setHeader("Content-Disposition",
"attachment;filename=\""+dto.getName()+"\"");
final ServletOutputStream out= response.getOutputStream();
out.write(dto.getBytes());
return null;
}
}
venerdì 14 marzo 2008
La Canzone Dello Sviluppatore
mercoledì 27 febbraio 2008
Java IDE Day
Cos’è?
Arriva per la prima volta in Italia l'evento internazionale che mette a confronto gli IDE Java più utilizzati e le loro community.
JDeveloper (Oracle), NetBeans (Sun Microsystems), IntelliJ IDEA (JetBrains), invieranno un evangelist del loro core di sviluppo internazionale per confrontarsi a vicenda.
Speaker presenti:
- Roman Strobl (Sun Microsystems)
- Paolo Ramasso (Oracle)
- Vaclav Pech (JetBrains)
Purtroppo nonostante l’impegno da entrambe le parti, non è stato possibile avere la presenza di Eclipse.
Come?
Uno slot di tempo a disposizione per ogni IDE per mostrare le potenzialità del proprio ambiente rispetto agli altri.
Ruolo fondamentale sarà giocato dal pubblico in quanto sono previsti appostiti spazi per porre domande direttamente agli evangelist internazionali.
La parte finale dell’ evento sarà dedicata ad un dibattito ragionato sul futuro degli ambienti di sviluppo.
L’evento sarà in lingua inglese.
Costo:
L’evento è gratuito, ma è gradita la registrazione.
Organizzazione:
L’IDE Day è organizzato dal Jug Genova e Jug Roma
Quando e dove:
Sono previste due date: Genova, 10 marzo e Roma, 12 marzo
L’evento si svolgerà nel pomeriggio, all'interno delle Università.
Per gli orari, agenda e informazioni logistiche si rimanda al sito dell’ evento.
Sito di riferimento: http://www.ideday.org/