Upgrading ColdFusion 9 to Ehcache Last version

Per aggiornare Ehcache alla ultima versione è necessario sostituire la versione di ColdFusion EHCache da 2.0 (fornito con ColdFusion 9.0.1) alla versione più recente.

Faccio presente che questa operazione non è complicata di per sé, comporta la sostituzione di alcuni file e la copia di file nella root lib di ColdFusion. Sebbene Terracotta  (Società che sviluppa Ehcache) cerca di mantenere la retro compatibilità, non c'è nessuna garanzia che ColdFusion funzioni correttamente. Teoricamente non ci dovrebbero essere dei problemi ma, se si verificassero dei problemi Adobe non fornirà alcun tipo di supporto poiché la versione certificata da Adobe è la 2.0.

Detto questo, aggiorniamo la versione di Ehcahe.

Scarichiamo l'ultima versione di Terracotta e installiamo il pacchetto.
http://www.terracotta.org/downloads/open-source

Dopo aver installato occorre fare un backup dei file originali di ColdFusion oppure rinominarli. Quindi fermare il servizio di ColdFusion e procedere con l'operazione.

individuare la directory lib:

  • /coldfusion9/lib/ per la standalone e
  • /JRun4/servers/instance/cfusion-ear/cfusion-war/WEB-INF/cfusion/bin per il multiserver con Jrun oppure

cerchiamo questi files:

  • ehcache.jar
  • ehcache-web.jar
  • slf4j-api-1.5.6.jar
  • slf4j-log4j12-1.5.6.jar

 

e li rinominiamo oppure li spostiamo.

Ora copiamo i file dall'installazione terracotta nella lib di coldfusion.

/tcHome/{version}/common/terracotta-toolkit-1.3-runtime-3.3.0.jar
/tcHome/{version}/ehcache/lib/ehcache-core-2.4.6.jar
/tcHome/{version}/ehcache/lib/ehcache-terracotta-2.4.6.jar
/tcHome/{version}/ehcache/lib/slf4j-api-1.6.1.jar
/tcHome/{version}/ehcache/lib/slf4j-jdk14-1.6.1.jar
/tcHome/{version}/lib/slf4j-log4j12-1.6.1.jar

rinominare ehcache-core-2.4.6.jar in ehcache.jar

Avviare il server ColdFusion.

Distributed cache con Cache manager, ColdFusion, Ehcache e Terracotta

Dalla versione 9.0.1 di ColdFusion è possibile distribuire la cache utilizzando Ehcache e Terracotta.
Ehcache è una libreria per la gestione avanzata della cache inclusa dalla versione 9 di ColdFusion.
Terracotta è un server che utilizza Ehcache per distribuire la cache e di conseguenza redere scalabile una web application.

Con questa architettura potremmo svilupare una web application pensata per un utilizzo a single server e con piccole modifiche nella configurazione portarla a multi server replicando la cache in ogni istanza.

Configurazione di ColdFusion per Terracotta

Scaricare Terracotta 3.2.1 http://www.terracotta.org/dl/oss-download-destination?name=terracotta-3.2.1-installer.jar&bucket=tcdistributions&file=terracotta-3.2.1-installer.jar

Installare il jar

Copiare /ehcache/ehcache-terracotta-2.0.0.jar dalla directory di terracotta alla directory lib di ColdFusion

Editare il file Ehcache.xml in ColdFusion9/lib/


<terracottaConfig url="yourTerracottaServerIP:9510" />

<defaultCache 
maxElementsInMemory="10000" 
eternal="false" 
timeToIdleSeconds="86400" 
timeToLiveSeconds="86400" 
overflowToDisk="false"
diskSpoolBufferSizeMB="30"
maxElementsOnDisk="10000000" 
diskPersistent="false" 
diskExpiryThreadIntervalSeconds="3600" 
memoryStoreEvictionPolicy="LRU" 
clearOnFlush="true">

<terracotta clustered="true" />

</defaultCache>

Aprire ColdFusion administrator e andare sui settings della JVM e assegnare i riferienti assoluti alle risorse:

ColFusion Class Path

 -Dcoldfusion.classPath=/Applications/ColdFusion9/lib/updates,/Applications/ColdFusion9/lib,/Applications/ColdFusion9/gateway/lib/,/Applications/ColdFusion9/wwwroot/WEB-INF/cfform/jars,/Applications/ColdFusion9/wwwroot/WEB-INF/flex/jars


JVM Arguments

-Dsun.io.useCanonCaches=false -XX:MaxPermSize=192m -XX:+UseParallelGC -Xbatch -Dcoldfusion.rootDir=/Applications/ColdFusion9/ -Dcoldfusion.libPath=/Applications/ColdFusion9/lib

Riavviate il server di ColdFusion

Fate partire il server Terracotta start-tc-server.sh o start-tc-server.bat

 

