<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6921541245628552381</id><updated>2026-06-01T21:41:09.385+02:00</updated><category term="bug"/><category term="Arquitectura"/><category term="Backup"/><category term="Búsquedas"/><category term="Cluster"/><category term="Configuración"/><category term="Importar"/><category term="Oracle"/><category term="RAC"/><category term="SVN"/><category term="Spring"/><category term="bulk"/><category term="migracion"/><category term="rendimiento"/><title type='text'>Alfresco Admin</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://alfrescoadmin.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://alfrescoadmin.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Raúl</name><uri>http://www.blogger.com/profile/14032957407806229376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDOqQyKlquc3fthMBpei8HXO217vUQBWGPXztVrEQGhPjiLGs7AqBPw_A_6ubmzYIOa6sBRZOhKN2Qo_aTtzj8yBMjG-Jc9gxCq7FXreAJV_tIew9I3Ov-v0PjMl_yNB0/s220/yo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6921541245628552381.post-7415314995451800833</id><published>2026-04-23T17:01:00.000+02:00</published><updated>2026-04-23T17:01:14.260+02:00</updated><title type='text'>Alfresco ha evolucionado: De ECM tradicional a plataforma Cloud-Native (Cierre del Blog)</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;Y3BBE&quot; data-complete=&quot;true&quot; data-hveid=&quot;CAEIBhAA&quot; data-processed=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;Hola a todos,&lt;/div&gt;&lt;div class=&quot;Y3BBE&quot; data-complete=&quot;true&quot; data-hveid=&quot;CAEIBxAA&quot; data-processed=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;Ha
 pasado mucho tiempo desde mi última entrada en 2013. Durante años, este
 blog fue mi cuaderno de bitácora mientras impartía formación oficial de
 Alfresco (como el curso &lt;strong class=&quot;Yjhzub&quot; data-complete=&quot;true&quot; data-processed=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;ALF-3109&lt;/strong&gt; de Administración). Hoy, echo la vista atrás y el panorama ha cambiado drásticamente.&lt;/div&gt;&lt;div class=&quot;Y3BBE&quot; data-complete=&quot;true&quot; data-hveid=&quot;CAEICBAA&quot; data-processed=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;Si te has quedado en las versiones 3.x o 4.x que tratábamos aquí, esto es lo que te has perdido en esta década:&lt;/div&gt;&lt;ol class=&quot;IaGLZe VimKh&quot; data-complete=&quot;true&quot; data-processed=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;&lt;li class=&quot;Z1qcYe&quot; data-complete=&quot;true&quot; data-hveid=&quot;CAEICRAA&quot; data-sae=&quot;&quot; data-sfc-cb=&quot;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;&lt;span class=&quot;T286Pc&quot; data-complete=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;&lt;strong class=&quot;Yjhzub&quot; data-complete=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;Hyland y Nuxeo:&lt;/strong&gt; Alfresco ya no es una empresa independiente; ahora forma parte de &lt;strong class=&quot;Yjhzub&quot; data-complete=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;Hyland&lt;/strong&gt;, integrándose en un ecosistema que incluye a su antiguo rival, Nuxeo.&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;Z1qcYe&quot; data-complete=&quot;true&quot; data-hveid=&quot;CAEICRAB&quot; data-sae=&quot;&quot; data-sfc-cb=&quot;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;&lt;span class=&quot;T286Pc&quot; data-complete=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;&lt;strong class=&quot;Yjhzub&quot; data-complete=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;Adiós al .war, hola a Docker:&lt;/strong&gt; La instalación manual en Tomcat que tanto configuramos ha dado paso a microservicios desplegados en &lt;strong class=&quot;Yjhzub&quot; data-complete=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;Docker y Kubernetes&lt;/strong&gt;. Hoy, Alfresco es &quot;Cloud-Native&quot; por definición.&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;Z1qcYe&quot; data-complete=&quot;true&quot; data-hveid=&quot;CAEICRAC&quot; data-sae=&quot;&quot; data-sfc-cb=&quot;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;&lt;span class=&quot;T286Pc&quot; data-complete=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;&lt;strong class=&quot;Yjhzub&quot; data-complete=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;Arquitectura de Búsqueda:&lt;/strong&gt; Hemos pasado de Lucene y Solr a la potencia de &lt;strong class=&quot;Yjhzub&quot; data-complete=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;Elasticsearch&lt;/strong&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;Z1qcYe&quot; data-complete=&quot;true&quot; data-hveid=&quot;CAEICRAD&quot; data-sae=&quot;&quot; data-sfc-cb=&quot;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;&lt;span class=&quot;T286Pc&quot; data-complete=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;&lt;strong class=&quot;Yjhzub&quot; data-complete=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;IA y Automatización:&lt;/strong&gt;
 La gestión documental ya no es solo guardar archivos; ahora la 
plataforma usa IA para clasificar y extraer datos automáticamente.&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;Z1qcYe&quot; data-complete=&quot;true&quot; data-hveid=&quot;CAEICRAE&quot; data-sae=&quot;&quot; data-sfc-cb=&quot;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;&lt;span class=&quot;T286Pc&quot; data-complete=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;&lt;strong class=&quot;Yjhzub&quot; data-complete=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;Modernización de la interfaz:&lt;/strong&gt; Aunque Alfresco Share sigue ahí, el futuro está en el &lt;strong class=&quot;Yjhzub&quot; data-complete=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;ADF (Angular Development Framework)&lt;/strong&gt; para crear apps a medida.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class=&quot;Y3BBE&quot; data-complete=&quot;true&quot; data-hveid=&quot;CAEIChAA&quot; data-processed=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;&lt;strong class=&quot;Yjhzub&quot; data-complete=&quot;true&quot; data-processed=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;Cierre del blog:&lt;/strong&gt;&lt;br data-complete=&quot;true&quot; data-processed=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-pl=&quot;|[]&quot; data-sfc-root=&quot;c&quot; /&gt;Dado
 que mi trayectoria profesional se ha alejado del ecosistema Alfresco en
 los últimos años, he decidido dejar de actualizar este blog de forma 
definitiva. &lt;strong class=&quot;Yjhzub&quot; data-complete=&quot;true&quot; data-processed=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;AlfrescoAdmin quedará abierto únicamente como archivo histórico&lt;/strong&gt; para quien necesite consultar conceptos base que aún sigan vigentes.&lt;/div&gt;&lt;div aria-owns=&quot;action-menu-parent-container&quot; class=&quot;Y3BBE&quot; data-complete=&quot;true&quot; data-hveid=&quot;CAEICxAA&quot; data-processed=&quot;true&quot; data-sfc-cb=&quot;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;c&quot;&gt;Gracias
 a todos los que me acompañasteis y consultasteis estas páginas durante 
mis años como instructor. ¡Nos vemos en los nuevos retos tecnológicos!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alfrescoadmin.blogspot.com/feeds/7415314995451800833/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://alfrescoadmin.blogspot.com/2026/04/alfresco-ha-evolucionado-de-ecm.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/7415314995451800833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/7415314995451800833'/><link rel='alternate' type='text/html' href='http://alfrescoadmin.blogspot.com/2026/04/alfresco-ha-evolucionado-de-ecm.html' title='Alfresco ha evolucionado: De ECM tradicional a plataforma Cloud-Native (Cierre del Blog)'/><author><name>Raúl</name><uri>http://www.blogger.com/profile/14032957407806229376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDOqQyKlquc3fthMBpei8HXO217vUQBWGPXztVrEQGhPjiLGs7AqBPw_A_6ubmzYIOa6sBRZOhKN2Qo_aTtzj8yBMjG-Jc9gxCq7FXreAJV_tIew9I3Ov-v0PjMl_yNB0/s220/yo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6921541245628552381.post-152458624940851330</id><published>2013-03-21T11:12:00.001+01:00</published><updated>2013-03-21T11:12:14.770+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Búsquedas"/><title type='text'>Listar usuarios en Share</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hace poco me han preguntado en un curso como se podia obtener el listado completo de usuarios desde la interfaz de Alfresco Share, que a diferencia del Alfresco Web explorer no tiene un boton del tipo &quot;mostrar todos&quot;.&lt;br /&gt;
&lt;br /&gt;
Hasta las versiones 4.1 siempre había recurrido al wildcard &#39;*&#39; ya que el mecanismo de búsqueda obligaba a poner almenos uno. Incluso en algunas búsquedas que exigen almenos 3 carácteres se había podido usar &#39;***&#39;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOq1rIvqMOOZXvjmNXVPO7DKe7CBSVrk0w-GYUX0_i7d23A3dhbx6XBPECvZdyyKcOHf_JcRWcqdy9N4Cfsroub0u_P7JKSU8iMcPCa0JcCRoEUznZHH_OfooBW4Nw-bsDbqgp_d6fPlcF/s1600/search40.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;199&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOq1rIvqMOOZXvjmNXVPO7DKe7CBSVrk0w-GYUX0_i7d23A3dhbx6XBPECvZdyyKcOHf_JcRWcqdy9N4Cfsroub0u_P7JKSU8iMcPCa0JcCRoEUznZHH_OfooBW4Nw-bsDbqgp_d6fPlcF/s400/search40.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
En la versión 4.1.3 he podido comprobar como el asterisco &#39;*&#39; ya no devolvía ningún resultado, sin embargo tenemos la posibilidad de utilizar el wildcard &#39;%&#39; ya que las consultas de los usuarios se hacen a la base de datos para evitar problemas de consistencia con SOLR.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCsybGMsOQzya0Oor4gr2nsurFeXi4k2Et2zPjMFTuELyEJevRNfS9mTt8ab8ik_ycLQg7lRh1KNMoqLNnfGQv88GoK65q7bNFfwjE7B9Lo07YB_mTVBS7IvroyUO3FtyXVdQ7wW4MmpdU/s1600/search41.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;203&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCsybGMsOQzya0Oor4gr2nsurFeXi4k2Et2zPjMFTuELyEJevRNfS9mTt8ab8ik_ycLQg7lRh1KNMoqLNnfGQv88GoK65q7bNFfwjE7B9Lo07YB_mTVBS7IvroyUO3FtyXVdQ7wW4MmpdU/s400/search41.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://alfrescoadmin.blogspot.com/feeds/152458624940851330/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://alfrescoadmin.blogspot.com/2013/03/listar-usuarios-en-share.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/152458624940851330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/152458624940851330'/><link rel='alternate' type='text/html' href='http://alfrescoadmin.blogspot.com/2013/03/listar-usuarios-en-share.html' title='Listar usuarios en Share'/><author><name>Raúl</name><uri>http://www.blogger.com/profile/14032957407806229376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDOqQyKlquc3fthMBpei8HXO217vUQBWGPXztVrEQGhPjiLGs7AqBPw_A_6ubmzYIOa6sBRZOhKN2Qo_aTtzj8yBMjG-Jc9gxCq7FXreAJV_tIew9I3Ov-v0PjMl_yNB0/s220/yo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOq1rIvqMOOZXvjmNXVPO7DKe7CBSVrk0w-GYUX0_i7d23A3dhbx6XBPECvZdyyKcOHf_JcRWcqdy9N4Cfsroub0u_P7JKSU8iMcPCa0JcCRoEUznZHH_OfooBW4Nw-bsDbqgp_d6fPlcF/s72-c/search40.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6921541245628552381.post-3526340333108267559</id><published>2013-03-20T23:24:00.001+01:00</published><updated>2013-03-21T00:14:51.803+01:00</updated><title type='text'>File System Transfer Reciever</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
Cuando hablamos de replicación en Alfresco normalmente nos referimos a la replicación de contenidos entre repositorios de Alfresco, pero está no es la única opción que tenemos. En algunos casos por ejemplo podriamos estar ejecutando un sitio web con una tecnología diferente que simplemente requiera una estructura de ficheros en el filesystem, al más puro estilo CMS.&lt;br /&gt;
&lt;br /&gt;
Aunque el transfer service apareció por primera vez en la versión 3.3, no ha sido hasta la versión 4 cuando hemos podido tener una interfaz web que haga uso de este servicio&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNiG05-HIl4EdE71VcS1N70E74Yc2mo59qB1J3xRAqmz0qauU8AAKT4jJAM7vgfJIibzKGAaot0GURYydf2FAAsfk_nSGDL47wteUvq6HuNcgxutfAMSINYkyFyIab7cR9cb9NnkRv-wED/s1600/fstr.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNiG05-HIl4EdE71VcS1N70E74Yc2mo59qB1J3xRAqmz0qauU8AAKT4jJAM7vgfJIibzKGAaot0GURYydf2FAAsfk_nSGDL47wteUvq6HuNcgxutfAMSINYkyFyIab7cR9cb9NnkRv-wED/s400/fstr.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Algunas características del File System Transfer Reciever o FSTR:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Permite transferir carpetas y contenido a un file system remoto a través del Transfer Service.&lt;/li&gt;
&lt;li&gt;El file system de destino se establece especializando el tipo transfer target a file system transfer.&lt;/li&gt;
&lt;li&gt;Nos permite establecer un mapeo entre la raíz del file system de origen y de destino.&lt;/li&gt;
&lt;li&gt;Soporta la sincronización del Replication Service&lt;/li&gt;
&lt;li&gt;Usa una base de datos derby para mantener el historial de nodos sincronizados (no usa la estructura del contentstore de Alfresco).&lt;/li&gt;
&lt;li&gt;Se ejecuta bajo una instancia de Tomcat 7 como una aplicación web usando el framework de webscripts&lt;/li&gt;
&lt;/ul&gt;
El File System Transfer Reciever que viene empaquetado como un zip que se instala a parte y está disponible tanto para versiones Community como Enterprise. La estructura del fichero zip es la siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;direction: ltr; margin-bottom: 0pt; margin-left: 0in; margin-top: 3.84pt; text-indent: 0in; unicode-bidi: embed; word-break: normal;&quot;&gt;
&lt;span style=&quot;color: #595959; font-family: &#39;Courier New&#39;;&quot;&gt;|- classes/&lt;br /&gt;&amp;nbsp; |&amp;nbsp;&amp;nbsp; |-&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #595959; font-family: &#39;Courier New&#39;;&quot;&gt;ftr-custom.properties&lt;/span&gt;&lt;span style=&quot;color: #595959; font-family: &#39;Courier New&#39;;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #595959; font-family: &#39;Courier New&#39;;&quot;&gt;&amp;nbsp; |&amp;nbsp;&amp;nbsp; |- ftr-custom-context.xml&lt;br /&gt;&amp;nbsp; |&amp;nbsp;&amp;nbsp; |-&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #595959; font-family: &#39;Courier New&#39;;&quot;&gt;ftr-launcher.properties&lt;/span&gt;&lt;span style=&quot;color: #595959; font-family: &#39;Courier New&#39;;&quot;&gt;&lt;br /&gt;&amp;nbsp; |&amp;nbsp;&amp;nbsp; |- ftr-launcher-context.xml&lt;br /&gt;&amp;nbsp; |&amp;nbsp;&amp;nbsp; |- log4j.properties&lt;br /&gt;&amp;nbsp; |- lib/&lt;br /&gt;&amp;nbsp; |&amp;nbsp;&amp;nbsp; |- &amp;lt;various libs&amp;gt;&lt;br /&gt;&amp;nbsp; |-&lt;/span&gt;&lt;span style=&quot;color: #595959; font-family: &#39;Courier New&#39;;&quot;&gt;webapps&lt;/span&gt;&lt;span style=&quot;color: #595959; font-family: &#39;Courier New&#39;;&quot;&gt;/&lt;br /&gt;&amp;nbsp; |&amp;nbsp;&amp;nbsp; |- file-transfer-&lt;/span&gt;&lt;span style=&quot;color: #595959; font-family: &#39;Courier New&#39;;&quot;&gt;receiver.war&lt;/span&gt;&lt;span style=&quot;color: #595959; font-family: &#39;Courier New&#39;;&quot;&gt;&lt;br /&gt;&amp;nbsp; |- file-transfer-receiver.jar&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
En los ficheros properties configuramos:&lt;br /&gt;
&lt;br /&gt;
ftr-launcher.properties&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;
&amp;nbsp; ftr.tomcat.baseDir=${user.dir}
&amp;nbsp; ftr.tomcat.portNum=9090
&lt;/code&gt; &lt;/pre&gt;
ftr-custom.properties&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;&amp;nbsp; 
&amp;nbsp; ftr.tomcat.portNum=9090
&amp;nbsp; fileTransferReceiver.stagingDirectory=./ftr-staging
&amp;nbsp; fileTransferReceiver.rootDirectory=./ftr-root
&amp;nbsp; fileTransferReceiver.jdbcUrl=jdbc:derby:./derbyDB;create=true;user=alfresco;password=alfresco
&amp;nbsp; fileTransferReceiver.username=admin
&amp;nbsp; fileTransferReceiver.password=admin
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
El staging directory será el directorio temporal donde se va a realizar la replicación y una vez está haya concluido se moverá al root directory.&amp;nbsp; Una vez configurado levantaremos el servicio:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #595959; font-family: &#39;Courier New&#39;;&quot;&gt;java –jar file-transfer-receiver.jar&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
En la interfaz de Share crearemos primero el target, para ello tendremos que crear una carpeta en la ruta siguiente:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglFluZnkz3sK7PBICmqoNZTJ2myautGXqKOy4nSq4zDYIvvWdsbcYZrVymlhm8VSGHnGobAX5UmDDT0KMIMVVnCIxSuBt31cMyvANklBSnSPlQnGAIjWHVYue1L_WHxVXjwJ_njcD2GFeH/s1600/crumb.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglFluZnkz3sK7PBICmqoNZTJ2myautGXqKOy4nSq4zDYIvvWdsbcYZrVymlhm8VSGHnGobAX5UmDDT0KMIMVVnCIxSuBt31cMyvANklBSnSPlQnGAIjWHVYue1L_WHxVXjwJ_njcD2GFeH/s1600/crumb.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
La carpeta Default Group tiene una regla que automáticamente especializa las carpetas al tipo trx:transferTarget. Como en este caso lo que necesitamos es una especialización a trx:fileTransferTarget. A día de hoy y con la versión 4.1.3 no podremos realizar este cambio a menos que editmos el ficher share-config-custon.xml y añadamos a la seccion types lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;      &amp;lt;types&amp;gt;
         &amp;lt;type name=&quot;cm:content&quot;&amp;gt;
         &amp;lt;/type&amp;gt;

         &amp;lt;type name=&quot;cm:folder&quot;&amp;gt;
         &amp;lt;/type&amp;gt;

         &amp;lt;type name=&quot;trx:transferTarget&quot;&amp;gt;
               &amp;lt;subtype name=&quot;trx:fileTransferTarget&quot; /&amp;gt;
         &amp;lt;/type&amp;gt;
      &amp;lt;/types&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Además deberemos activar la replicación a nivel de configuración en el fichero alfresco-global.properties&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt; replication.enabled=true&lt;/code&gt;&lt;/pre&gt;
