La stabilita' di un sistema non deve dipendere dalle performance dei servizi invocati.
E' buona norma tutelarsi affinche' un servizio, invocato in modo sincrono, che risponde lentamente, non blocchi per un tempo indefinito le nostre applicazioni.
Per mezzo delle api del package java.net e' possibile impostare in modo programmatico il timeout sull'apertura e sulla lettura da una socket, per mezzo dei metodi setConnectTimeout(int timeout) e setReadTimeout(int timeout) della classe java.net.URLConnection, dove timeout e' il numero di millisecondi dopo il quale, se l'operazione non si e' conclusa, verra' lanciata un'eccezione.
Quando non e' possibile intervenire sul codice, o quando si vuole intervenire a livello di jvm per alterarne il comportamento di default (non escludendo poi l'intervento programmatico), e' possibile specificare, nel caso la jvm utilizzata sia quella di Sun, le seguenti system properties:
sun.net.client.defaultConnectTimeout
sun.net.client.defaultReadTimeout
La documentazione e' ovviamente disponibile sul sito di Sun.
i miei bookmark
- http://aros.sourceforge.net/
- http://blogs.sun.com/jluehe/
- http://blogs.sun.com/openmessagequeue/
- http://blogs.sun.com/theaquarium/
- http://java.net/
- http://jqueryfordesigners.com/
- http://planets.sun.com/OpenSSO/group/blogs/
- http://www.caucho.com/
- http://www.noupe.com/
- http://www.osnews.com/
- http://www.theserverside.com/
- http://www.webappers.com/
- http://www.webresourcesdepot.com/
- https://glassfish.dev.java.net/
- https://mq.dev.java.net/
- https://open-esb.dev.java.net/
- https://opends.dev.java.net/
- https://opensso.dev.java.net/
lunedì, luglio 28, 2008
Java networking properties: UrlConnection timeout
Pubblicato da
demis
alle
7:51 AM
0
commenti
giovedì, luglio 03, 2008
mercoledì, luglio 02, 2008
Ajax img slideshow
Questo plugin per mootools mi ha davvero colpito!
Da vedere assolutamente:
http://www.electricprism.com/aeron/slideshow/
Pubblicato da
demis
alle
11:41 PM
0
commenti
Etichette: ajax, javascript, js
mercoledì, giugno 25, 2008
javascript download
L'inclusione di file javascript per mezzo del tag 'script' all'interno del tag 'head' di una pagina html scatena da parte dei browser Firefox ed Internet Explorer una serie di download (tanti quanti sono i file da includere) di tipo sequenziale.
Infatti ogni download di un singolo file blocca il download successivo.
Questo, per pagine html che fanno uso di framework come JQuery e dei relativi plugin puo' essere un problema per le performance di un'applicazione 'Web 2.0'.
Qualche ottimo consiglio viene dato da Kristoffer Henriksson sul suo blog.
Pubblicato da
demis
alle
1:06 AM
1 commenti
Etichette: javascript, js
venerdì, marzo 21, 2008
UML sequence diagrams
Microsoft Visio?
No grazie.
Non sempre, come unix insegna, la strada piu' veloce e comoda passa per le GUI ed il mouse; spesso un lavoro ripetitivo lo si sbriga meglio pigiando un po' di lettere sulla tastiera.
Questo e' un generatore web di sequence diagrams, davvero spettacolare, che esprime molto bene il concetto sopra riportato: www.websequencediagrams.com.
Pubblicato da
demis
alle
11:08 PM
0
commenti
mercoledì, marzo 12, 2008
Client side charts - part IV
Finalmente ho trovato la libreria (Flash) 'definitiva' per renderizzare grafici:
Open Flash Chart.
Ed e' anche opensource ;)
Pubblicato da
demis
alle
11:34 PM
0
commenti
Etichette: charts
sabato, febbraio 23, 2008
Glassfish PreparedStatement Caching
Glassfish 2 delega al driver JDBC la cache del PreparedStatement.
Se quindi il database e' Oracle, e' possibile settare due property nella configurazione del relativo driver JDBC:
ImplicitCachingEnabled=true
MaxStatements=xxx
Maggiori informazioni a questo link.
Pubblicato da
demis
alle
8:29 AM
0
commenti
Etichette: glassfish
sabato, febbraio 16, 2008
XML Web Utilities
Ho trovato un comodissimo tool online per creare un xml schema partendo da un file xml.
Pubblicato da
demis
alle
11:33 AM
0
commenti
Etichette: xml
martedì, febbraio 05, 2008
Java Garbage Collector tuning
Scegliere l'algoritmo di garbage collection piu' adatto per la propria applicazione non e' sempre facile.
Devo dire che questi due link aiutano molto:
Memory Management
JVM Options
Pubblicato da
demis
alle
10:23 PM
0
commenti
Etichette: java
domenica, gennaio 20, 2008
Software Technical Event @ Grenoble
Deciso all'ultimo minuto, ma e' filato tutto liscio: sono riuscito a partecipare ai due giorni non riservati ai partner Sun dell'evento tenutosi a Grenoble dal 15 al 18 gennaio 2008, presso il primo centro di ricerca Sun europeo, nella "Silicon Valley d'oltralpe".
Le sessioni sono state decisamente interessanti, ed hanno riguardato diversi prodotti su cui Sun sta investendo, tra i quali:
GlassFish
Netbeans
OpenDS
OpenESB
OpenSSO
Solaris
Da notare come, per la sessione riguardante Netbeans, per dimostare le petenzialita' della piattaforma Netbeans, intesa come framework per applicazioni Java Swing (su cui Netbeans IDE e' costruito), sia stato preso ad esempio l'italianissimo BlueMarine.
Per chi volesse vedere in che paesaggio meraviglioso e' immerso il centro di ricerca Sun di Grenoble, ho scattato qualche foto :)
Pubblicato da
demis
alle
8:25 PM
0
commenti
Etichette: java
domenica, gennaio 13, 2008
Client side charts - parte III
Simile Project mette a disposizione della comunita' due ottimi widget Ajax:
Timeline, un grafico scrollabile per la visualizzazione di eventi basati sul tempo
Timeplot, un linechart per serie di dati ordinati temporalmente
Meglio guardare gli esempi disponibili online ;)
Entrambi i widget (client side) sono in grado di recuperare i dati da risorse HTTP (come puo' essere la GET di un file XML, per esempio).
Pubblicato da
demis
alle
2:59 AM
0
commenti
Etichette: charts
martedì, dicembre 18, 2007
GlassFish e driver JDBC
Dove mettere i driver JDBC per le applicazioni che girano sotto GlassFish?
$GLASSFISH_HOME/domains/$DOMAIN/lib/ext/
Pubblicato da
demis
alle
4:05 PM
0
commenti
sabato, dicembre 15, 2007
Windows Vista: deframmentazione
Si sa: Winzozz non e' un sistema operativo, e' un virus, che si replica e nel tempo abbatte le performance del tuo nuovo e fiammante pc.
Ai tempi, quando ancora usavo il mio fido Amiga 1200 (cresciuto nel tempo fino a diventare un 68030 + ppc603) si diceva che Amiga andava bene solo per giocare (l'ignoranza accompagna l'umanita da sempre).
Ora posso finalmente dire la stessa cosa: Windows e' solo un insieme di api e librerie per far girare i giochi... perche' quindi sradicarlo completamente dal mio nuovo Core 2 Duo?
E' semplicemente, parafrasando Trip Hawkins, una tassa da pagare per videogiocare.
Quindi, meglio metterlo in quarantena, chiuderlo in una partizione ad hoc, dove non potra' piu' nuocere a nessuno, e lasciare il rimanente spazio dell'hard disk a chi, in questi ultimi anni, se l'e' guadagnato: GNU/Linux Ubuntu.
Per prima cosa, ho bisogno di una bella deframmentazione.
Ho provato ad usare il tool adatto allo scopo incluso in Windows Vista, ma, dopo ore passate davanti ad una barra di avanzamento, senza una minima indicazione di quanto tempo ancora fosse necessario per completare l'operazione, ho deciso di provare Auslogics Disk Defrag, un programma free, che nell'ordine dei minuti ha portato a casa il risultato.
Pubblicato da
demis
alle
10:24 AM
0
commenti
Etichette: windows
giovedì, dicembre 13, 2007
Software Technical Event - Sun
Sun ha un centro di ricerca e sviluppo in Francia... sarebbe proprio da vedere, magari in occasione del seguente evento:
http://fr.sun.com/sunnews/events/2007/nov/grenoble/index.jsp
Pubblicato da
demis
alle
10:59 PM
0
commenti
Etichette: java
GlassFish e dintorni: slide/presentazioni
Sul wiki di GlassFish sono raccolte un buon numero di presentazioni, da tenere sempre in considerazione per un'infarinatura delle tecnologie che ruotano intorno all'application server di Sun.
Pubblicato da
demis
alle
2:50 PM
0
commenti
venerdì, dicembre 07, 2007
Client side charts - parte II
Le possibilita' per creare qualcosa di accattivante senza ricorrere a Flash (e per me accattivante significa Google Chart API) ci sono tutte:
PlotKit
Plotr
Flot
Devo solo valutare quale sia la libreria' piu' matura che offra la roadmap piu' interessante...
Pubblicato da
demis
alle
10:32 PM
0
commenti
Etichette: charts
giovedì, novembre 29, 2007
JSP: spazi bianchi e linee vuote
L'output dell'esecuzione di una pagina JSP e' spesso pieno di linee vuote e di spazi inutili... una vera rottura, soprattutto quando e' necessario produrre una pagina XHTML e la dichiarazione XML dev'essere per forza di cose la primissima riga!
Finalmente tutto cio', con JEE 5.0 e le JSP 2.1 e' stato risolto per mezzo di un semplice parametro di configurazione: trimDirectiveWhitespaces.
Per saperne di piu' basta leggere questo articolo.
Pubblicato da
demis
alle
8:01 PM
0
commenti
Etichette: java
Client side charts
Soltanto un link, per non perderlo di vista:
css + php + flash + ajax charts
Pubblicato da
demis
alle
12:03 PM
0
commenti
Etichette: charts
mercoledì, ottobre 24, 2007
Glassfish 2.0: installazione
La roadmap di Glassfish e' decisamente interessante... Glassfish 3 starta in mezzo secondo!!!
E' ora di iniziare a prendere confidenza con questo promettente (e maturo) application server... installiamo la versione 2 su un bel dev redhat ;)
> mkdir glassfish
> cd glassfish
> java -jar glassfish-installer-v2-b58g.jar
> mv glassfish glassfish-2.0
mhmh e' preconfigurato per ascoltare di default sulle porte 8080 (http), 8181 (https), 4848 (web console), 3700 (corba), 7676 (jms)... ho gia' la 8080 occupata da resin, riassegno le porte a glassfish...
> vi setup.xml
> :1,$s/8080/7070/g
> :1,$s/8181/7171/g
> :1,$s/4848/7878/g
> :1,$s/3700/7700/g
> :1,$s/7676/7600/g
> :wq!
> chmod u+x lib/ant/bin/ant
> lib/ant/bin/ant -f setup.xml
ant mi comunica che e' andato tutto bene:
create.domain:
[exec] Using port 7878 for Admin.
[exec] Using port 7070 for HTTP Instance.
[exec] Using port 7600 for JMS.
[exec] Using port 7700 for IIOP.
[exec] Using port 7171 for HTTP_SSL.
[exec] Using default port 3820 for IIOP_SSL.
[exec] Using default port 3920 for IIOP_MUTUALAUTH.
[exec] Using default port 8686 for JMX_ADMIN.
[exec] Domain being created with profile:developer, as specified by variable AS_ADMIN_PROFILE in configuration file.
[exec] Security Store uses: JKS
[exec] Domain domain1 created.
[exec] Login information relevant to admin user name [admin] for this domain [domain1] stored at [/home/httpd/.asadminpass] successfully.
[exec] Make sure that this file remains protected. Information stored in this file will be used by asadmin commands to manage this domain.
[delete] Deleting: /store2/sw/as/glassfish/glassfish-2.0/passfile
BUILD SUCCESSFUL
Total time: 18 seconds
posso startare l'as:
> bin/asadmin start-domain domain1
che parte correttamente:
Starting Domain domain1, please wait.
Log redirected to /store2/sw/as/glassfish/glassfish-2.0/domains/domain1/logs/server.log.
Redirecting output to /store2/sw/as/glassfish/glassfish-2.0/domains/domain1/logs/server.log
Domain domain1 is ready to receive client requests. Additional services are being started in background.
Domain [domain1] is running [Sun Java System Application Server 9.1 (build b58g-fcs)] with its configuration and logs at: [/store2/sw/as/glassfish/glassfish-2.0/domains].
Admin Console is available at [http://localhost:7878].
Use the same port [7878] for "asadmin" commands.
User web applications are available at these URLs:
[http://localhost:7070 https://localhost:7171 ].
Following web-contexts are available:
[/web1 /__wstx-services ].
Standard JMX Clients (like JConsole) can connect to JMXServiceURL:
[service:jmx:rmi:///jndi/rmi://XXXXXXXXXXXXXXXXX:8686/jmxrmi] for domain management purposes.
Domain listens on at least following ports for connections:
[7070 7171 7878 7700 3820 3920 8686 ].
Domain does not support application server clusters and other standalone instances.
Pubblicato da
demis
alle
3:44 PM
0
commenti
martedì, maggio 22, 2007
Apache Resin request dispatch
Per fare in modo che il webserver Apache sappia quali richieste debba servire e quali invece debba passare a Resin, esistono due possibili configurazioni:
1) Resin, tramite il ResinConfigServer, comunica ad Apache quali risorse e' suo compito servire
2) Apache sa esattamente quali risorse deve servire Resin
Io preferisco di gran lunga la seconda :)
<Location "/webapp/jsp/">
CauchoHost localhost 6802
SetHandler caucho-request
</Location>
Pubblicato da
demis
alle
5:02 PM
0
commenti