2011-04-07 10:01:09,086 INFO - Terracotta 3.2.1, as of 20100302-130324 (Revision

 14673 by cruise@su10mo5 from 3.2)

2011-04-07 10:01:09,477 INFO - Configuration loaded from the Java resource at '/

com/tc/config/schema/setup/default-config.xml', relative to class com.tc.config.

schema.setup.StandardXMLFileConfigurationCreator.

2011-04-07 10:01:09,617 INFO - Log file: 'C:\Documents and Settings\Administrato

r\terracotta\server-logs\terracotta-server.log'.

2011-04-07 10:01:11,968 INFO - Available Max Runtime Memory: 494MB

2011-04-07 10:01:14,383 INFO - JMX Server started. Available at URL[service:jmx:

jmxmp://0.0.0.0:9520]

2011-04-07 10:01:15,073 INFO - Terracotta Server instance has started up as ACTI

VE node on 0.0.0.0:9510 successfully, and is now ready for work.

 

Fate partire la Developer console dev-console.sh o dev-console.bat

Salvare i dati nella cache

computer ={};
computer.cpu = "intel";
computer.hd = "ssd";
compter.ram = "ddr3";
computer.monitor = "led";

cachePut("computer", computer, createTimeSpan(0,1,1,30) );

out = cacheGet('computer');

writeDump( out );

inoltre è possibile utilizzare Terracotta anche su hosting condiviso dove si ha la necessità di configurare siti a diversi server terracotta. Utilizzando una libreria che ho sviluppato qualche tempo fa e disponibile su riaforge.

ColdFusion multi server con Tomcat

Grazie a Tomcat è possiile utilizzare ColdFusion in modalità multiserver senza l'installazione classica di JRUN.
Nello scorso post ho spiegato come installare ColdFusion sotto Tomcat, ora per procedere con la configurazione multiserver dobbiamo creare una directory che servirà da context per ColdFusion e il nostro sito in multiserver.

(Mac/Linux) /TomcatHome/websites/ o c:\TomcatHome\websites\ (Windows)

Se non disponete del WAR di ColdFusion, avviare l'installer di ColdFusion e scegliere J2EE configuration e far salvare il war nella directory websites appena creata.

Creare una directory /TomcatHome/cfusion-instance-1/
Copiare il contenuto della cartella Tomcat in cfusion-instance-1

Editare il file server.xml in /TomcatHome/cfusion-instance-1/conf/

<Engine name="Catalina" defaultHost="coldfusion">
<Host name="coldfusion"  appBase="/TomcatHome/websites/" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/TomcatHome/websites/cfusion/" />
</Host>

Ora copiare il contenuto di /TomcatHome/cfusion-instance-1/ in /TomcatHome/cfusion-instance-2/

Editare il file server.xml in /TomcatHome/cfusion-instance-2/conf/ e modificare i seguenti nodi xml come da codice.

<Server port="8015" shutdown="SHUTDOWN">
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />

Ora fate partire l'istanza 1 e configurate coldfusion. Subito dopo fate partire la seconda istanza e configurate ColdFusion.

Se configurato tuto in modo corretto, avrete 2 server ColdFusion che puntano ad un solo sito con la possibilità di dividere il carico con un load balancer.

Installare ColdFusion sotto Tomcat

Coldfusion è un application server scritto in Java, questo permette di essere eseguito da server e container Java.
Tomcat è un web container che implementa le specifiche delle JSP e delle servlet di SUN Microsystems.

Tomcat, come ColdFusion è scritto interamente in Java e quindi può essere eseguito in tutti i contesti dove è installata una JVM.

Installazione di Tomcat.

Requisiti:

 

  • Tomcat 6.x
  • ColdFusion 9
  1. Scaricare Tomcat 6 (versione zip)
  2. Scaricare ColdFusion 9 (developer)
  3. Unzip Tomcat in C:\TomcatHome\ (windows) oppure /TomcatHome/ (Linux-Mac)
  4. Lanciare il setup di ColdFusion e scegliere l'installazione J2EE configuration.

  5. Selezionare TomcatHome come directory di destinazione del WAR.
  6. Eseguire startup.bat (windows) oppure startup.sh (Linux/Mac) per avviare il server di Tomcat.
  7. Da browser andare su: http://localhost:8080 e verificare che Tomcat sia attivo.
  8. A questo punto copiare il WAR di ColdFusion in C:\TomcatHome\Tomcat\webapps o /TomcatHome/Tomcat/webapps
  9. Tomcat rilevando il file WAR dovrebbe creare una cartella all'interno di webapps con nome cfusion.
  10. Esegui il comando shutdown.bat o shutdown.sh e subito dopo il comando startup riavviando il server.
  11. Prova se il server ColdFusion è installato correttamente. http://localhost:8080/cfusion/CFIDE/administrator

 

Se tutto è andato per il verso giusto il browser visualizzerà il wizard per la configurazione di ColdFusion administrator.