En las acciones del directorio que acabamos de crear (pulsar 2 veces en el directorio creado sobre la barra de navegación) tendremos la accion Change Type y nos aparecerá un desplegable para especializar al tipo fileTransferTarget&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4GA3aMten4b4xauAPPD3NlIo_lfxIzJydw6V2dZdawCbFOO8hIq9dJcpxPYVbkeWhK37QVHcZIIemTOeHljCQxOtJkrgDLzOYEPk9mePCdCSPawBpPOoak2gq0LrXxwvhPTTai6mJQHZe/s1600/changetype.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4GA3aMten4b4xauAPPD3NlIo_lfxIzJydw6V2dZdawCbFOO8hIq9dJcpxPYVbkeWhK37QVHcZIIemTOeHljCQxOtJkrgDLzOYEPk9mePCdCSPawBpPOoak2gq0LrXxwvhPTTai6mJQHZe/s1600/changetype.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Editando las propiedades establecemos la configuración:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAGaDN3uPQXpUSSQOeMNeNHU6uPWAVp83L0q2itWCvZQtrXXFup6rRRGftenLTGjOxpk6YqFuIeoPYcKitDdmdxA0Da0_ErhtUhbwRImHecvgeo7hsR_LvXusUsVPOdktPFa36d7DcYPp1/s1600/target.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAGaDN3uPQXpUSSQOeMNeNHU6uPWAVp83L0q2itWCvZQtrXXFup6rRRGftenLTGjOxpk6YqFuIeoPYcKitDdmdxA0Da0_ErhtUhbwRImHecvgeo7hsR_LvXusUsVPOdktPFa36d7DcYPp1/s1600/target.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Y configuramos el job de replicación a través de la consola de administración&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE3GcwseJVVFxMX-xXHmUqNt7ZZi2nPxSKJsz14c2uCgI5njGqknGZmlJVerMH1uJDbC3SDtkfIgVx-lWMcSwfd77mtiy55aqifneGIcogtSGuPBzrhWSobVPguv1Wt452rnEZfrUgSEW6/s1600/job.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE3GcwseJVVFxMX-xXHmUqNt7ZZi2nPxSKJsz14c2uCgI5njGqknGZmlJVerMH1uJDbC3SDtkfIgVx-lWMcSwfd77mtiy55aqifneGIcogtSGuPBzrhWSobVPguv1Wt452rnEZfrUgSEW6/s1600/job.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Y ejecutamos o programamos el job. En la consola del fstr veremos un mensaje cuando se finalice la replicación&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;
Status update: COMPLETE&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Y podemos comprobar que la estructura de ficheros aparece bajo la ruta configurada: &lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;
alfresco@alfresco:/opt/ftr$ ls ftr-root/
Drafts&amp;nbsp; Effective&amp;nbsp; In Review&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://alfrescoadmin.blogspot.com/feeds/3526340333108267559/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://alfrescoadmin.blogspot.com/2013/03/file-system-transfer-reciever.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/3526340333108267559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/3526340333108267559'/><link rel='alternate' type='text/html' href='http://alfrescoadmin.blogspot.com/2013/03/file-system-transfer-reciever.html' title='File System Transfer Reciever'/><author><name>Raúl</name><uri>http://www.blogger.com/profile/14032957407806229376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDOqQyKlquc3fthMBpei8HXO217vUQBWGPXztVrEQGhPjiLGs7AqBPw_A_6ubmzYIOa6sBRZOhKN2Qo_aTtzj8yBMjG-Jc9gxCq7FXreAJV_tIew9I3Ov-v0PjMl_yNB0/s220/yo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNiG05-HIl4EdE71VcS1N70E74Yc2mo59qB1J3xRAqmz0qauU8AAKT4jJAM7vgfJIibzKGAaot0GURYydf2FAAsfk_nSGDL47wteUvq6HuNcgxutfAMSINYkyFyIab7cR9cb9NnkRv-wED/s72-c/fstr.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6921541245628552381.post-2534776085140638755</id><published>2012-02-15T13:46:00.000+01:00</published><updated>2012-02-15T14:22:09.609+01:00</updated><title type='text'>Actualizando Alfresco</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Muchas instalaciones de Alfresco de las que he visto son bastante estáticas, y quizás uno de los motivos principales es que si las cosas funcionan no se tocan. Otro de los motivos suele ser que hay desarrollos involucrados en la instalación que se deberian validar contra la nueva versión (aunque la experiencia me demuestra que desarrollos hechos para 2.0c han seguido funcionando en versiones 3.4d no está de más asegurarse).&lt;br /&gt;
&lt;br /&gt;
Antes de nada nos deberemos plantear nuestros motivos para hacer actualizar Alfresco. ¿ Hay bugs en nuestra versión que queremos resolver ? &lt;a href=&quot;https://issues.alfresco.com/jira/browse/ALF#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel&quot; target=&quot;_blank&quot;&gt;(changelog de versiones 3.4.3 en adelante)&lt;/a&gt;&amp;nbsp; ¿ Queremos alguna funcionalidad nueva ? &lt;a href=&quot;http://wiki.alfresco.com/wiki/Category:Release_Notes&quot; target=&quot;_blank&quot;&gt;(release notes para community)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Una vez decidida la actualización es la hora de ver sobre que versiones deberemos pasar para llegar a la que queremos. Alfresco suele diferenciar entre versiones menores y mayores y siempre es recomendable pasar a la última versión menor antes de hacer un salto a una mayor aunque el diagrama para la versión 4.0 muestra actualizaciones directas desde 3.1 en adelante:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzHuWEv2EE6h2R5m_hh1VUiWA0tqC7I7LJA1B4xHYtD_hxkvmXtfALeRDXmRwrT2sE8KXRmM2-GHbAX1VMe44HdMBKOa73VgeMRS8iZYG8hAy5ZMN1uVwtmBwnY1O_SRSRI_3WeCLoqMMx/s1600/upgradepaths40.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzHuWEv2EE6h2R5m_hh1VUiWA0tqC7I7LJA1B4xHYtD_hxkvmXtfALeRDXmRwrT2sE8KXRmM2-GHbAX1VMe44HdMBKOa73VgeMRS8iZYG8hAy5ZMN1uVwtmBwnY1O_SRSRI_3WeCLoqMMx/s400/upgradepaths40.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Una vez tenemos claro nuestro escenario conviene hacerse varias preguntas:&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;¿ Mis logs estan libres de errores &quot;desconocidos&quot; ? Deberiamos ver que la instalación en funcionamiento no esta dando errores de forma continuada ya que la actualización puede agravar el problema si no lo tenemos controlado. &lt;/li&gt;
&lt;li&gt;¿ Tengo algún tipo de personalización que deberia probar? se incluyen modificaciones en apariencia, modelo de datos, desarrollos, ficheros AMP.&lt;/li&gt;
&lt;li&gt;¿ Deberia actualizar algún componente ? JDK, Servidor de aplicaciones, conector de base de datos... Intentaremos ir conforme el &lt;a href=&quot;http://www.alfresco.com/services/subscription/supported-platforms/4-x.pdf%20&quot; target=&quot;_blank&quot;&gt;stack oficial&lt;/a&gt; para enterprise ya que son versiones testeadas. Tener muy en cuenta que desde las versiones Community 3.2 se dejó de soportar oficialmente Oracle y SQL Server aunque existen proyectos de la comunidad para darles el soporte. &lt;/li&gt;
&lt;li&gt;¿ Voy a disponer de una copia de mi instancia de Alfresco para realizar las copias ? El disponer de una copia con datos, aunque no estén actualizados nos puede ahorrar muchos dolores de cabeza y vueltas atrás en producción.&lt;/li&gt;
&lt;li&gt;¿ Mi usuario de base de datos tiene permisos para borrar y crear tablas ?&lt;/li&gt;
&lt;li&gt;¿ He tocado algo dentro del directorio de deploy ? Deberia mover toda mi configuración al directorio &lt;i&gt;extension&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;¿ Estoy en una versión 3.1 o anterior ? Deberé unificar toda mi configuración del &lt;i&gt;fichero custom-repository.properties&lt;/i&gt; en el fichero &lt;i&gt;alfresco-global.properties &lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Alfresco provee de un mecanismo sencillo de actualización que basicamente se centra un leer el nuevo war y parchear la base de datos a la nueva versión. Por este mismo mecanismo no se debe tocar nunca el contenido desplegado de Alfresco y se debe usar el directorio de extension que nos ayuda a tener toda la configuración centralizada en un directorio.&lt;br /&gt;
&lt;br /&gt;
Lo ideal si tenemos tiempo y espacio sería tener una copia con datos y trabajar primero sobre esa ya que será el entorno más parecido al escenario final. Manos a la obra:&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Pararemos Alfresco y realizaremos una copia en frio (ver la entrada de &lt;a href=&quot;http://alfrescoadmin.blogspot.com/2011/05/backup-en-alfresco.html&quot; target=&quot;_blank&quot;&gt;Backup&lt;/a&gt;) &lt;/li&gt;
&lt;li&gt;Instalaremos la nueva versión de Alfresco en una nueva ubicación, con una base de datos límpia y con un nuevo repositorio (directorio alf_data). Yo suelo nombrar a las instalaciones segun la versión, por ejemplo teniendo la versión 3.3g en /opt/alfresco33g y la 4.0 en /opt/alfresco40, lo mismo aplica para las bases de datos&lt;/li&gt;
&lt;li&gt;Verificaremos que la instalación limpia funciona correctamente y la pararemos&lt;/li&gt;
&lt;li&gt;Revisaremos los ficheros de configuración anteriores y llevaremos la configuración a los de la nueva versión. No se deben reutilizar los ficheros porque pueden aparecer nuevos parámetros que quedarán sin configurar. Además también deberemos incluir en este punto todos los desarrollos y personalizaciones. Esta tarea se puede hacer de manera previa al proceso de actualización y así minizaremos el downtime. Si configuramos en este punto la base de datos &lt;i&gt;db.url&lt;/i&gt;&amp;nbsp; y &lt;i&gt;hibernate.default_schema&lt;/i&gt; (Oracle) y el repositorio de la versión anterior &lt;i&gt;dir.root&lt;/i&gt; en el próximo reinicio se ejecutará la actualización. Si queremos hacer alguna prueba más dejar estos dos puntos para el final.&lt;/li&gt;
&lt;li&gt;Reiniciar alfresco y monitorizar el fichero log&lt;/li&gt;
&lt;/ol&gt;
Empezaremos a ver como Alfresco detecta la nueva versión y empieza a aplicar parches. Este proceso es bastante rápido, en mi portátil ha tardado menos de 3 minutos en arrancar (no he reindexado contenido). Tras la actualización el log muestra el siguiente mensaje indicando la versión original y la nueva.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background: none repeat scroll 0% 0% rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;
&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;2012-02-15 13:07:45,445  INFO  [service.descriptor.DescriptorService] [main] Alfresco started (Community). Current version: 4.0.0 (4003) schema 5.025. Originally installed version: 3.3.0 (g 2860) schema 4.100.
&lt;/code&gt;&lt;/div&gt;
&lt;br /&gt;
Durante este proceso de actualización puede ser recomendable hacer una reindexación del repositorio estableciendo en alfresco-global.properties el parámetro &lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background: none repeat scroll 0% 0% rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;
&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;index.recovery.mode=FULL&lt;/code&gt;&lt;/div&gt;
&lt;br /&gt;
NOTA: en este proceso se ha mantenido la indexación con lucene. Si queremos empezar a usar SOLR primero deberemos actualizar con lucene para que se ejecuten algunos scripts y una vez se haya actualizado se puede migrar a SOLR.&lt;br /&gt;
&lt;br /&gt;
Información obtenida de:&lt;br /&gt;
&lt;a href=&quot;http://wiki.alfresco.com/wiki/General_Upgrade_Process&quot;&gt;http://wiki.alfresco.com/wiki/General_Upgrade_Process&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://docs.alfresco.com/4.0/index.jsp&quot;&gt;http://docs.alfresco.com/4.0/index.jsp&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alfrescoadmin.blogspot.com/feeds/2534776085140638755/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://alfrescoadmin.blogspot.com/2012/02/actualizando-alfresco.html#comment-form' title='11 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/2534776085140638755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/2534776085140638755'/><link rel='alternate' type='text/html' href='http://alfrescoadmin.blogspot.com/2012/02/actualizando-alfresco.html' title='Actualizando Alfresco'/><author><name>Raúl</name><uri>http://www.blogger.com/profile/14032957407806229376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDOqQyKlquc3fthMBpei8HXO217vUQBWGPXztVrEQGhPjiLGs7AqBPw_A_6ubmzYIOa6sBRZOhKN2Qo_aTtzj8yBMjG-Jc9gxCq7FXreAJV_tIew9I3Ov-v0PjMl_yNB0/s220/yo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzHuWEv2EE6h2R5m_hh1VUiWA0tqC7I7LJA1B4xHYtD_hxkvmXtfALeRDXmRwrT2sE8KXRmM2-GHbAX1VMe44HdMBKOa73VgeMRS8iZYG8hAy5ZMN1uVwtmBwnY1O_SRSRI_3WeCLoqMMx/s72-c/upgradepaths40.png" height="72" width="72"/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6921541245628552381.post-8779621989149482950</id><published>2012-02-03T12:25:00.000+01:00</published><updated>2012-02-03T12:27:00.005+01:00</updated><title type='text'>Alfresco 4 ya está aquí</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Aunque&amp;nbsp; la versión&amp;nbsp; Community 4.0c ya lleva un tiempo entre nosotros ayer se liberaron las versiones 4.0 EE y 4.0d.&lt;br /&gt;
&lt;br /&gt;
Aunque podeis información en la página oficial de Alfresco y la comunidad de blogs sobre las nuevas funcionalidades de Alfresco me ha alegrado encontrar en un PDF referencias a como se compara con la versión 3.4 y que puede ser determinante para los usuarios de Alfresco que lo están usando ya que según Alfresco, en sus tests, gracias sobre todo al sistema de indexado con SOLR que permite separar el contenido de los indices han comprobado:&lt;br /&gt;
&lt;br /&gt;
• 10x consultas más rapidas al&amp;nbsp; Dashboard&amp;nbsp; de Alfresco Share &lt;br /&gt;
• 3x más rapido en la subida de documentos (hasta 4x más rapido en cargas masivas)&lt;br /&gt;
• 25% más rapido cargando la Document Library&lt;br /&gt;
• 50% mas rápido cargando los detalles de un Documento&lt;br /&gt;
• Búsquedas e indexados significativamente mejorados.&lt;br /&gt;
&lt;br /&gt;
Información obtenida de&lt;br /&gt;
&lt;a href=&quot;http://alfresco.com/products/editions/enterprise/4-0/&quot;&gt;http://alfresco.com/products/editions/enterprise/4-0/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alfrescoadmin.blogspot.com/feeds/8779621989149482950/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://alfrescoadmin.blogspot.com/2012/02/alfresco-4-ya-esta-aqui.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/8779621989149482950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/8779621989149482950'/><link rel='alternate' type='text/html' href='http://alfrescoadmin.blogspot.com/2012/02/alfresco-4-ya-esta-aqui.html' title='Alfresco 4 ya está aquí'/><author><name>Raúl</name><uri>http://www.blogger.com/profile/14032957407806229376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDOqQyKlquc3fthMBpei8HXO217vUQBWGPXztVrEQGhPjiLGs7AqBPw_A_6ubmzYIOa6sBRZOhKN2Qo_aTtzj8yBMjG-Jc9gxCq7FXreAJV_tIew9I3Ov-v0PjMl_yNB0/s220/yo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6921541245628552381.post-4133273100641703102</id><published>2011-08-30T13:05:00.000+02:00</published><updated>2011-08-30T13:05:31.868+02:00</updated><title type='text'>Tomcat en modo demonio: jsvc</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Es posible ejecutar Tomcat, y por ende Alfresco, en modo demonio. La principal ventaja de este sistema es que nos permite ejecutar Tomcat como usuario no-root y usar puertos privilegiados. Es importante aclarar que según la documentación vamos a poder usar los puertos &amp;lt;1024 &amp;nbsp;pero única y exclusivamente a nivel de tomcat, no de Alfresco. Esto nos va a permitir por ejemplo ejecutar Tomcat en el puerto 80. Sin embargo para poder usar FTP y CIFS desde un usuario no privilegiados deberemos usar puertos alternativos y seguir la&amp;nbsp;&lt;a href=&quot;http://wiki.alfresco.com/wiki/File_Server_Configuration#Running_SMB.2FCIFS_from_a_normal_user_account&quot;&gt;guía&lt;/a&gt;&amp;nbsp;de la wiki y redireccionar los puertos a nivel de firewall. Esto es debido a que solo se demoniza el proceso de tomcat y no las aplicaciones que ejecuta.&lt;br /&gt;
&lt;br /&gt;
jsvc viene con los binarios de Tomcat con lo que solo necesitaremos compilarlos:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: none repeat scroll 0% 0% rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;    cd $CATALINA_HOME/bin
    tar xvfz commons-daemon-native.tar.gz
    cd commons-daemon-1.0.x-native-src/unix
    ./configure
    make
    cp jsvc ../..
    cd ../..&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Si no tenemos definida la variable de entorno JAVA_HOME tendremos que pasar la ruta en el configure:&lt;br /&gt;
&lt;pre style=&quot;background: none repeat scroll 0% 0% rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;./configure --with-java=/usr/java/jdk1.6.0_19/
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
A continuacion pongo el init script que uso para arrancar/parar Alfresco con jsvc&lt;br /&gt;
&lt;pre style=&quot;background-attachment: scroll; background-clip: initial; background-color: #f0f0f0; background-image: none; background-origin: initial; background-position: 0% 0%; background-repeat: repeat repeat; border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: dashed; border-top-width: 1px; height: auto; overflow-x: auto; overflow-y: auto; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 99%;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 20px;&quot;&gt;#!/bin/sh
#
# tomcat           Utilizing the jsvc start and stop the servlet engine.
#
# chkconfig: 345 99 10
# description: Starts and stops the tomcat servlet engine.
# Source function library.
. /etc/rc.d/init.d/functions
JAVA_HOME=/usr/java/jdk1.6.0_15/
CATALINA_HOME=/opt/alfresco/tomcat
DAEMON_HOME=/opt/alfresco/tomcat/bin/
TOMCAT_USER=tomcat
TOMCAT_GROUP=tomcat
TOMCAT_PID=/var/run/jsvc_alfresco.pid
TMP_DIR=/opt/alfresco/tomcat/temp
CATALINA_OPTS=
CLASSPATH=$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/bin/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar
CATALINA_WORK_DIR=$CATALINA_HOME/work
# To get a verbose JVM
#-verbose \
# To get a debug of jsvc.
#-debug \
WAIT_MAX=2
case &quot;$1&quot; in
start)
  #
  # Start Tomcat
  #
