giovedì, marzo 29, 2007

Resin profiler

Resin dispone di una servlet filter in grado di misurare i tempi di risposta del servlet engine nel servire le richieste HTTP.

E' possibile configurare la servlet filter nel file resin-web.xml (preferibile: essendo una feature di Resin, inserire la configurazione nel file web.xml minerebbe la portabilita' della webapplication su differenti application server) in questo modo:

<!-- resin profiler filter -->

<filter>
<filter-name>resin-profiler-filter</filter-name>
<filter-class>com.caucho.tools.profiler.ProfilerFilter</filter-class>
<init-param>
<param-name>use-query</param-name>
<param-value>false</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>resin-profiler-filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>

I tempi di risposta misurati dalla servlet filter possono essere visualizzati in un browser, grazie ad una servlet il cui compito e' 'intabellare' i dati, da configurare anch'essa nel file resin-web.xml:

<!-- resin profiler servlet -->

<servlet>
<servlet-name>resin-profiler-servlet</servlet-name>
<servlet-class>com.caucho.tools.profiler.ProfilerServlet</servlet-class>
<init>
<profiler enabled="true" />
</init>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>resin-profiler-servlet</servlet-name>
<url-pattern>/resin-profiler</url-pattern>
</servlet-mapping>

La suddetta servlet, se invocata col parametro in get format=xml, e' in grado di fornire gli stessi dati in formato xml.

E' cosa buona e giusta non permettere a chiunque di vedere i dati raccolti dal 'resin profiler'... una semplice soluzione puo' essere configurare, nel file resin-web.xml, un 'filtro' per l'imitare l'accesso alla servlet 'ProfilerServlet' solo a determinati indirizzi IP:

<security-constraint>
<web-resource-collection>
<url-pattern>/resin-profiler</url-pattern>
</web-resource-collection>
<ip-constraint>
<allow>127.000.000.001/32</allow><!-- localhost -->
<allow>192.168.000.000/16</allow><!-- classe C -->
</ip-constraint>
</security-constraint>

mercoledì, marzo 21, 2007

JSF 1.2_04 RI + Tomcat 6.0.10

E' stata dura, ma c'e' l'ho fatta :)
Tutto grazie a questo thread: http://forum.java.sun.com/thread.jspa?threadID=787962&messageID=4487741

In parole povere, per veder funzionare la reference implementation di JavaServerFaces 1.2 con Tomcat 6, e' sufficiente deployare nella directory $CATALINA_HOME/lib (quindi fra le librerie di tomcat) i seguenti jar:

1) jsf-api
2) jsf-impl
3) jstl-1.2

tutte le librerie necessarie sono daunlodabili da questi link:

https://javaserverfaces.dev.java.net
https://maven-repository.dev.java.net/nonav/repository/jstl/jars

Java PermGen system property

In applicazioni server a volte risulta necessario aumentare la ram disponibile per l'area di memoria 'PermGen' a disposizione della jvm; questo'operazione, in grado di risolvere la temuta 'java.lang.OutOfMemoryError: PermGen space', si realizza passando all'interprete java una banale system property.
Ipotizziamo di voler portare a 256 MB la memoria disponibile al solo PermGen:

-XX:MaxPermSize=256m

giovedì, marzo 08, 2007

Resin 3.0.19 Hibernate JPA

Sembrerebbe che la versione 3.0.19 di Resin abbia qualche problema con l'implementazione JPA di Hibernate3: nonostante siano state importate tutte le dipendenze e sia stato configurato il file services.xml per l'utilizzo di Hibernate3 come JPA provider, Resin si ostina ad utilizzare Amber come implementazione di JPA.
La stessa webapplication non presenta il problema sopra riportato ne' su Resin 3.0.22, ne' su Resin 3.1.0.