echo -n &quot;Starting Tomcat: &quot;
$DAEMON_HOME/jsvc -user $TOMCAT_USER -pidfile $TOMCAT_PID -home $JAVA_HOME -jvm server -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=196M -Xms512m -Xmx2048m -Dcatalina.home=$CATALINA_HOME -Djava.io.tmpdir=$TMP_DIR -outfile /opt/alfresco/tomcat/logs/catalina.out -errfile &#39;&amp;amp;1&#39; $CATALINA_OPTS -cp $CLASSPATH org.apache.catalina.startup.Bootstrap

sleep 2s
if [ -f $TOMCAT_PID ]; then
             echo_success
else
             echo_failure
fi
echo
;;
stop)
#
# Stop Tomcat
#
echo -n &quot;Stopping Tomcat: &quot;
PID=`cat $TOMCAT_PID`
kill $PID 2&amp;gt;/dev/null 1&amp;gt;/dev/null
if [ `ps -p ${PID} &amp;gt; /dev/null 2&amp;gt;&amp;amp;1` ]; then
             echo_failure
else
             echo_success
             rm -f $TOMCAT_PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1
fi
echo
;;
flush)
#
# Stop Tomcat
#
   echo -n &quot;Stopping Tomcat: &quot;
   PID=`cat $TOMCAT_PID`
   kill $PID 2&amp;gt;/dev/null 1&amp;gt;/dev/null
   if [ `ps -p ${PID} &amp;gt; /dev/null 2&amp;gt;&amp;amp;1` ]; then
                echo_failure
   else
                echo_success
                rm -f $TOMCAT_PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1
   fi
   echo
   echo -n &quot;Flushing Tomcat CACHE ($CATALINA_WORK_DIR) : &quot;
   rm -rf $CATALINA_WORK_DIR
   if [ -e $CATALINA_WORK_DIR ]; then
                echo_failure
                echo
                exit 1;
   fi
   mkdir $CATALINA_WORK_DIR
   chown $TOMCAT_USER.$TOMCAT_GROUP $CATALINA_WORK_DIR
   if [ ! -e $CATALINA_WORK_DIR ]; then
                echo_failure
                echo
                exit 1;
   fi
   echo_success
   echo
   ;;
*)
   echo &quot;Usage: $0 {start|stop|flush}&quot;
   exit 1;;
esac
exit 0&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: black; font-family: arial; font-size: 12px; line-height: 20px;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;Este script además tiene el parámetro flush que nos va a permitir eliminar de una forma fácil el contenido del directorio work.&lt;br /&gt;
&lt;br /&gt;
Hay que tener en cuenta que cuando usamos jsvc ya no estamos invocando a los scripts startup.sh ni shutdown.sh con lo cual no se parará el proceso usando estos ficheros. Todas las variables que tuvieramos definidas en este fichero como en el catalina.sh deberán ser movidas al nuevo script.&lt;br /&gt;
&lt;br /&gt;
Cuando miremos los procesos en ejecución veremos 2 procesos. El primero levanta los puertos y el segundo es el que atiende las peticiones.&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: none repeat scroll 0% 0% rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;root &amp;nbsp; &amp;nbsp; 16126 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp;0 12:32 ? &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;00:00:00 jsvc.exec -user tomcat -pidfile /var/run/jsvc_alfresco.pid -home /usr/java/jdk1.6.0_19/ -jvm server -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=160M -Xms512m -Xmx1024m -Dcatalina.home=/opt/alfresco/tomcat -Djava.io.tmpdir=/opt/alfresco/tomcat/temp -outfile /opt/alfresco/tomcat/logs/catalina.out -errfile &amp;amp;1 -cp /usr/java/jdk1.6.0_19//lib/tools.jar:/opt/alfresco/tomcat/bin/commons-daemon.jar:/opt/alfresco/tomcat/bin/bootstrap.jar org.apache.catalina.startup.Bootstrap
tomcat &amp;nbsp; 16127 16126 52 12:32 ? &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;00:01:15 jsvc.exec -user tomcat -pidfile /var/run/jsvc_alfresco.pid -home /usr/java/jdk1.6.0_19/ -jvm server -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=160M -Xms512m -Xmx2048m -Dcatalina.home=/opt/alfresco/tomcat -Djava.io.tmpdir=/opt/alfresco/tomcat/temp -outfile /opt/alfresco/tomcat/logs/catalina.out -errfile &amp;amp;1 -cp /usr/java/jdk1.6.0_19//lib/tools.jar:/opt/alfresco/tomcat/bin/commons-daemon.jar:/opt/alfrescod/tomcat/bin/bootstrap.jar org.apache.catalina.startup.Bootstrap
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;Parando Tomcat&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Arrancando Tomcat via jsvc, &amp;nbsp;entra en mono deomnio, lo que significa que no va a escuchar en el puerto 8005 y por tanto no se va a poder detener via    &lt;code&gt;catalina.sh&lt;/code&gt; (o&amp;nbsp;&lt;code&gt;shutdown.sh&lt;/code&gt;).   &lt;br /&gt;
Lo que se hace es enviar un SIGTERM o SIGINT al proceso que pertenece a root. En nuestro caso se encuentra el pid en $CATALINA_PID.   &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alfrescoadmin.blogspot.com/feeds/4133273100641703102/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/08/tomcat-en-modo-demonio-jsvc.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/4133273100641703102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/4133273100641703102'/><link rel='alternate' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/08/tomcat-en-modo-demonio-jsvc.html' title='Tomcat en modo demonio: jsvc'/><author><name>Raúl</name><uri>http://www.blogger.com/profile/14032957407806229376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDOqQyKlquc3fthMBpei8HXO217vUQBWGPXztVrEQGhPjiLGs7AqBPw_A_6ubmzYIOa6sBRZOhKN2Qo_aTtzj8yBMjG-Jc9gxCq7FXreAJV_tIew9I3Ov-v0PjMl_yNB0/s220/yo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6921541245628552381.post-2802788708880008572</id><published>2011-07-23T01:42:00.000+02:00</published><updated>2011-07-23T01:42:22.318+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cluster"/><title type='text'>Receta para Alfresco en Cluster con replicación de sesión</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Con la salida de la versión 3.4.3 de Alfresco Enterprise se ha solucionado un bug que arrastraba la configuración en cluster desde 2009. Finalmente se ha solucionado y voy a explicar paso a paso como se debe configurar utilizando el paquete en formato zip.&lt;br /&gt;
&lt;br /&gt;
Alfresco de por si no replica las sesiones del usuario de un nodo a otro y de esto se debe encargar el servidor de alpicaciones. Por tanto debemos establecer el cluster no solo en Alresco si no también a nivel de Tomcat. En mis pruebas he seguido este esquema:&lt;br /&gt;
&lt;div&gt;&lt;pre&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 4px; -webkit-border-vertical-spacing: 4px;&quot;&gt;
         Balanceador
        192.168.1.122
             |    
          Cluster      
        /         \        
    Tomcat1       Tomcat2  
192.168.1.122   192.168.1.12
&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 4px; -webkit-border-vertical-spacing: 4px;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;Balanceador: Apache 2.2 + proxy_balancer + proxy_ajp&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;Cluster: Tomcat configurado mediante BackupManager&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;Tomcat1: Centos 5 con Tomcat 6.0.32&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;Tomcat2: Ubuntu con Tomcat 6.0.32&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;En este esquema un nodo hace de servidor NFS y de balanceador. En un entorno en producción estos 2 elementos deberian ser independientes para garantizar que la caida de un nodo no afecte al otro.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; white-space: normal;&quot;&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; white-space: normal;&quot;&gt;Creamos la estructura de directorios para la instalación&lt;/span&gt;&lt;/div&gt;&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;#mkdir -p /opt/alfresco/tomcat
#mkdir -p /opt/alfresco/indices
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;&lt;b&gt;Tomcat:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;#cd /opt/alfresco
#tar zxvf &amp;nbsp;/tmp/apache-tomcat-6.0.32.tar.gz
#ln -s apache-tomcat-6.0.32 tomcat
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;Copiamos el contenido del paquete de Alfresco&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;#unzip alfresco-enterprise-3.4.3.zip -d alfresco
#cp -rp /tmp/alfresco/web-server/* /opt/alfresco/tomcat
&lt;/code&gt;&lt;/pre&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; white-space: normal;&quot;&gt;En esta copia a parte de los ficheros de Alfresco también se sobreescriben ficheros de configuración de Tomcat. Es necesario editar el fichero context.xml en destino puesto que el valor que tiene impide el funcionamiento del cluster. En el fichero context.xml debemos dejar comentada la línea:&lt;/span&gt;

&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;&amp;nbsp;&amp;lt;!-- Uncomment this to disable session persistence across Tomcat restarts --&amp;gt;
&amp;nbsp;&amp;lt;!--Manager pathname=&quot;&quot; /--&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;Activamos el puerto AJP en ambos nodos descomentando en el fichero server.xml la linea&lt;/span&gt;&lt;/span&gt;

&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;&amp;nbsp;&amp;lt;Connector port=&quot;8009&quot; protocol=&quot;AJP/1.3&quot; redirectPort=&quot;8443&quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;Configuramos el nombre de la ruta en la directiva Engine del fichero server.xml de los 2 nodos.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;tomcat1:&lt;/span&gt;&lt;/span&gt;

&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;&amp;nbsp;&amp;lt;Engine name=&quot;Catalina&quot; defaultHost=&quot;localhost&quot; jvmRoute=&quot;tomcat1&quot;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;tomcat2:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;&amp;nbsp;&amp;lt;Engine name=&quot;Catalina&quot; defaultHost=&quot;localhost&quot; jvmRoute=&quot;tomcat2&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;En este punto también vamos a configurar el Cluster de Tomcat tal como se indica en el manual de Apache Tomcat:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;&lt;a href=&quot;http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html&quot;&gt;http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;Editamos el fichero server.xml dentro de la directiva &amp;lt;Engine&amp;gt;&lt;/span&gt;

&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 4px; -webkit-border-vertical-spacing: 4px; font-family: &#39;Times New Roman&#39;; font-size: small; line-height: normal; white-space: normal;&quot;&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;Cluster className=&quot;org.apache.catalina.ha.tcp.SimpleTcpCluster&quot;
                 channelSendOptions=&quot;6&quot;&amp;gt;

          &amp;lt;Manager className=&quot;org.apache.catalina.ha.session.BackupManager&quot;
                   expireSessionsOnShutdown=&quot;false&quot;
                   notifyListenersOnReplication=&quot;true&quot;
                   mapSendOptions=&quot;6&quot;/&amp;gt;
          &amp;lt;!--
          &amp;lt;Manager className=&quot;org.apache.catalina.ha.session.DeltaManager&quot;
                   expireSessionsOnShutdown=&quot;false&quot;
                   notifyListenersOnReplication=&quot;true&quot;/&amp;gt;
          --&amp;gt;        
          &amp;lt;Channel className=&quot;org.apache.catalina.tribes.group.GroupChannel&quot;&amp;gt;
            &amp;lt;Membership className=&quot;org.apache.catalina.tribes.membership.McastService&quot;
                        address=&quot;228.0.0.4&quot;
                        port=&quot;45564&quot;
                        frequency=&quot;500&quot;
                        dropTime=&quot;3000&quot;/&amp;gt;
            &amp;lt;Receiver className=&quot;org.apache.catalina.tribes.transport.nio.NioReceiver&quot;
                      address=&quot;auto&quot;
                      port=&quot;5000&quot;
                      selectorTimeout=&quot;100&quot;
                      maxThreads=&quot;6&quot;/&amp;gt;

            &amp;lt;Sender className=&quot;org.apache.catalina.tribes.transport.ReplicationTransmitter&quot;&amp;gt;
              &amp;lt;Transport className=&quot;org.apache.catalina.tribes.transport.nio.PooledParallelSender&quot;/&amp;gt;
            &amp;lt;/Sender&amp;gt;
            &amp;lt;Interceptor className=&quot;org.apache.catalina.tribes.group.interceptors.TcpFailureDetector&quot;/&amp;gt;
            &amp;lt;Interceptor className=&quot;org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor&quot;/&amp;gt;
            &amp;lt;Interceptor className=&quot;org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor&quot;/&amp;gt;
          &amp;lt;/Channel&amp;gt;

          &amp;lt;Valve className=&quot;org.apache.catalina.ha.tcp.ReplicationValve&quot;
                 filter=&quot;.*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;&quot;/&amp;gt;

          &amp;lt;Deployer className=&quot;org.apache.catalina.ha.deploy.FarmWarDeployer&quot;
                    tempDir=&quot;/tmp/war-temp/&quot;
                    deployDir=&quot;/tmp/war-deploy/&quot;
                    watchDir=&quot;/tmp/war-listen/&quot;
                    watchEnabled=&quot;false&quot;/&amp;gt;

          &amp;lt;ClusterListener className=&quot;org.apache.catalina.ha.session.ClusterSessionListener&quot;/&amp;gt;
&amp;lt;/Cluster&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;Añadimos el tag distributable que permitirá la replicación de sesiones en el fichero web.xml de alfresco.war y share.war en ambos nodos al final del fichero:&lt;/span&gt;

&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;.

.
&amp;lt;distributable/&amp;gt;
&amp;lt;/web-app&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;&lt;b&gt;MySQL&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;tomcat1:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;mysql&amp;gt; create database alfresco343;
mysql&amp;gt; grant all privileges on alfresco343.* to &#39;alfresco&#39;@&#39;%&#39; identified by &#39;alfresco&#39;;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;&lt;b&gt;NFS&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;tomcat1:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;/etc/exports&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;/opt/alfresco/alf_data 192.168.1.0/24(rw,no_root_squash,no_subtree_check,async)&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;tomcat2:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;#mount 192.168.1.122:/opt/alfresco/alf_data /opt/alfresco/alf_data&lt;/code&gt;&lt;/pre&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;&lt;b&gt;Apache&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;tomcat1:&lt;/span&gt;&lt;/span&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;#a2enmod proxy_ajp proxy_balancer proxy&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;Configuramos el balanceo con los 2 nodos, incluyendo además el balancer-manager que nos permitirá monitorizar, activar y desactivar cada uno de los nodos para realizar las pruebas. Para ello he configurado 2 grupos diferentes de balanceo, uno para Alfresco y otro para Share, cada uno de manera distinta para ver las 2 posibles configuraciones en el fichero /etc/apache2/conf.d/proxyajp.conf&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #eeeeee; border-bottom-color: rgb(153, 153, 153); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(153, 153, 153); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(153, 153, 153); border-top-style: dashed; border-top-width: 1px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; width: 100%;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 14px;&quot;&gt;&amp;lt;Location /balancer-manager&amp;gt;
   SetHandler balancer-manager
&amp;lt;/Location&amp;gt;

&amp;lt;Proxy balancer://balancer1&amp;gt;
   BalancerMember ajp://192.168.1.122:8009 route=tomcat1
   BalancerMember ajp://192.168.1.12:8009 route=tomcat2
   ProxySet stickysession=JSESSIONID
&amp;lt;/Proxy&amp;gt;
ProxyPass /alfresco balancer://balancer1/alfresco
&amp;lt;Proxy balancer://balancer2&amp;gt;
   BalancerMember ajp://192.168.1.122:8009 route=tomcat1
   BalancerMember ajp://192.168.1.12:8009 route=tomcat2
&amp;lt;/Proxy&amp;gt;
&amp;lt;Location /share&amp;gt;
ProxyPass balancer://balancer2/share stickysession=JSESSIONID
&amp;lt;/Location&amp;gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: black; font-size: 12px; line-height: 14px;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;div&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;&lt;b&gt;alfresco-global.properties&lt;/b&gt; en tomcat2:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre style=&quot;background-color: #eeeeee; border-bottom-color: rgb(153, 153, 153); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(153, 153, 153); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(153, 153, 153); border-top-style: dashed; border-top-width: 1px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; width: 100%;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 14px;&quot;&gt;#alf_data compartido por nfs
dir.root=/opt/alfresco343/alf_data
#indices en local
dir.indexes=/opt/alfresco343/indices/lucene-indexes
dir.indexes.backup=/opt/alfresco343/indices/backup-lucene-indexes
dir.indexes.lock=/opt/alfresco343/indices/locks
.
.
alfresco.cluster.name=ALFCLUSTER
alfresco.jgroups.defaultProtocol=TCP
alfresco.tcp.initial_hosts=192.168.1.122[7800],192.168.1.12[7800]
alfresco.jgroups.bind_address=192.168.1.12&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 14px;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;div&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;En el arranque veremos primero como se forma el cluster de tomcat&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;22-jul-2011 19:38:47 org.apache.catalina.core.StandardService start
INFO: Arrancando servicio Catalina
22-jul-2011 19:38:47 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.32
22-jul-2011 19:38:47 org.apache.catalina.ha.tcp.SimpleTcpCluster start
INFO: Cluster is about to start
22-jul-2011 19:38:47 org.apache.catalina.tribes.transport.ReceiverBase bind
INFO: Receiver Server Socket bound to:/192.168.1.12:5000
22-jul-2011 19:38:47 org.apache.catalina.tribes.membership.McastServiceImpl setupSocket
INFO: Setting cluster mcast soTimeout to 500
22-jul-2011 19:38:47 org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers
INFO: Sleeping for 1000 milliseconds to establish cluster membership, start level:4
22-jul-2011 19:38:48 org.apache.catalina.ha.tcp.SimpleTcpCluster memberAdded
INFO: Replication member added:org.apache.catalina.tribes.membership.MemberImpl[tcp://{192, 168, 1, 122}:5000,{192, 168, 1, 122},5000, alive=10519,id={80 9
4 82 -34 95 106 76 118 -85 119 -121 -44 -79 -105 -125 74 }, payload={}, command={}, domain={}, ]
&lt;/code&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;y una vez arrancado Alfresco, el cluster de este:&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;19:39:29,778  INFO  [cache.jgroups.JGroupsKeepAliveHeartbeatReceiver]
New cluster view with additional members:
   Last View: null
   New View:  [tomcat1-59540|1] [tomcat1-59540, tomcat2-44982]
&lt;/code&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;Una vez arrancados los 2 nodos y comprobando que Alfresco funciona vamos a abrir una pestaña nueva en el navegador con el balancer manager para poder ver en que nodo estamos y poder deshabilitarlo sin tener que parar ningún nodo:&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaxaAfXWuMZeBjMc8Tnnl8AvTL3FueBnCQl3RL038DU6ZTibxEou4kJFHCapDsxb1kg1OR_mmZNIegXkoOH1Claj0zQkRlN0wuWUpDU3H-0XfZGf_ZkRkenwwkflxdBqUGn4SkQQJXwtSx/s1600/balancer-manager.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaxaAfXWuMZeBjMc8Tnnl8AvTL3FueBnCQl3RL038DU6ZTibxEou4kJFHCapDsxb1kg1OR_mmZNIegXkoOH1Claj0zQkRlN0wuWUpDU3H-0XfZGf_ZkRkenwwkflxdBqUGn4SkQQJXwtSx/s640/balancer-manager.png&quot; width=&quot;477&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;Accediendo a http://192.168.1.122/share vemos que se ha generado tráfico en el worker del primer nodo, por tanto procedo a deshabilitarlo forzando el paso al segundo nodo.&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;Durate mis pruebas con Share la sesión se ha mantenido sin mostrarse ningún error. En el caso de Alfresco Explorer ha mostrado una pantalla de error de sesión expirada pero al volver a la aplicación ha recuperado la sesión.&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;Espero que esto os sirva!&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alfrescoadmin.blogspot.com/feeds/2802788708880008572/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/07/receta-para-alfresco-en-cluster-con.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/2802788708880008572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/2802788708880008572'/><link rel='alternate' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/07/receta-para-alfresco-en-cluster-con.html' title='Receta para Alfresco en Cluster con replicación de sesión'/><author><name>Raúl</name><uri>http://www.blogger.com/profile/14032957407806229376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDOqQyKlquc3fthMBpei8HXO217vUQBWGPXztVrEQGhPjiLGs7AqBPw_A_6ubmzYIOa6sBRZOhKN2Qo_aTtzj8yBMjG-Jc9gxCq7FXreAJV_tIew9I3Ov-v0PjMl_yNB0/s220/yo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaxaAfXWuMZeBjMc8Tnnl8AvTL3FueBnCQl3RL038DU6ZTibxEou4kJFHCapDsxb1kg1OR_mmZNIegXkoOH1Claj0zQkRlN0wuWUpDU3H-0XfZGf_ZkRkenwwkflxdBqUGn4SkQQJXwtSx/s72-c/balancer-manager.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6921541245628552381.post-524378595281983776</id><published>2011-06-20T09:45:00.000+02:00</published><updated>2011-06-20T09:49:51.217+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Configuración"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="RAC"/><title type='text'>Configuracion con Oracle RAC 10g y 11g</title><content type='html'>Recientemente he tenido la oportunidad de configurar Alfresco contra un Oracle RAC. Además la suerte ha sido doble porque inicialmente se configuró contra un RAC de 10g y posteriormente se ha migrado a un 11g, con lo cual hemos podido comprobar el funcionamiento en ambas versiones.&lt;br /&gt;
&lt;br /&gt;
De cara a Alfresco el tema del RAC es transparente ya que los cambios de configuración se realizan a nivel del driver de conexión. Vamos a ver la configuración utilizada:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;
db.name=alfresco
db.username=alfresco
db.password=alfresco
db.driver=oracle.jdbc.OracleDriver
db.url=jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=nodo1-vip.red.dominio.es)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=nodo2-vip.red.dominio.es)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=LAN_APLICACIONES.red.dominio.es)))
db.pool.validate.query=SELECT 1 FROM DUAL
hibernate.default_schema=ALFRESCO
&lt;/code&gt;&lt;/pre&gt;El cambio para Oracle RAC está en la cadena de conexión. Vamos a ver uno a uno los parámetros de esta cadena de conexión:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;code&gt;DESCRIPTION&lt;/code&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
contiene el descriptor de conexión, es decir todos los parámetros que se van a usar para conectar. En este caso teniamos el RAC con 2 nodos con lo cual solo teniamos un único descriptor. Sería posible para instalaciones mas complejas tener una lista de descriptores y cada descriptor a su vez con varios servidores. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;oac_no_warn&quot;&gt;(DESCRIPTION_LIST=
  (DESCRIPTION= 
   (ADDRESS=(&lt;span class=&quot;italic&quot;&gt;protocol_address_information&lt;/span&gt;))
   (ADDRESS=(&lt;span class=&quot;italic&quot;&gt;protocol_address_information&lt;/span&gt;))
   (ADDRESS=(&lt;span class=&quot;italic&quot;&gt;protocol_address_information&lt;/span&gt;))
   (CONNECT_DATA= 
     (SERVICE_NAME=service_name)))
  (DESCRIPTION= 
   (ADDRESS=(&lt;span class=&quot;italic&quot;&gt;protocol_address_information&lt;/span&gt;))
   (ADDRESS=(&lt;span class=&quot;italic&quot;&gt;protocol_address_information&lt;/span&gt;))
   (ADDRESS=(&lt;span class=&quot;italic&quot;&gt;protocol_address_information&lt;/span&gt;))
   (CONNECT_DATA= 
     (SERVICE_NAME=service_name))))&lt;/pre&gt;&lt;br /&gt;
&lt;pre class=&quot;oac_no_warn&quot;&gt;&lt;code&gt;&lt;b&gt;LOAD_BALANCE&lt;/b&gt;&lt;/code&gt;&lt;/pre&gt;Indica si se van a usar las direcciones de forma aleatoria (activo) o de forma secuencial (desactivado). Se puede especificar cualquiera de estos valores que podemos encontrar en diferentes ejemplos:&lt;br /&gt;
&lt;pre class=&quot;oac_no_warn&quot;&gt;on | off | yes | no | true | false&lt;/pre&gt;&lt;pre class=&quot;oac_no_warn&quot;&gt;&lt;b&gt;&lt;code&gt;ADDRESS&lt;/code&gt;&lt;/b&gt; contiene el &lt;b&gt;PROTOCOL, ADDRESS, PORT&lt;/b&gt;&lt;/pre&gt;que se explican por si mismas&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;code&gt;CONNECT_DATA&lt;/code&gt;&lt;/b&gt; contiene la identificación del servicio . &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;code&gt;SERVICE_NAME&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;
En este caso no estamos usando un SID, el cual apuntaría solo a uno de los nodos, si no que se define un servicio a nivel de Oracle y se apunta contra este.&lt;br /&gt;
&lt;br /&gt;
Es posible que nos encontremos ejemplos en los que en la cadena de conexión aparece también el parámetro &lt;b&gt;&lt;code&gt;FAILOVER. &lt;/code&gt;&lt;/b&gt;Este parámetro esta por defecto activado para los descriptores así que no será necesario incluirlo a no ser que queramos desactivarlo.&lt;br /&gt;
&lt;br /&gt;
Desde el servidor podemos ver como las conexiones se empiezan a balancear entre los nodos:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;
[tomcat]# lsof -nPi |grep 1521
tnslsnr&amp;nbsp;&amp;nbsp; 22544&amp;nbsp;&amp;nbsp; oracle&amp;nbsp;&amp;nbsp; 11u&amp;nbsp; IPv6&amp;nbsp; 996133&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCP *:1521 (LISTEN)
jsvc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28316 alfresco&amp;nbsp; 231u&amp;nbsp; IPv6 1026752&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCP 172.17.1.154:55223-&amp;gt;172.17.31.23:1521 (ESTABLISHED)
jsvc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28316 alfresco&amp;nbsp; 232u&amp;nbsp; IPv6 1026753&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCP 172.17.1.154:55224-&amp;gt;172.17.31.23:1521 (ESTABLISHED)
jsvc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28316 alfresco&amp;nbsp; 233u&amp;nbsp; IPv6 1026754&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCP 172.17.1.154:55667-&amp;gt;172.17.31.21:1521 (ESTABLISHED)
jsvc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28316 alfresco&amp;nbsp; 234u&amp;nbsp; IPv6 1026755&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCP 172.17.1.154:55226-&amp;gt;172.17.31.23:1521 (ESTABLISHED)
jsvc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28316 alfresco&amp;nbsp; 235u&amp;nbsp; IPv6 1026756&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCP 172.17.1.154:55227-&amp;gt;172.17.31.23:1521 (ESTABLISHED)
jsvc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28316 alfresco&amp;nbsp; 236u&amp;nbsp; IPv6 1026757&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCP 172.17.1.154:55228-&amp;gt;172.17.31.23:1521 (ESTABLISHED)
jsvc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28316 alfresco&amp;nbsp; 237u&amp;nbsp; IPv6 1026758&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCP 172.17.1.154:55671-&amp;gt;172.17.31.21:1521 (ESTABLISHED)
jsvc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28316 alfresco&amp;nbsp; 238u&amp;nbsp; IPv6 1026759&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCP 172.17.1.154:55230-&amp;gt;172.17.31.23:1521 (ESTABLISHED)
jsvc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28316 alfresco&amp;nbsp; 239u&amp;nbsp; IPv6 1026760&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCP 172.17.1.154:55231-&amp;gt;172.17.31.23:1521 (ESTABLISHED)

&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Es importante recordar que el esquema para el parámetro &lt;b&gt;hibernate.default_schema&lt;/b&gt; se debe incluir siempre en mayúsculas, ya que de otro modo el primer arranque funcionará correctamente pero en el segundo recibiriamos un error de Schema upgrade failed&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.blogger.com/%20http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm&quot;&gt;&lt;br /&gt;
http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://wiki.alfresco.com/wiki/Database_Configuration#Oracle_example&quot;&gt;http://wiki.alfresco.com/wiki/Database_Configuration#Oracle_example &lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://alfrescoadmin.blogspot.com/feeds/524378595281983776/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/06/configuracion-con-oracle-rac-10g-y-11g.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/524378595281983776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/524378595281983776'/><link rel='alternate' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/06/configuracion-con-oracle-rac-10g-y-11g.html' title='Configuracion con Oracle RAC 10g y 11g'/><author><name>Raúl</name><uri>http://www.blogger.com/profile/14032957407806229376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDOqQyKlquc3fthMBpei8HXO217vUQBWGPXztVrEQGhPjiLGs7AqBPw_A_6ubmzYIOa6sBRZOhKN2Qo_aTtzj8yBMjG-Jc9gxCq7FXreAJV_tIew9I3Ov-v0PjMl_yNB0/s220/yo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6921541245628552381.post-6964056802537724089</id><published>2011-06-15T14:32:00.000+02:00</published><updated>2011-06-15T14:32:10.858+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bug"/><title type='text'>Bug: Read only y renombrar licencia</title><content type='html'>Como reza en el JIRA de Alfresco &lt;br /&gt;
&lt;a href=&quot;http://www.blogger.com/%20http://issues.alfresco.com/jira/browse/ALF-7487&quot;&gt;&lt;br /&gt;
http://issues.alfresco.com/jira/browse/ALF-7487&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Era muy común en las versiones enterprise que de vez en cuando se perdiera la licencia y el repositorio se pusiera en modo lectura. La solución siempre habia sido renombrar la licencia de *.installed a *.lic&lt;br /&gt;
&lt;br /&gt;
Como se puede ver en JIRA, el bug se ha &quot;solucionado&quot; en la 3.4.2, lo pongo entre comillas porque el problema aparece pero con otra cara. Esta vez el repositorio no se queda en read-only pero aparece un warning en el log:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: none repeat scroll 0% 0% rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; 16:10:38,215 WARN [service.descriptor.DescriptorService] unexpected exception caught and ignored  
 de.schlichtherle.xml.GenericCertificateIntegrityException  
 at de.schlichtherle.xml.GenericCertificate.verify(Unknown Source)  
 at de.schlichtherle.license.LicenseNotary.verify(Unknown Source)  
 at de.schlichtherle.license.LicenseManager.verify(Unknown Source)  
 at de.schlichtherle.license.ftp.LicenseManager.verify(Unknown Source)  
 at org.alfresco.enterprise.license.AlfrescoLicenseManager.verify(AlfrescoLicenseManager.java:148)  
 at de.schlichtherle.license.LicenseManager.verify(Unknown Source)  
 at org.alfresco.enterprise.license.LicenseComponent$1.execute(LicenseComponent.java:147)  
 at org.alfresco.enterprise.license.LicenseComponent$1.execute(LicenseComponent.java:141)  
 at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:381)  
 at org.alfresco.enterprise.license.LicenseComponent$2.doWork(LicenseComponent.java:201)  
 at org.alfresco.enterprise.license.LicenseComponent$2.doWork(LicenseComponent.java:198)  
 at org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:508)  
 at org.alfresco.enterprise.license.LicenseComponent.verify(LicenseComponent.java:197)  
 at org.alfresco.enterprise.license.LicenseComponent.verifyLicense(LicenseComponent.java:101)  
 at org.alfresco.repo.descriptor.DescriptorServiceImpl$1$2.execute(DescriptorServiceImpl.java:206)  
 at org.alfresco.repo.descriptor.DescriptorServiceImpl$1$2.execute(DescriptorServiceImpl.java:199)  
 at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:381)  
 at org.alfresco.repo.descriptor.DescriptorServiceImpl$1.doWork(DescriptorServiceImpl.java:197)  
 at org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:508)  
 at org.alfresco.repo.descriptor.DescriptorServiceImpl.onBootstrap(DescriptorServiceImpl.java:162)  
 at org.springframework.extensions.surf.util.AbstractLifecycleBean.onApplicationEvent(AbstractLifecycleBean.java:56)  
 at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaste  
 r.java:97)  
 at org.alfresco.repo.management.SafeApplicationEventMulticaster.multicastEvent(SafeApplicationEventMulticaster.java:78  
 )  
 at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:294)  
 at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:858)  
 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:419)  
 at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:261)  
 at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:192)  
 at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)  
 at org.alfresco.web.app.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:63)  
 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)  
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)  
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)  
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)  
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)  
 at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:627)  
 at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)  
 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)  
 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)  
 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)  
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)  
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)  
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)  
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)  
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)  
 at org.apache.catalina.core.StandardService.start(StandardService.java:516)  
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)  
 at org.apache.catalina.startup.Catalina.start(Catalina.java:578)  
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)  
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
 at java.lang.reflect.Method.invoke(Method.java:597)  
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)  
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)  
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
 at java.lang.reflect.Method.invoke(Method.java:597)  
 at org.apache.commons.daemon.support.DaemonLoader.start(DaemonLoader.java:177)  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
La solución como en el caso anterior es la misma, renombrar el fichero .lic a .installed</content><link rel='replies' type='application/atom+xml' href='http://alfrescoadmin.blogspot.com/feeds/6964056802537724089/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/06/bug-read-only-y-renombrar-licencia.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/6964056802537724089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/6964056802537724089'/><link rel='alternate' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/06/bug-read-only-y-renombrar-licencia.html' title='Bug: Read only y renombrar licencia'/><author><name>Raúl</name><uri>http://www.blogger.com/profile/14032957407806229376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDOqQyKlquc3fthMBpei8HXO217vUQBWGPXztVrEQGhPjiLGs7AqBPw_A_6ubmzYIOa6sBRZOhKN2Qo_aTtzj8yBMjG-Jc9gxCq7FXreAJV_tIew9I3Ov-v0PjMl_yNB0/s220/yo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6921541245628552381.post-6383984504523750575</id><published>2011-06-14T13:47:00.000+02:00</published><updated>2013-02-20T23:52:12.319+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bulk"/><category scheme="http://www.blogger.com/atom/ns#" term="Importar"/><category scheme="http://www.blogger.com/atom/ns#" term="migracion"/><category scheme="http://www.blogger.com/atom/ns#" term="rendimiento"/><title type='text'>Importación masiva con Alfresco Bulk Filesystem import</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
La entrada de hoy es para explicar como funciona el módulo&amp;nbsp;&lt;a href=&quot;http://code.google.com/p/alfresco-bulk-filesystem-import/&quot;&gt;Alfresco Bulk Filesystem import&lt;/a&gt; desarrollado por Peter Monks. Este módulo nos va a permitir importar un conjunto de ficheros permitiendonos incorporar metadatos en el proceso.&lt;br /&gt;
&lt;br /&gt;
Alfresco trae varios mecanismos para importar contenidos:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://sourceforge.net/projects/alfresco/files/JLAN/&quot; target=&quot;_blank&quot;&gt;Servidor Alfresco JLAN&amp;nbsp;&lt;/a&gt; – permite acceder al repositorio como si fuera una unidad de red de Windows , un servidor FTP, WebDAV o NFS. &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://wiki.alfresco.com/wiki/CMIS&quot;&gt;CMIS API &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://wiki.alfresco.com/wiki/RESTful_API#Alfresco_RESTful_API_Reference&quot;&gt;REST API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://wiki.alfresco.com/wiki/Alfresco_Content_Management_Web_Services&quot;&gt;SOAP API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://wiki.alfresco.com/wiki/Export_and_Import#Alfresco_Content_Package_.28ACP.29_File_Format&quot;&gt;Ficheros ACP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
En todos los casos anteriores necesitamos crear reglas o los mecanismos necesarios usando la API para asignar los metadatos.&lt;br /&gt;
&lt;br /&gt;
Mediante el módulo simplemente creando un fichero con el mismo nombre que el original pero con la extension metadata.properties hará que se lea su contenido y se incorporen los metadatos de forma dinámica.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, tengo un documento que llamado Documentación.odf y otro Documentación.metadata.properties ubicado en el mismo directorio&lt;br /&gt;
&lt;br /&gt;
Dentro del fichero properties se pondrá el tipo de contenido y cada uno de los metadatos:&lt;code&gt; &lt;/code&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;
&amp;nbsp; # tipo de contenido
&amp;nbsp; type=cm:content
&amp;nbsp; # Aspectos
&amp;nbsp; aspects=cm:versionable, custom:myAspect
&amp;nbsp; # Propiedades
&amp;nbsp; cm\:title=This is the value of the cm:title field.
&amp;nbsp; cm\:description=This is the value of the cm:description field.
&amp;nbsp; # Enlace a un tag (es necesario apuntar a la referencia)
&amp;nbsp; cm\:taggable=workspace://SpacesStore/3da6c395-3a4b-4a57-836d-8e5
&amp;nbsp; # Propiedad personalizada de nuestro modelo de datos:
&amp;nbsp; custom\:myProperty=This is the value of the custom:myProperty field.
&amp;nbsp; # Propiedad con multiples valores
&amp;nbsp; custom\:mvProperty=first value,second value,third value.
&amp;nbsp; # Fechas (sólo formato ISO8601)
&amp;nbsp; cm\:created=2011-06-15T10:00:01.234+01:00
&amp;nbsp; cm\:modified=2011-06-15T10:00:01.234+01:00
&lt;/code&gt;&lt;/pre&gt;
Otra de las ventajas de las que se habla es que la importación mediante este metodo es mucho más rápida, ya que nos ahorramos el overhead de los protocolos y estamos cargando los datos desde un disco local, así que me he decidido a comprobarlo por mi mismo&lt;br /&gt;
&lt;br /&gt;
He subido a alfresco mediante FTP y utilizando Filezilla configurado para subir los ficheros de 1 en 1, (haciéndolo de 2 en dos tuve fallos en varios ficheros y fue más lento).&lt;br /&gt;
&lt;br /&gt;
El tiempo para subir 1,4Gb de datos distribuidos en 679 ficheros fue de 4:24 segundos. Esto sin haber asignado ningún metadato.&lt;br /&gt;
&lt;br /&gt;
A continuación y para poder realizar la prueba con metadatos de forma rápida me situé en la carpeta donde se habían subido los documentos (/opt/alfresco34/alf_data/contentstore/2011/6/14/12) y con un pequeño script cree los ficheros de metadatos introduciendo únicamente el tipo de contenido:&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;
# for i in `find . -type f` ;do echo &quot;type=cm:content&quot; &amp;gt; $i.metadata.properties;done
&lt;/code&gt;&lt;/pre&gt;
De esta manera he podido crear &amp;nbsp;de una forma muy rápida todos los ficheros. He usado el contenido del contentstore porque&amp;nbsp;sabemos que los nombres en el contenstore no tienen espacios, y el miniscript me dio algún problema con los ficheros que tenían espacios en los nombres. El módulo es muy sensible a fallos, si no existe algún fichero de metadatos no se ejecutará.&lt;br /&gt;
&lt;br /&gt;
He comprobado además que en la carpeta del contentstore únicamente están los archivos cargados por FTP y que los nuevos se van a copiar en la hora siguiente.&lt;br /&gt;
&lt;br /&gt;
Ya tenemos los ficheros a subir con sus metadatos.&amp;nbsp;Con la importación del módulo se añade un web-script que nos ofrece una página desde donde podemos iniciar la importación masiva en Alfresco y monitorizar todo el proceso. En mi caso localhost (ojo de no poner barra al final!!):&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://localhost:8080/alfresco/service/bulk/import/filesystem&quot;&gt;http://localhost:8080/alfresco/service/bulk/import/filesystem&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgECnIZQC22MedNvpDLKJs_AzmmtxVDHDKwvP3tS_vzIP9_kwIA6EwTqdeCt0lMGGfGuec7sw0TCNhlu_uZyOKD_9qhhWDXfZGp7rtDVfGRq6YwtIb_3l0Zpujemfa8dDZass6XWwZPG0iw/s1600/bulk.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;102&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgECnIZQC22MedNvpDLKJs_AzmmtxVDHDKwvP3tS_vzIP9_kwIA6EwTqdeCt0lMGGfGuec7sw0TCNhlu_uZyOKD_9qhhWDXfZGp7rtDVfGRq6YwtIb_3l0Zpujemfa8dDZass6XWwZPG0iw/s400/bulk.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
En esta pantalla pondremos donde se encuentran los ficheros que queremos importar. Esto ha de ser una ruta en el sistema de ficheros y puede ser local o estar montada de forma remota.&lt;br /&gt;
&lt;br /&gt;
El siguiente campo es donde queremos que se ubiquen los ficheros. La página usa Ajax y nos ayudará a auto completar este campo, lo que resulta muy útil.&lt;br /&gt;
&lt;br /&gt;
Una vez lanzada la importación veremos como va el progreso&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_3GZ0NwQqPivILMY7W80U4aOlSaOvW1eWax-IC4n6CMdDxo0jAa4O1ZXV8g_iEERvCF9ZapETgy24o6WoGIyx2uJtaOuay1aZQoeCY_SbVHMa4zQm-4Vc3dN0gGd32P5kOj_DHgyImm23/s1600/bulk.result.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;241&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_3GZ0NwQqPivILMY7W80U4aOlSaOvW1eWax-IC4n6CMdDxo0jAa4O1ZXV8g_iEERvCF9ZapETgy24o6WoGIyx2uJtaOuay1aZQoeCY_SbVHMa4zQm-4Vc3dN0gGd32P5kOj_DHgyImm23/s400/bulk.result.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
El resultado fue que se subieron los ficheros en 2 minutos 39 segundos, casi la mitad de tiempo. No está nada mal.&lt;br /&gt;
&lt;br /&gt;
Como nota final, &amp;nbsp;mencionar que es posible incorporar metadatos a ficheros que ya existen en Alfresco simplemente poniendo los ficheros de metadatos.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;ACTUALIZACIÓN:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;
El formato del fichero de metadatos ya no es un fichero de texto plano, si no que se ha pasado al formato xml para dar un mejor soporte a carácteres unicode. El formato que sigue es:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; font-family: Monaco, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, &#39;Lucida Console&#39;, monospace; font-size: 12px; max-width: 70em; overflow: auto; padding: 0.5em;&quot;&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;&amp;lt;?&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;xml version&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;color: #008800;&quot;&gt;&quot;1.0&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; encoding&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;color: #008800;&quot;&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;dec&quot; style=&quot;color: #660066;&quot;&gt;&amp;lt;!DOCTYPE properties SYSTEM &quot;http://java.sun.com/dtd/properties.dtd&quot;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;properties&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;entry&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot; style=&quot;color: #660066;&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot; style=&quot;color: #008800;&quot;&gt;&quot;key1&quot;&lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;value1&lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;/entry&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;entry&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot; style=&quot;color: #660066;&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot; style=&quot;color: #008800;&quot;&gt;&quot;key2&quot;&lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;value2&lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;/entry&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&amp;nbsp; &amp;nbsp; ...
&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;/properties&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Más información&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://blogs.alfresco.com/wp/pmonks/2009/10/22/bulk-import-from-a-filesystem/&quot;&gt;http://blogs.alfresco.com/wp/pmonks/2009/10/22/bulk-import-from-a-filesystem/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://code.google.com/p/alfresco-bulk-filesystem-import/&quot;&gt;http://code.google.com/p/alfresco-bulk-filesystem-import/&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://alfrescoadmin.blogspot.com/feeds/6383984504523750575/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/06/importacion-masiva-con-alfresco-bulk.html#comment-form' title='12 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/6383984504523750575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/6383984504523750575'/><link rel='alternate' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/06/importacion-masiva-con-alfresco-bulk.html' title='Importación masiva con Alfresco Bulk Filesystem import'/><author><name>Raúl</name><uri>http://www.blogger.com/profile/14032957407806229376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDOqQyKlquc3fthMBpei8HXO217vUQBWGPXztVrEQGhPjiLGs7AqBPw_A_6ubmzYIOa6sBRZOhKN2Qo_aTtzj8yBMjG-Jc9gxCq7FXreAJV_tIew9I3Ov-v0PjMl_yNB0/s220/yo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgECnIZQC22MedNvpDLKJs_AzmmtxVDHDKwvP3tS_vzIP9_kwIA6EwTqdeCt0lMGGfGuec7sw0TCNhlu_uZyOKD_9qhhWDXfZGp7rtDVfGRq6YwtIb_3l0Zpujemfa8dDZass6XWwZPG0iw/s72-c/bulk.png" height="72" width="72"/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6921541245628552381.post-5122189101308923738</id><published>2011-06-09T17:37:00.000+02:00</published><updated>2012-01-30T12:06:57.183+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SVN"/><title type='text'>Alfresco 4.0 en SVN</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Cual ha sido mi sorpresa que al intentar acceder a los nightly builds de Alfresco &lt;a class=&quot;external free&quot; href=&quot;http://dev.alfresco.com/downloads/nightly/dist/&quot; rel=&quot;nofollow&quot;&gt;http://dev.alfresco.com/downloads/nightly/dist/&lt;/a&gt; llevaban desde el dia 19 de Abril sin actualizarse. Un rápido aviso a Jeff Potts hizo que se arreglara esto para poder utilizar la última versión del SVN sin necesidad de tener que bajar el código fuente y compilarlo&lt;br /&gt;
&lt;br /&gt;
Hoy me ha llegado un correo informandome de que ya estaba solucionada y cuando accedo.. Sorpresa: Alfresco 4.0&lt;br /&gt;
&lt;br /&gt;
Si quereis probarlo solo teneis que descargarlo desde:&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
http://wiki.alfresco.com/wiki/Nightly_Community_Build&lt;br /&gt;
&lt;br /&gt;
Tened en cuenta que lo que se haya para descargar no ha pasado por QA y por tanto es posible que haya errores. Por ejemplo en la versión del día de hoy falta una coma en el script /webapps/alfresco/WEB-INF/classes/alfresco/dbscripts/create/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoCreate-RepoTables.sql&lt;br /&gt;
&lt;br /&gt;
Las novedades a primera vista son muy considerables y parecen orientadas a hacerlo todo mucho más sencillo: &lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Ayudas contextuales&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Posibilidad de arrastrar documentos al navegador para subirlos.&lt;/li&gt;
&lt;li&gt;Simplificación de los sites con elementos configurables mediante dashelts (ya no tenemos wiki y blog por defecto, solo los añadiremos si los necesitamos)&lt;/li&gt;
&lt;li&gt;Posibilidad de subida de ficheros de configuración al diccionario de datos de tareas programadas, acciones..&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;color: red;&quot;&gt;ACTUALIZADO&lt;/span&gt;: con la nueva versión ya disponible oficialmente. Información sobre las novedades en la siguiente presentación:&lt;br /&gt;
 &lt;br /&gt;
 http://www.slideshare.net/alfresco/get-ready-for-alfresco-40&lt;br /&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alfrescoadmin.blogspot.com/feeds/5122189101308923738/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/06/alfresco-40-en-svn.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/5122189101308923738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/5122189101308923738'/><link rel='alternate' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/06/alfresco-40-en-svn.html' title='Alfresco 4.0 en SVN'/><author><name>Raúl</name><uri>http://www.blogger.com/profile/14032957407806229376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDOqQyKlquc3fthMBpei8HXO217vUQBWGPXztVrEQGhPjiLGs7AqBPw_A_6ubmzYIOa6sBRZOhKN2Qo_aTtzj8yBMjG-Jc9gxCq7FXreAJV_tIew9I3Ov-v0PjMl_yNB0/s220/yo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6921541245628552381.post-642344087328756719</id><published>2011-06-01T11:13:00.000+02:00</published><updated>2011-06-02T14:25:46.296+02:00</updated><title type='text'>Nuevas funcionalidades en Share preparadas</title><content type='html'>Leo en la web de Jeff Potts&amp;nbsp; que &lt;a href=&quot;http://twitter.com/#%21/schminkel&quot; target=&quot;_blank&quot; title=&quot;Follow Schminkel on Twitter&quot;&gt;@schminke&lt;/a&gt; ha públicado unos screencasts de las nuevas funcionalidades de Alfresco Share que ya están en el subversion pero que todavía no están en la última release 3.4e&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.screencast.com/users/schminkel/folders/Alfresco%20HEAD%20-%20new%20features/media/0fec3057-d195-41f7-8988-da96124be5cb&quot; target=&quot;_blank&quot; title=&quot;Alfresco Share Trashcan&quot;&gt;Papelera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.screencast.com/users/schminkel/folders/Alfresco%20HEAD%20-%20new%20features/media/9b68b408-0fdd-4314-b2e1-899a5d83035e&quot; target=&quot;_blank&quot; title=&quot;Alfresco Share In-place file name editor&quot;&gt;Renombrar contenido de forma rápida&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.screencast.com/users/schminkel/folders/Alfresco%20HEAD%20-%20new%20features/media/228af95b-ef83-4b18-9cac-30b80ba5f1ba&quot; target=&quot;_blank&quot; title=&quot;Alfresco Share Video preview&quot;&gt;Preview de Videos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.screencast.com/users/schminkel/folders/Alfresco%20HEAD%20-%20new%20features/media/d08594c9-f936-4ee2-b188-7ee5fc4d874c&quot; target=&quot;_blank&quot; title=&quot;Alfresco Share system user management&quot;&gt;Administrar usuarios&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.screencast.com/users/schminkel/folders/Alfresco%20HEAD%20-%20new%20features/media/5fd657f8-f000-4964-b215-f41e24a446e0&quot; target=&quot;_blank&quot; title=&quot;Alfresco Share change logo&quot;&gt;Cambio de logo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.screencast.com/users/schminkel/folders/Alfresco%20HEAD%20-%20new%20features/media/d48754f7-e3ee-44ca-a8c6-23903042e288&quot; target=&quot;_blank&quot; title=&quot;Alfresco Share Image preview dashlet&quot;&gt;Dashlet para previsualización de imágenes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.screencast.com/users/schminkel/folders/Alfresco%20HEAD%20-%20new%20features/media/a0b0071c-20b4-466d-8c58-b0eb34996bdd&quot; target=&quot;_blank&quot; title=&quot;Alfresco Share Drag-and-drop import&quot;&gt;Importación Drag-and-drop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.screencast.com/users/schminkel/folders/Alfresco%20HEAD%20-%20new%20features/media/f60b399f-af61-484b-96f1-79cfdbf95d32&quot; target=&quot;_blank&quot; title=&quot;Alfresco Share user-defined document library sorting&quot;&gt;Ordenación por usuario de la document librar &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.screencast.com/users/schminkel/folders/Alfresco%20HEAD%20-%20new%20features/media/471e79cd-03bf-419d-bee0-57baf01c4f03&quot; target=&quot;_blank&quot; title=&quot;Alfresco Share like counter&quot;&gt;Contador de &quot;me gusta&quot;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;Para poder probar estas funcionalidades es necesario hacer un CheckOut desde &lt;a href=&quot;http://wiki.alfresco.com/wiki/Alfresco_SVN_Development_Environment&quot; target=&quot;_blank&quot; title=&quot;Alfresco Wiki Page: Alfresco Development Environment and Subversion&quot;&gt;subversion.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Se espera que la próxima release que incluya estas funcionalidades saldrá a final de Verano o principios de Otoño&lt;br /&gt;
&lt;br /&gt;
EDITADO: Debido a problemas de ancho de banda se pueden encontrar las screencasts aquí:&lt;br /&gt;
&lt;a href=&quot;http://www.schminkel.de/alfresco-blog/alfresco-35.html&quot;&gt;http://www.schminkel.de/alfresco-blog/alfresco-35.html&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://alfrescoadmin.blogspot.com/feeds/642344087328756719/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/06/nuevas-funcionalidades-en-share.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/642344087328756719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/642344087328756719'/><link rel='alternate' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/06/nuevas-funcionalidades-en-share.html' title='Nuevas funcionalidades en Share preparadas'/><author><name>Raúl</name><uri>http://www.blogger.com/profile/14032957407806229376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDOqQyKlquc3fthMBpei8HXO217vUQBWGPXztVrEQGhPjiLGs7AqBPw_A_6ubmzYIOa6sBRZOhKN2Qo_aTtzj8yBMjG-Jc9gxCq7FXreAJV_tIew9I3Ov-v0PjMl_yNB0/s220/yo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6921541245628552381.post-5334597639300715649</id><published>2011-05-26T13:51:00.000+02:00</published><updated>2011-06-15T14:32:59.944+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bug"/><title type='text'>Bug: No se ven las categorías</title><content type='html'>Me he encontrado más de una vez que al actualizar de versión de Alfresco han habido problemas con perdidas de permisos. En este caso voy a comentar cuando esto pasa con las categorías.&lt;br /&gt;
&lt;br /&gt;
Cuando un usuario, que no es el admin, intenta navegar por categorías se encuentra con esto:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwgA1RbziUkh8AoL11FDdD3AN_qS_uERkJN5GZfyPwfa42SZEPndExfZ1qv6SXQST-IIezL9tWqimapRvux5GzAbP5xECggE3QNdGqy-R1gVtaadSVK7g-bP0xSwfMQMjeTjxRpYnyjPre/s1600/usuario_categorias.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwgA1RbziUkh8AoL11FDdD3AN_qS_uERkJN5GZfyPwfa42SZEPndExfZ1qv6SXQST-IIezL9tWqimapRvux5GzAbP5xECggE3QNdGqy-R1gVtaadSVK7g-bP0xSwfMQMjeTjxRpYnyjPre/s320/usuario_categorias.png&quot; width=&quot;185&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Lo que ha pasado es que durante el upgrade se han perdido los permisos del grupo EVERYONE. Como podemos comprobarlo?&lt;br /&gt;
Abriendo el buscador de nodos y realizar la siguiente consulta XPath: cm:&lt;i&gt;categoryRoot&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Nos debería dar dará un único resultado con el primary path:&lt;br /&gt;
&lt;br /&gt;
{http://www.alfresco.org/model/content/1.0}categoryRoot)&lt;br /&gt;
&lt;br /&gt;
Si vamos a ver los permisos del nodo y lo comparamos con los valores que debería tener veremos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJoTjpY2eSYDArla3Q7J0FtoSc9IOFBfICrQwWF-G2ZDoSoGZyI1SyKHhAEw-LEdtKugX7-QRCOzFIgZnCuVs2y2_EgWJtE72Vhu6RrYSWJOQWh7fsEL5VpFzFBrCNwEOiibXLWO9oNIxY/s1600/categorias.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;106&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJoTjpY2eSYDArla3Q7J0FtoSc9IOFBfICrQwWF-G2ZDoSoGZyI1SyKHhAEw-LEdtKugX7-QRCOzFIgZnCuVs2y2_EgWJtE72Vhu6RrYSWJOQWh7fsEL5VpFzFBrCNwEOiibXLWO9oNIxY/s400/categorias.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
A la izquierda tendriamos los valores correctos y a la derecha vemos cómo han desaparecido estos permisos.&lt;br /&gt;
&lt;br /&gt;
Podremos solucionarlo de forma sencilla a través de JavaScript, crearemos un fichero con el siguiente contenido:&lt;br /&gt;
&lt;br /&gt;
&lt;span id=&quot;bodyfont&quot;&gt;&lt;/span&gt;&lt;br /&gt;
nodes = search.xpathSearch(&quot;/cm:categoryRoot/cm:generalclassifiable&quot;);&lt;br /&gt;
generalclassNode = nodes[0];&lt;br /&gt;
generalclassNode.setPermission(&quot;Read&quot;);&lt;br /&gt;
&lt;br /&gt;
y lo copiaremos dentro del Diccionario de datos en el espacio Scripts. Ahora ejecutaremos el script desde los detalles del fichero con la opción Ejecutar acción -&amp;gt; Ejecutar un script&lt;br /&gt;
&lt;br /&gt;
Depués de esto nos deberían volver a aparecer los permisos</content><link rel='replies' type='application/atom+xml' href='http://alfrescoadmin.blogspot.com/feeds/5334597639300715649/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/05/no-se-ven-las-categorias.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/5334597639300715649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/5334597639300715649'/><link rel='alternate' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/05/no-se-ven-las-categorias.html' title='Bug: No se ven las categorías'/><author><name>Raúl</name><uri>http://www.blogger.com/profile/14032957407806229376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDOqQyKlquc3fthMBpei8HXO217vUQBWGPXztVrEQGhPjiLGs7AqBPw_A_6ubmzYIOa6sBRZOhKN2Qo_aTtzj8yBMjG-Jc9gxCq7FXreAJV_tIew9I3Ov-v0PjMl_yNB0/s220/yo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwgA1RbziUkh8AoL11FDdD3AN_qS_uERkJN5GZfyPwfa42SZEPndExfZ1qv6SXQST-IIezL9tWqimapRvux5GzAbP5xECggE3QNdGqy-R1gVtaadSVK7g-bP0xSwfMQMjeTjxRpYnyjPre/s72-c/usuario_categorias.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6921541245628552381.post-153288830646947703</id><published>2011-05-26T11:03:00.000+02:00</published><updated>2011-05-26T15:28:24.479+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Backup"/><title type='text'>Backup en Alfresco</title><content type='html'>Una de las tareas más importantes del administrador de Alfresco es planificar una correcta estrategia de backup&lt;br /&gt;
&lt;br /&gt;
En Alfresco nos encontramos con diferentes elementos sobre los que hacer backup:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Datos estáticos:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Servidor de aplicaciones&lt;/li&gt;
&lt;li&gt;Ficheros de configuración&lt;b&gt;&amp;nbsp;&lt;/b&gt; y personalización de Alfresco&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Datos dinámicos:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Almacen de datos.&lt;/li&gt;
&lt;li&gt;Índices.&lt;/li&gt;
&lt;li&gt;Metadatos.&lt;/li&gt;
&lt;/ul&gt;Vistas las dependencias que hay entre ellos en el &lt;a href=&quot;http://alfrescoadmin.blogspot.com/2011/05/arquitectura-de-alfresco-i.html&quot;&gt;articulo de  arquitectura&lt;/a&gt; se entiende que no es posible restaurar Alfresco si no se  dispone de la base de datos o del almacén. El caso de los índices es  caso a parte puesto que es posible regenerarlos teniendo los otros dos  elementos, pero este proceso puede llegar a ser costoso en tiempo  dependiendo del volumen de datos (puede llegar al orden de días si el  volumen es grande).&lt;br /&gt;
&lt;br /&gt;
El almacen de datos es el directorio al que apunta la propiedad dir.root&lt;br /&gt;
Los índices están ubicados en el directorio apuntado por lucene-indexes aunque estos no deben ser copiados para evitar tener datos corruptos. En su lugar se debe copiar el directorio backup-lucene-indexes el cual es una copia que se realiza de forma automática a las 03:00 am.&lt;br /&gt;
Es importante tener en cuenta que la copia de este directorio debe producirse preferentemente después de esta hora. Si es necesario es posible cambiar la hora de este job en el fichero &lt;i&gt;scheduled-jobs-context.xml&lt;/i&gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;bean id=&quot;indexBackupTrigger&quot; class=&quot;org.alfresco.util.CronTriggerBean&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&quot;jobDetail&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ref bean=&quot;indexBackupJobDetail&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&quot;scheduler&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ref bean=&quot;schedulerFactory&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- trigger at 3am each day --&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&quot;cronExpression&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;value&amp;gt;0 0 3 * * ?&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/bean&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La base de datos debe ser copiada con las herramientas que proporcione el fabricante o terceros.&lt;br /&gt;
&lt;br /&gt;
De esta forma el backup se podría resumir en:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Hacer backup de backup-lucene-indexes&lt;/li&gt;
&lt;li&gt;Hacer backup de base de datos&lt;/li&gt;
&lt;li&gt;Hacer backup de la ubicación del almacen de datos &lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;br /&gt;
Es muy importante realizar las copias de seguridad en el orden indicado arriba por varios motivos, imaginemos que se sube un fichero durante la copia:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Si se crea una entrada en la base de datos después de realizar el backup de índices se puede regenerar el índice de la última transacción realizada con la reindexación en modo AUTO.&lt;/li&gt;
&lt;li&gt;Si tenemos un fichero que existe en base de datos pero no en el sistema de ficheros tendremos un nodo huerfano. Aparecería en Alfresco como si existiera pero tendriamos un error al intentar abrirlo.&lt;/li&gt;
&lt;li&gt;Si existe en el sistema de ficheros pero no en base de datos tendriamos un fichero sin referenciar pero mantendriamos la coherencia de los datos.&amp;nbsp; &lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Restauración completa&lt;/b&gt; &lt;br /&gt;
&lt;br /&gt;
Los pasos que deberemos seguir para recuperar una copia completa serán:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Parar Alfresco&lt;/li&gt;
&lt;li&gt;Mover &lt;i&gt;dir.root&lt;/i&gt; a otra ubicación si es posible/necesario&lt;/li&gt;
&lt;li&gt;Mover &lt;i&gt;backup-lucene-indexes&lt;/i&gt; a &lt;i&gt;lucene-indexes&lt;/i&gt;, si la copia automática es buena se puede utilizar la misma que esté en el servidor, en caso contrario se tendrá que usar la del último backup&lt;/li&gt;
&lt;li&gt;Restaurar la base de datos&lt;/li&gt;
&lt;li&gt;Arrancar Alfresco&lt;/li&gt;
&lt;/ol&gt;Si tenemos una copia valida&amp;nbsp; de &lt;i&gt;backup-lucene-indexes&lt;/i&gt; y la propiedad index.recovery.mode=AUTO se generaran los indices de los elementos subidos después de la última copia ahorrandonos mucho tiempo en el arranque.&lt;i&gt;&lt;i&gt;&lt;/i&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;Restauración de un documento&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
Si queremos recuperar un documento que ya hemos eliminado de la papelera, es posible recuperarlo a partir de una consulta a la base de datos que nos indique cual es la ubicación en el sistema de ficheros del documento. &lt;a href=&quot;http://blyx.com/2010/07/14/control-total-de-los-elementos-eliminados-en-alfresco/&quot;&gt;Recordatorio del proceso de borrado de ficheros en Alfresco &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Para ello deberemos recuperar la base de datos completa desde la última copia y a continuación ejecutar la siguiente consulta, que en mi caso va a recuperar el fichero &#39;trashcleaner-0.0.2.amp&#39;:&lt;br /&gt;
&lt;br /&gt;
select a.node_id,&lt;br /&gt;
a.string_value,&lt;br /&gt;
e.content_url&lt;br /&gt;
from&lt;br /&gt;
alf_node_properties a,&lt;br /&gt;
alf_qname b,&lt;br /&gt;
alf_content_data c ,&lt;br /&gt;
alf_node_properties aa,&lt;br /&gt;
alf_content_data d,&lt;br /&gt;
alf_content_url e&lt;br /&gt;
where&lt;br /&gt;
a.string_value=&#39;trashcleaner-0.0.2.amp&#39; and&lt;br /&gt;
a.qname_id=b.id and&lt;br /&gt;
b.local_name=&#39;name&#39; and&lt;br /&gt;
c.id=aa.long_value and&lt;br /&gt;
aa.node_id=a.node_id and&lt;br /&gt;
aa.long_value=d.id and&lt;br /&gt;
d.content_url_id=e.id;&lt;br /&gt;
&lt;br /&gt;
Esto nos devuelve el id del nodo, el nombre del fichero y la ubicación en disco:&lt;br /&gt;
&lt;br /&gt;
+---------+------------------------+------------------------------------------------------------------+&lt;br /&gt;
| node_id | string_value&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | content_url&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
+---------+------------------------+------------------------------------------------------------------+&lt;br /&gt;
|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 551 | trashcleaner-0.0.2.amp | store://2011/5/26/10/14/5579b1ba-a7f7-4a5e-a5d2-e5c1b27afe3c.bin |&lt;br /&gt;
+---------+------------------------+------------------------------------------------------------------+&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
podremos encontrar el contenido en el directorio:&lt;br /&gt;
alf_data/contentstore/2011/5/26/10/14/5579b1ba-a7f7-4a5e-a5d2-e5c1b27afe3c.bin&lt;br /&gt;
&lt;br /&gt;
Si esta consulta nos devolviera varios valores porque tuvieramos el fichero en varios espacios podríamos mirar el espacio del que cuelga con la siguiente consulta buscando por el identificador del nodo:&lt;br /&gt;
&lt;br /&gt;
select c.string_value&lt;br /&gt;
from&lt;br /&gt;
alf_child_assoc a,&lt;br /&gt;
alf_qname b,&lt;br /&gt;
alf_node_properties c,&lt;br /&gt;
alf_qname bb&lt;br /&gt;
where&lt;br /&gt;
child_node_id=&lt;b&gt;551&lt;/b&gt; and&lt;br /&gt;
a.type_qname_id=b.id and&lt;br /&gt;
b.local_name=&#39;contains&#39; and&lt;br /&gt;
a.parent_node_id=c.node_id and&lt;br /&gt;
c.qname_id=bb.id and&lt;br /&gt;
bb.local_name=&#39;name&#39;;&lt;br /&gt;
&lt;br /&gt;
+--------------+&lt;br /&gt;
| string_value |&lt;br /&gt;
+--------------+&lt;br /&gt;
| Sistemas&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
+--------------+&lt;br /&gt;
1 row in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
Para consultas más complejas, como por ejemplo filtrar por tipo de contenido, o documentos versionados y demás recomiendo la descarga de &lt;a href=&quot;http://wb.mysql.com/&quot;&gt;Mysql Workbench&lt;/a&gt; para sacar un Diagrama EER y poder ver de una forma visual las dependencias que existen entre cada una de las tablas.&lt;br /&gt;
&lt;br /&gt;
La clave en este punto es que el la tabla &lt;b&gt;alf_node_properties&lt;/b&gt; tiene un&amp;nbsp; long_value, el cual es el ID para una columna en la tabla &lt;span style=&quot;font-weight: bold;&quot;&gt;alf_content_data&lt;/span&gt; que referencia a la tabla &lt;span style=&quot;font-weight: bold;&quot;&gt;alf_content_url&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggkPMAy80kOj4dpI0GHj2lTTC3yr_PjfGOBgG3CNygZw5zcmWA0D4eqAwAkT9fp3NR0V1mLDW5VEs7ujd267ndnrUKFrOg37ClwJuZb4FPmMEfCoI0gPAjZtNFUO7b5OeP5ET_H3tq5FUW/s1600/alfrsco34-recover.png&quot;&gt;Aqui &lt;/a&gt;teneis el diagrama para esta consulta:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;352&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggkPMAy80kOj4dpI0GHj2lTTC3yr_PjfGOBgG3CNygZw5zcmWA0D4eqAwAkT9fp3NR0V1mLDW5VEs7ujd267ndnrUKFrOg37ClwJuZb4FPmMEfCoI0gPAjZtNFUO7b5OeP5ET_H3tq5FUW/s400/alfrsco34-recover.png&quot; width=&quot;400&quot; /&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://alfrescoadmin.blogspot.com/feeds/153288830646947703/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/05/backup-en-alfresco.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/153288830646947703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/153288830646947703'/><link rel='alternate' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/05/backup-en-alfresco.html' title='Backup en Alfresco'/><author><name>Raúl</name><uri>http://www.blogger.com/profile/14032957407806229376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDOqQyKlquc3fthMBpei8HXO217vUQBWGPXztVrEQGhPjiLGs7AqBPw_A_6ubmzYIOa6sBRZOhKN2Qo_aTtzj8yBMjG-Jc9gxCq7FXreAJV_tIew9I3Ov-v0PjMl_yNB0/s220/yo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggkPMAy80kOj4dpI0GHj2lTTC3yr_PjfGOBgG3CNygZw5zcmWA0D4eqAwAkT9fp3NR0V1mLDW5VEs7ujd267ndnrUKFrOg37ClwJuZb4FPmMEfCoI0gPAjZtNFUO7b5OeP5ET_H3tq5FUW/s72-c/alfrsco34-recover.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6921541245628552381.post-8912326580594982056</id><published>2011-05-26T10:59:00.000+02:00</published><updated>2011-05-26T15:58:04.054+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Spring"/><title type='text'>Introducción a Spring</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Voy a intentar explicar de una manera básica cual es el papel de Spring dentro de Alfresco desde el enfoque de sistemas para ayudar a comprender el proceso de configuración y de inicio de Alfresco.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Spring es un framework de J2EE que pretende facilitar la programación y promover las buenas prácticas&amp;nbsp; &lt;/div&gt;&lt;br /&gt;
&lt;b&gt;IoC&lt;/b&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Estas son las siglas de Inversion de Control, que es un mecanismo muy popular en Spring y que permite mover fuera del código la configuración de objetos y ubicarla en ficheros de configuración. Esto se realiza típicamente a través de ficheros XML.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Se le llama inversión de control porque en lugar de que la clase tome unos valores predeterminados dentro del código lo que hacemos es leer el fichero XML que contiene estos parámetros e instanciará la clase que esté configurada en el Bean con los valores definidos. De esta manera si se quiere cambiar el valor de un parámetro no es necesario recompilar código. Para los más curiosos al final pondré un ejemplo de como se definen estos ficheros.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;En Alfresco encontramos el inicio dentro del fichero &lt;i&gt;web.xml&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;!-- Spring Application Context location --&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;context-param&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param-name&amp;gt;contextConfigLocation&amp;lt;/param-name&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param-value&amp;gt;/WEB-INF/&lt;b&gt;web-application-context.xml&lt;/b&gt;&amp;lt;/param-value&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;Spring config file location&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;/context-param&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual hace a su vez un import del fichero &lt;i&gt;application-context.xml&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;.&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;. &lt;/i&gt;&lt;br /&gt;
&amp;lt;import resource=&quot;classpath:alfresco/&lt;b&gt;application-context.xml&lt;/b&gt;&quot; /&amp;gt;&lt;i&gt; &lt;/i&gt;&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Es precisamente este fichero el punto de inicio de cualquier aplicación&amp;nbsp; que usa el framework de Spring, así que en realidad cuando iniciamos el servidor de aplicaciones no estamos arrancando Alfresco en primera instancia, si no que iniciamos Spring y&amp;nbsp; este mediante la inversión de control y los ficheros de configuración va iniciando todos y cada uno de los servicios de Alfresco.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;El classpath alfresco hace referencia al directorio WEB-INF\classes\alfresco y se hace referencia normalmente como &lt;b&gt;configRoot&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;A partir de este punto se puede ver como se configura Alfresco a través de:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;– Referencia in-line a XML&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;{configRoot}/alfresco/application-context.xml&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;– Referencias a ficheros XML externos. Incluye la importación de todo el classpath *(:alfresco/extension/*-context.xml&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;files) mediante el uso de wildcard.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;– Referencias a ficheros de propiedades externas.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;La ubicación del classpath extension depende del servidor de aplicaciones pero típicamente son :&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Tomcat: &amp;lt;TOMCAT_HOME&amp;gt;/shared/classes/alfresco/extension/&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Jboss: &amp;lt;JBOSS_HOME&amp;gt;/instancia/conf/alfresco/extension/ &lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Esto proporciona un método de carga de ficheros en 2 fases&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ol style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;classpath://alfresco/*-context.xml&lt;/li&gt;
&lt;li&gt;classpath://alfresco/extension/*-context.xml&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Se realiza la carga de los ficheros de configuración ubicados en el &lt;b&gt;configRoot&lt;/b&gt; y a continuación los ubicados en el directorio &lt;b&gt;extension&lt;/b&gt;. En caso de conflicto se toma el último valor cargado. Esto es necesario para poder disponer de un mecanismo de actualización limpio ya que unos ficheros están ubicados dentro del directorio de despliegue y los otros están fuera. Debido a esto &lt;u&gt;no es buena práctica hacer modificaciones dentro del configRoot&lt;/u&gt; y se deben hacer en el directorio extension. &lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Otros ficheros importantes:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;- &lt;b&gt;core-services-context.xml&lt;/b&gt;: Incluye la definición de beans del nucleo de Alfresco e incluye la importación del fichero repository.properties&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;- &lt;b&gt;repository.properties&lt;/b&gt;: Define las propiedades por defecto que toma alfresco como por ejemplo:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;dir.root: define la ubicación del contentstore y de los indices de lucene&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;db.*: define usuario, contraseña y tipo de base de datos&lt;/div&gt;&lt;br /&gt;
Vemos entonces que tenemos 2 lugares para realizar nuestra configuración y que además se importan ficheros con wildcards *. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;En caso de conflicto tenemos que el orden de mayor a menor prioridad es:&lt;ul&gt;&lt;li&gt; cambiosJMX persistidos en la BBDD (sólo Enterprise y a partir de la versión 3.2)&lt;/li&gt;
&lt;li&gt; &amp;lt;extensionRoot&amp;gt;/alfresco/extension/subsystems/&amp;lt;category&amp;gt;/&amp;lt;typeName&amp;gt;/*.properties &lt;/li&gt;
&lt;li&gt; &amp;lt;extensionRoot&amp;gt;/alfresco/subsystems/&amp;lt;category&amp;gt;/default/*.properties &lt;/li&gt;
&lt;li&gt; &amp;lt;extensionRoot&amp;gt;/alfresco-global.properties &lt;/li&gt;
&lt;li&gt; &amp;lt;extensionRoot&amp;gt;/alfresco/module/*/alfresco-global.properties &lt;/li&gt;
&lt;li&gt; &amp;lt;extensionRoot&amp;gt;/alfresco/repository.properties &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;Y los últimos y con prioridad más baja serán los ubicados dentro del &lt;b&gt;configRoot&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Los pasos para realizar la inversión de control son bastante sencillos.&lt;/div&gt;&lt;ol style=&quot;text-align: justify;&quot;&gt;&lt;li&gt; Crear la clase Java, definiendo sus constructores y metodos Set() y Get().&lt;/li&gt;
&lt;li&gt;Crear un fichero XML que defina los Beans de Java a ser utilizados.&lt;/li&gt;
&lt;li&gt;Creación del Bean a través de la BeanFactory.&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Vamos a ver un pequeño ejemplo con métodos Set() y Get():&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Creamos una clase Java:&lt;/div&gt;&lt;br /&gt;
public class Ejemplo {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; private String texto &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; public void getString(String valor) { texto = valor }&lt;br /&gt;
&amp;nbsp;&amp;nbsp; public void String getString() { return valor }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Definimos el Bean de Spring en un fichero xml:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE beans PUBLIC &quot;-//SPRING//DTD BEAN//EN&quot; &quot;http://www.springframework.org/dtd/spring-beans.dtd&quot;&amp;gt;&lt;br /&gt;
&amp;lt;beans&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;bean id=&quot;mibean&quot; class=&quot;Ejemplo&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&quot;texto&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;value=&quot;Hola Mundo&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/bean&amp;gt;&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Lo que hemos realizado ha sido crear un fichero de configuración de Spring&amp;nbsp; y a continuación definir el bean &quot;mibean&quot; que instanciará la clase Ejemplo poniendo en la variable texto &quot;Hola Mundo&quot;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Cuando solicitemos a la BeanFactory el bean y solicitemos&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;mibean.getString() obtendremos la cadena &quot;HolaMundo&quot;&lt;/div&gt;&lt;br /&gt;
Más información en la Wiki:&lt;br /&gt;
&lt;a href=&quot;http://wiki.alfresco.com/wiki/Repository_Configuration&quot;&gt;http://wiki.alfresco.com/wiki/Repository_Configuration&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://alfrescoadmin.blogspot.com/feeds/8912326580594982056/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/05/introduccion-spring.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/8912326580594982056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/8912326580594982056'/><link rel='alternate' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/05/introduccion-spring.html' title='Introducción a Spring'/><author><name>Raúl</name><uri>http://www.blogger.com/profile/14032957407806229376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDOqQyKlquc3fthMBpei8HXO217vUQBWGPXztVrEQGhPjiLGs7AqBPw_A_6ubmzYIOa6sBRZOhKN2Qo_aTtzj8yBMjG-Jc9gxCq7FXreAJV_tIew9I3Ov-v0PjMl_yNB0/s220/yo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6921541245628552381.post-5001371783088677274</id><published>2011-05-26T10:42:00.000+02:00</published><updated>2011-05-26T12:53:22.008+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arquitectura"/><title type='text'>Arquitectura de Alfresco (I)</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;La arquitectura de Alfresco es la típica de una aplicación web basada en JAVA:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjAUpKaDpd1U9FVO2qrs_PCFjZkJEMHJVHhaFlnw_avJuFFV_sKqJWK6FcLSqgnZOgNY8tGlKFr4uoQFRAc2j-8ycQeHirpt3p2zMT2xikD3EOVif85VmUv6MnVX-SokqNJQ_Wt0NfR5T_/s1600/Alfresco_Repository_Architecture_diagram1_colored.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjAUpKaDpd1U9FVO2qrs_PCFjZkJEMHJVHhaFlnw_avJuFFV_sKqJWK6FcLSqgnZOgNY8tGlKFr4uoQFRAc2j-8ycQeHirpt3p2zMT2xikD3EOVif85VmUv6MnVX-SokqNJQ_Wt0NfR5T_/s400/Alfresco_Repository_Architecture_diagram1_colored.png&quot; width=&quot;331&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Los usuarios acceden típicamente mediante un navegador a la interfaz de usuario de Alfresco (gestión documental) o Share (entorno colaborativo). Estas interfaces pueden variar en función de los componentes instalados (WCM,RM) para adecuarse a la lógica de estos.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Todos los documentos subidos al repositorio de Alfresco con toda su información adicional (Metadatos) se persisten en la capa de almacenamiento según su naturaleza:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Contenido -&amp;gt; Sistema de Ficheros&lt;/li&gt;
&lt;li&gt; Metadatos -&amp;gt; Base de datos&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Tal como muestra el diagrama vemos que Alfresco separa a nivel lógico el repositorio (lugar donde se almacenan nuestros documentos) de las aplicaciones que acceden a él (DM,RM,WCM,SHARE).&lt;/div&gt;&lt;br /&gt;
A nivel físico tenemos únicamente 2 ficheros war:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&amp;nbsp;Alfresco.war (DM + Repositorio)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Share.war (SHARE)&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;A nivel lógico seria posible deshacernos de la interfaz de Alfresco y programar nuestra propia interfaz o acceder al repositorio a través de una tercera aplicación&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Esto es posible gracias a los Foundation Services de Alfresco, los cuales nos permiten acceder al contenido del repositorio y realizar acciones sobre él. Se dispone entre otros de servicios de autenticación, búsquedas, permisos, contenido..etc). El listado completos de los servicios lo podemos obtener dentro del fichero &lt;i&gt;public-services-context.xml&lt;/i&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6DTxUUsbKce6JjXA6wAxmj5hx0XAd3MsbbvnIhQklPakRqb5WMuhQVfCB8XpZkpIaJ5cFcNMrcsTcZlRGvP_3I4LelM8dbwcTVmnC3_na46pEiASPnCbLrkq9BZlSa8IC0zC0kypzbKMz/s1600/Alfresco_Repository_Architecture_diagram2_colored.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;342&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6DTxUUsbKce6JjXA6wAxmj5hx0XAd3MsbbvnIhQklPakRqb5WMuhQVfCB8XpZkpIaJ5cFcNMrcsTcZlRGvP_3I4LelM8dbwcTVmnC3_na46pEiASPnCbLrkq9BZlSa8IC0zC0kypzbKMz/s400/Alfresco_Repository_Architecture_diagram2_colored.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;Estos servicios son la capa pública más baja de la API de Alfresco son publicados a través de una interfaz JAVA. Cada uno de ellos está mapeado a un componente que a modo de caja negra es capaz de ejecutar el código necesario para obtener los resultados de los servicios solicitados. Además disponemos de un registro de servicios que, a modo de listín, nos permite obtener los diferentes servicios disponibles.&lt;br /&gt;
&lt;br /&gt;
Dado que Alfresco usa el framework de Spring, cada uno de estos servicios y componentes está configurado mediante ficheros XML. En este &lt;a href=&quot;http://alfrescoadmin.blogspot.com/2011/05/introduccion-spring.html&quot;&gt;artículo&lt;/a&gt; podeis encontrar cual es la estructura de estos ficheros y como funciona spring dentro de Alfresco.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Las 3 acciones más típicas que realizaremos con Alfresco serán las de subir, bajar y buscar documentos. Estas acciones se realizan mediante 3 de estos servicios apoyandose también en otros elementos ya existentes y probados dentro del mundo Open Source como Hibernate o Lucene:&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiCx7iUcqUINgm5airkQxJTyQooTDbXYo1KWNG-gceZIOvysjdrZ98pkQE5an8N20mQToWsHY6fZNOTWxX0ZaYRHGVsJozs4wGhqaapIqr0ISXwDryaKZF85utrv31pxcleyP11NioQI8H/s1600/Alfresco_Repository_Architecture_diagram3_colored.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;350&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiCx7iUcqUINgm5airkQxJTyQooTDbXYo1KWNG-gceZIOvysjdrZ98pkQE5an8N20mQToWsHY6fZNOTWxX0ZaYRHGVsJozs4wGhqaapIqr0ISXwDryaKZF85utrv31pxcleyP11NioQI8H/s400/Alfresco_Repository_Architecture_diagram3_colored.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;- NodeService&lt;/b&gt;: En alfresco todos los elementos son tratados como nodos pero con diferentes propiedades. Por ejemplo, un fichero es un nodo con ciertas propiedades o metadatos como son el título, autor, fecha de creación e incluso el propio contenido no es más que un metadato. A su vez un espacio es también un nodo que tiene una asociación del tipo &quot;contiene a&quot; con otros nodos.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;El servicio encargado de trabajar con los nodos será el NodeService y toda la información sobre los nodos, se almacenará en base de datos.&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;- ContentService&lt;/b&gt;: El contenido suele estar referido a los ficheros binarios que subimos o creamos dentro de Alfresco, es decir nuestro fichero Power Point, Word o PDF o cualquier tipo MIME que se nos ocurra. Estos ficheros binarios se almacenarán en el sistema de ficheros del servidor (contentstore) siguiendo una estructura de directorios ordenada por fecha.&lt;br /&gt;
Este servicio se encargará de la leer o escribir el contenido en el repositorio asi como de transformarlo de un tipo MIME a otro.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;- SearchService&lt;/b&gt;: Cada vez que se sube contenido a Alfresco este es indexado de forma automática, tanto sus metadatos como el contenido de forma que no solo podemos buscar mediante el nombre del fichero o su autor si no también por el contenido.&lt;br /&gt;
Este servicio utiliza por debajo Apache Lucene para el indexado y las consultas.&lt;br /&gt;
Los indices generados por Lucene se almacenan también en el sistema de ficheros&lt;br /&gt;
&lt;br /&gt;
Parte de esta información se encuentra orginalmente en:&lt;br /&gt;
&lt;a href=&quot;http://wiki.alfresco.com/wiki/Alfresco_Repository_Architecture&quot;&gt;http://wiki.alfresco.com/wiki/Alfresco_Repository_Architecture&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://alfrescoadmin.blogspot.com/feeds/5001371783088677274/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/05/arquitectura-de-alfresco-i.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/5001371783088677274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6921541245628552381/posts/default/5001371783088677274'/><link rel='alternate' type='text/html' href='http://alfrescoadmin.blogspot.com/2011/05/arquitectura-de-alfresco-i.html' title='Arquitectura de Alfresco (I)'/><author><name>Raúl</name><uri>http://www.blogger.com/profile/14032957407806229376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDOqQyKlquc3fthMBpei8HXO217vUQBWGPXztVrEQGhPjiLGs7AqBPw_A_6ubmzYIOa6sBRZOhKN2Qo_aTtzj8yBMjG-Jc9gxCq7FXreAJV_tIew9I3Ov-v0PjMl_yNB0/s220/yo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjAUpKaDpd1U9FVO2qrs_PCFjZkJEMHJVHhaFlnw_avJuFFV_sKqJWK6FcLSqgnZOgNY8tGlKFr4uoQFRAc2j-8ycQeHirpt3p2zMT2xikD3EOVif85VmUv6MnVX-SokqNJQ_Wt0NfR5T_/s72-c/Alfresco_Repository_Architecture_diagram1_colored.png" height="72" width="72"/><thr:total>3</thr:total></entry></feed>