Spring - Java/J2EE Application Framework

Documentación de referencia

Edición traducida al castellano
Versión 2.0 M2

Notas importantes: 

  • El presente documento pretende ser una adaptación lo más fiel y actualizada posible de la versión original en inglés, así como pretende también contener artículos complementarios que enriquezcan su contenido, entre ellos, la traducción del manual de Acegi Security y tutoriales de integración con otros proyectos exclusivos del Sitio Spring Hispano.
  • El presente documento puede ser copiado y distribuido de manera electrónica o impresa a cualquier persona siempre y cuando no se cobre ningún tipo de compensación económica y contenga el enunciado de copyright descrito a continuación:
Copyright (c) 2004-2006 Rod Johnson, Juergen Hoeller, Alef Arendsen, Colin Sampaleanu,
Rob Harrop, Thomas Risberg, Darren Davison, Dmitriy Kopylenko, Mark Pollack, Thierry
Templier, Erwin Vervaet, Rick Evans

  • Traducción realizada principalmente por Isidoro Trevino, los colaboradores son más que bienvenidos.

INDICE

  1. Introducción
    1. Resumen
    2. Escenarios de uso
  2. Conceptos básicos
    1. Inversión de Control (IOC) / Inyección de dependencias
  3. Beans, Bean Factory y el Application Context
    1. Introducción
    2. Conceptos básicos - Bean Factory y BeanDefinitions
      1. BeanFactory
      2. BeanDefinition
      3. Las clases bean
        1. Creación de beans via constructor
        2. Creación de beans via un método de una fábrica (factory) estática
        3. Creación de beans via un método de una instancia de una fábrica (factory)
      4. Los identificadores de un bean (id y name)
      5. Usar o no un singleton
    3. Propiedades, colaboradores, ligado automático (autowiring) y revisión de dependencias
      1. Asignando propiedades y colaboradores de un bean
      2. Resolución de argumentos de constructor
        1. Asignación de argumentos de constructor en base al tipo
        2. Asignación de argumentos de constructor en base al índice
      3. Argumentos de constructor y propiedades de bean a detalle
        1. El elemento value
        2. El elemento null
        3. Definiciones de beans anidados
        4. Elementos de tipo collection
        5. El elemento idref
        6. Forma simplificada de value y ref
        7. Nombres de propiedades compuestas
      4.  Inyección via métodos
        1. Inyección en base a método de búsqueda (lookup)
        2. Reemplazo arbitrario de métodos
      5. Usando depends-on
      6. Colaboradores para ligado automático (autowiring)
      7. Revisión de dependencias
    4. Personalizando la naturaleza del bean
      1. Interfaces del ciclo de vida
        1. InitializingBean / init-method
        2. DisposableBean / destroy-method
      2. Conociendo quien eres
        1. BeanFactoryAware
        2. BeanNameAware
      3. FactoryBean
    5. Definiciones de bean abstracta / hijo
    6. Interactuando con BeanFactory
      1. Obteniendo un BeanFactory, no su producto
    7. Personalizando beans con BeanPostProcessors
    8. Personalizando fabricas de beans con BeanFactoryPostProcessors
      1. PropertyPlaceHolderConfigurer
      2. PropertyOverrideConfigurer
    9. Registrando PropertyEditor adicionales
    10. Usando el elemento alias para registrar nombres adicionales para un bean
    11. Introducción al ApplicationContext
    12. Funcionalidad adicional del ApplicationContext
      1. Usando el MessageSource
      2. Propagando eventos
      3. Recursos de bajo nivel y el ApplicationContext
    13. Comportamiento personalizado en el ApplicationContext
      1. Interface ApplicationContextAware
      2. El BeanPostProcessor
      3. El BeanFactoryPostProcessor
      4. El PropertyPlaceHolderConfigurer
    14. Registrando PropertyEditors adicionales
    15. Asignando una propiedad de un bean o un argumento de un constructor mediante una expresión de propiedad
    16. Asignando una propiedad de un bean o un argumento de un constructor desde el valor de un campo
    17. Invocando otro método y utilizando opcionalmente el valor de resultado
    18. Creando un ApplicationContext desde una aplicación web
    19. Código de ligado y el singleton maligno
      1. Usando SingletonBeanFactoryLocator y ContextSingletonBeanFactoryLocator
  4. Abstrayendo el acceso a recursos de bajo nivel
    1. Resumen
    2. La interface Resource
    3. Implementaciones disponibles de Resource
      1. UrlResource
      2. ClassPathResource
      3. FileSystemResource
      4. ServletContextResource
      5. InputStreamResource
      6. ByteArrayResource
    4. La interface ResourceLoader
    5. La interface ResourceLoaderAware
    6. Asignando Resources como propiedades
    7. Contextos de aplicación (Application context) y las rutas de recursos (Resources)
      1. Construyendo contextos de aplicación (Application Context)
      2. El prefijo classpath*:
      3. Manejo no esperado de rutas absolutas mediante FileSystemResource en el contexto de aplicación
  5. PropertyEditor, ligado de datos, validación y BeanWrapper
    1. Introducción
    2. Ligado de datos usando DataBinder
    3. Manipulación de beans y BeanWrapper
      1. Asignando y obteniendo propiedades básicas y anidadas de un bean
      2. PropertyEditors básicos, tipos de conversión
      3. Otras características dignas de mencionarse
    4. Validación mediante la interface Validator de Spring
    5. La interface Errors
    6. Asignando mensajes de error mediante códigos
  6. Spring AOP: Programación Orientada a Aspectos mediante Spring
    1. Conceptos
      1. Conceptos de AOP
      2. Capacidades y objetivos de Spring AOP
      3. Proxies AOP con Spring
    2. Pointcuts en Spring
      1. Conceptos
      2. Operaciones con pointcuts
      3. Expresiones de AspectJ para pointcuts
      4. Implementaciones convenientes de pointcuts
        1. Pointcuts estáticos
        2. Pointcuts dinámicos
      5. Superclases de pointcuts
      6. Pointcuts personalizados
    3. Tipos de Advice en Spring
      1. Ciclo de vida de Advice
      2. Tipos de Advice en Spring
        1. Advice de intercepción durante (around)
        2. Advice previo
        3. Throws Advice
        4. Advice después (After) del retorno
        5. Advice de introducción
    4. Advisors en Spring
    5. Usando el ProxyFactoryBean para crear proxies AOP
      1. Conceptos básicos
      2. Propiedades JavaBean
      3. Creando proxies de interfaces
      4. Creando proxies de clases
      5. Usando advisors 'globales'
    6. Creación de proxies de conveniencia
      1. TransactionProxyFactoryBean
      2. Proxies para EJB
    7. Definiciones de proxy concisas
    8. Creando proxies AOP programáticamente usando ProxyFactory
    9. Manipulando objetos con advise
    10. Usando la característica de "autoproxy"
      1. Definiciones de bean autoproxy
        1. BeanNameAutoProxyCreator
        2. DefaultAdvisorAutoProxyCreator
        3. AbstractAdvisorAutoProxyCreator
      2. Usando la creación de proxys mediante metadatos
    11. Uso de TargetSources
      1. Hot swappable TargetSources
      2. Pooling TargetSources
      3. Prototype TargetSources
      4. ThreadLocal TargetSources
    12. Definiendo nuevos tipos de Advice
    13. Recursos adicionales
  7.  AspectJ dentro de Spring AOP
    1. Resumen: Usando el lenguaje de pointcut de AspectJ con Spring AOP
    2. AspectJExpressionPointcut
    3. Usando expresiones de pointcut de AspectJ dentro del XML de Spring
    4. Usando el annotation @AspectJ con Spring AOP
      1. Resumen
      2. Tipos de advice simples
      3. Ligado de argumentos
      4. Tipos especiales
      5. Pointcuts con nombre
      6. Modelos de instanciado de aspectos
      7. Introducciones
      8. Mezclando aspectos de Spring AOP con aspectos de AspectJ
      9. Creación automática de proxies y @AspectJ
    5. Advice de AspectJ con expresiones de pointcut en XML de Spring
    6. Referencias
  8. Usando Spring y AspectJ
    1. Resumen
    2. Usando AspectJ para inyectar objetos de dependencia usando Spring
    3. Configurando aspectos de AspectJ usando Spring IoC
      1. Aspectos "singleton"
        1. Ejemplo
        2. Problemas de ordenamiento
      2. Aspectos no singleton
      3. Detalles problemáticos
    4. Otros aspectos de Spring para AspectJ
  9. Manejo Transaccional
    1. La abstracción transaccional de Spring
    2. Estrategias transaccionales
    3. Sincronización de recursos con transacciones
      1. Estrategia de alto nivel
      2. Estrategia de bajo nivel
      3. TransactionAwareDataSourceProxy
    4. Administración de transacciones programática
      1. Como usar TransactionTemplate
      2. Como usar PlatformTransactionManager
    5. Administración de transacciones declarativa
      1. Usando Annotations para la demarcación de transacciones
        1. El Annotation transaccional
      2. Otra estrategia declarativa: BeanNameAutoProxyCreator
      3. AOP y las transacciones
    6. Como escoger entre la administración de transacciones programática y la declarativa
    7. ¿Necesitas un servidor de aplicaciones para la administración de transacciones?
    8. Integración con Servidores de Aplicaciones específicos
      1. BEA WebLogic
      2. IBM WebSphere
    9. Problemas comunes
      1. Uso del administrador de transacciones erróneo para un DataSource específico
      2. Advertencias esporádicas del servidor de aplicaciones acerca de que la transacción o el DataSource ya no se encuentran activos
  10. Soporte para metadatos a nivel de código fuente.
    1. Metadatos a nivel de código fuente
    2. Soporte de Spring para metadatos
    3. Integración con Jakarta Commons Attributes
    4. Metadatos y el autoproxying de Spring AOP
      1. Conceptos fundamentales
      2. Administración declarativa de transacciones
      3. Pooling
      4. Metadatos personalizados
    5. Usando atributos para minimizar la configuración de la capa web MVC
    6. Otros usos para los metadatos
    7. Añadiendo soporte para APIs de metadatos adicionales
  11. Soporte para DAO
    1. Introducción
    2. Jerarquía de excepciones consistente
    3. Clases de abstracción consistentes para el soporte a DAO
  12. Acceso a datos usando JDBC
    1. Introducción
      1. Jerarquía de paquetes
    2. Usando las clases principales de JDBC para controlar el procesamiento de JDBC y el manejo de errores
      1. JdbcTemplate
      2. NamedParameterJdbcTemplate
      3. SimpleJdbcTemplate
      4. DataSource
      5. SQLExceptionTranslator
      6. Executing Statements
      7. Ejecutando consultas
      8. Actualizando la base de datos
    3. Controlando la manera de conectarse a la base de datos
      1. DataSourceUtils
      2. SmartDataSource
      3. AbstractDataSource
      4. SingleConnectionDataSource
      5. DriverManagerDataSource
      6. TransactionAwareDataSourceProxy
      7. DataSourceTransactionManager
    4. Modelando las operaciones de JDBC como objetos Java
      1. SqlQuery
      2. MappingSqlQuery
      3. SqlUpdate
      4. StoredProcedure
      5. SqlFunction
  13. Acceso a datos mediante Mapeadores O/R
    1. Introducción
    2. Hibernate
      1. Administración de recursos
      2. Configuración de SessionFactory en un contexto de aplicación de Spring
      3. Inversión de Control: HibernateTemplate y HibernateCallback
      4. Implementando DAO basados en Spring sin la utilización de callbacks
      5. Implementando DAO basados en la API de Hibernate3
      6. Demarcación de transacciones programática
      7. Demarcación de transacciones declarativa
      8. Estrategias de administración de transacciones
      9. Recursos del contenedor contra recursos locales
      10. Advertencias esporádicas del servidor de aplicaciones acerca de que la transacción o el DataSource ya no se encuentran activos
    3. JDO
      1. Configuración de PersistenceManagerFactory
      2. JdoTemplate y JdoDaoSupport
      3. Implementando DAO basados en la API de JDO
      4. Administración de transacciones
      5. JdoDialect
    4. Oracle TopLink
      1. Abstracción de SessionFactory
      2. TopLinkTemplate y TopLinkDaoSupport
      3. Implementando DAO basados en la API de TopLink
      4. Administración de transacciones
    5. Apache OJB
      1. Configuración de OJB en un ambiente Spring
      2. PersistenceBrokerTemplate y PersistenceBrokerDaoSupport
      3. Administración de transacciones
    6. iBATIS SQL Maps
      1. Introducción y diferencias entre iBATIS 1.x y 2.x
      2. iBATIS SQL Maps 1.x
        1. Configurando el SqlMap
        2. Usando SqlMapTemplate y SqlMapDaoSupport
      3. iBATIS SQL Maps 2.x
        1. Configurando SqlMapClient
        2. Usando SqlMapClientTemplate y SqlMapClientDaoSupport
        3. Implementando DAO basadas en la API de iBATIS
  14. Framework Web MVC
    1. Introducción al framework web MVC
      1. Interconectividad de otras implementaciones de MVC
      2. Características de Spring MVC
    2. El DispatcherServlet
    3. Controllers
      1. AbstractController y WebContentGenerator
      2. Otros controllers simples
      3. MultiActionController
      4. CommandController
    4. Handler mappings
      1. BeanNameUrlHandlerMapping
      2. SimpleUrlHandlerMapping
      3. Adding HandlerInterceptors
    5. Vistas y las maneras de obtenerlas
      1. ViewResolvers
      2. Encadenando ViewResolvers
      3. Redireccionando las vistas
        1. RedirectView
        2. El prefijo redirect:
        3. El prefijo forward:
    6. Usando locales
      1. AcceptHeaderLocaleResolver
      2. CookieLocaleResolver
      3. SessionLocaleResolver
      4. LocaleChangeInterceptor
    7. Usando temas
      1. Introducción
      2. Definiendo los temas
      3. ThemeResolver
    8. Soporte para subir archivos
      1. Introducción
      2. Usando el MultipartResolver
      3. Manejo de fileupload en una forma
    9. Manejo de excepciones
  15. Integración con tecnologías para la vista
    1. Introducción
    2. JSP y JSTL
      1. View resolvers
      2. JSP "a la antigua" contra JSTL
      3. Tags adicionales que ayudan al desarrollo
    3. Tiles
      1. Dependencias
      2. Como integrar Tiles
        1. InternalResourceViewResolver
        2. ResourceBundleViewResolver
    4. Velocity y FreeMarker
      1. Dependencias
      2. Configuración del contexto
      3. Creando plantillas
      4. Configuración avanzada
        1. velocity.properties
        2. FreeMarker
      5. Soporte para ligado de datos y manejo de formas
        1. Las macros de ligado
        2. Ligado simple
        3. Macros para generación de elementos de forma
        4. Configurando el "escape" de HTML y haciendo tags XHTML
    5. XSLT
      1. Primeros pasos
        1. Definiciones de Bean
        2. Código estándar para controller MVC
        3. Convirtiendo el modelo de datos a XML
        4. Definiendo las propiedades de la vista
        5. Transformación del documento
      2. Resumen
    6. Vistas de documento (PDF / Excel)
      1. Introducción
      2. Configuración
        1. Definiciones de documentos
        2. Código para el controller
        3. Subclases para vistas de Excel
        4. Subclases para vistas de PDF
    7. JasperReports
      1. Dependencias
      2. Configuración
        1. Configurando el ViewResolver
        2. Configurando las vistas
        3. Acerca de los archivos de reportes
        4. Usando JasperReportsMultiFormatView
      3. Poblando el ModelAndView
      4. Trabajando con sub reportes
        1. Configurando los archivos de sub-reportes
        2. Configurando los Data Sources para sub-reportes
      5. Configurando los parametros del Exporter
  16. Integración con otros frameworks web
    1. Introducción
    2. JavaServer Faces
      1. DelegatingVariableResolver
      2. FacesContextUtils
    3. Struts
      1. ContextLoaderPlugin
        1. DelegatingRequestProcessor
        2. DelegatingActionProxy
      2. ActionSupport
    4. Tapestry
      1. Arquitectura
      2. Implementación
        1. Ejemplo de contexto de aplicación
        2. Obteniendo beans en páginas de Tapestry
        3. Exponiendo el contexto de aplicación a Tapestry
        4. Archivos de definición de componentes
        5. Añadiendo accesores abstractos
      3. Resumen
    5. WebWork
  17. Acceso remoto y web services mediante Spring
    1. Introducción
    2. Exponiendo servicios mediante RMI
      1. Exportando el servicio usando RmiServiceExporter
      2. Ligando el servicio en el cliente
    3. Usando Hessian o Burlap para llamadas remotas a servicios via HTTP
      1. Ligando el DispatcherServlet para Hessian
      2. Exponiendo los beans mediante el HessianServiceExporter
      3. Ligando el servicio al cliente
      4. Usando Burlap
      5. Aplicando autenticación HTTP básica a un servicio expuesto mediante Hessian o Burlap
    4. Exponiendo servicios usando invocadores HTTP
      1. Exponiendo el objeto de servicio
      2. Ligando el servicio al cliente
    5. Web Services
      1. Exponiendo servicios usando JAX-RPC
      2. Accediendo a los WebServices
      3. Registrando los Mapeos de Beans
      4. Registrando tu propio manejador
      5. Exponiendo web services mediante XFire
    6. La auto detección no está implementada para interfaces remotas
    7. Consideraciones cuando se eliga una tecnología
  18. Accediendo e implementando EJB
    1. Accediendo a EJBs
      1. Conceptos
      2. Accediendo a SLSBs locales
      3. Accediendo a SLSBs remotos
    2. Usando clases de implementación de EJB de convenciencia para Spring
  19. JMS
    1. Introducción
    2. Unificación de dominios
    3. JmsTemplate
      1. ConnectionFactory
      2. Administración transaccional
      3. Administración de destinos
    4. Usando el JmsTemplate
      1. Enviando un mensaje
      2. Recepción síncrona
      3. Usando convertidores de mensajes
      4. SessionCallback y ProducerCallback
  20. Soporte para JMX
    1. Introducción
    2. Exportando tus beans a JMX
      1. Creando un MBeanServer
      2. MBeans Lazy-Initialized
      3. Registro automático de MBeans
    3. Controlando la interface de administración de tus beans
      1. La interface MBeanInfoAssembler
      2. Usando Metadatos a nivel de fuente
      3. Usando Annotations de JDK 5.0
      4. Tipos de metadatos a nivel de fuente
      5. La interface AutodetectCapableMBeanInfoAssembler
      6. Defininendo interfaces de administración usando interfaces de Java
      7. Usando MethodNameBasedMBeanInfoAssembler
    4. Controlando el ObjectName de tus beans
      1. Leyendo ObjectNames desde archivos Properties
      2. Usando el MetadataNamingStrategy
    5. Exportando tus beans con conectores JSR-160
      1. Conectores de lado del servidor
      2. Conectores del lado del cliente
      3. JMX sobre Burlap / Hessian / SOAP
    6. Accediendo a MBeans mediante proxies
  21. JCA CCI
    1. Introducción
    2. Configurando CCI
      1. Configuración del conector
      2. Configuración de ConnectionFactory en Spring
      3. Configurando conexiones CCI
      4. Usando una conexión CCI simple
    3. Usando el soporte de Spring para acceso a CCI
      1. Conversión de registros
      2. CciTemplate
      3. Soporte a DAO
      4. Generación de registros automática
      5. Resumen
      6. Usando una conexión CCI e Interaction directamente
      7. Ejemplo de uso de CciTemplate
    4. Modelando el acceso a CCI como objetos de operación
      1. MappingRecordOperation
      2. MappingCommAreaOperation
      3. Generación automática de registros
      4. Resumen
      5. Ejemplo de uso de MappingRecordOperation
      6. Ejemplo de uso de MappingCommAreaOperation
    5. Transacciones
  22. Envío de email mediante la capa de abstracción de mail de Spring
    1. Introducción
    2. Estructura de la abstracción de mail de Spring
    3. Usando la abstracción de mail de Spring
      1. Implementaciones conectables de MailSender
    4. Usando MimeMessageHelper de JavaMail
      1. Creando un MimeMessage simple y enviándolo
      2. Envío de attachments y otros recursos
  23. Calendarización de tareas mediante Quartz o Timer
    1. Introducción
    2. Usando el Calendarizador de OpenSymphony Quartz
      1. Usando el JobDetailBean
      2. Usando el MethodInvokingJobDetailFactoryBean
      3. Ligando tareas mediante triggers (disparadores) y el SchedulerFactoryBean
    3. Usando el soporte para el JDK Timer
      1. Creando timers personalizados
      2. Usando el MethodInvokingTimerTaskFactoryBean
      3. Configuración de tasks mediante el TimerFactoryBean
  24. Pruebas
    1. Pruebas unitarias
    2. Pruebas de integración
      1. Administración del contexto y cacheo
      2. Inyección de dependencias a las instancias de prueba
      3. Administración de transacciones
      4. Variables de conveniencia
      5. Ejemplo
      6. Ejecución de pruebas de integración
  25. Copyrights e información adicional

 

Comentarios

Hola gente de SpringHispano, quisiera saber si es posible acceder al contenido de los manuales, ya que al hay muy poca documentacion en castellano.

 

Saludos

Beberian de convertir estos manuales a PDF para que haya mayor trasportabilidad

 

Excelente sitio!!!

Que tal  escribi algo de MVC para spring en mi blog , pero no cacho como poder colocar la info aka , para  entregar un pequeño aporte

aqui les dejo el link

http://www.jroller.com/afuentes/entry/mvc_en_spring

SI les interesa les dejo mi correo , para ver si pueden incluir la info

fuentes.alex@gmail.com

 

Muchas gracias por la aportación la vamos a poner en la pagina principal como una liga y nos gustaría que sigas participando para integrar los contenidos que tengas en el material que vamos a publicar para a comunidad en siguientes incursiones.

De antemano recibe nuestras expresiones de gratitud y respeto...

ATTE

developx

Hola,

hace mas de dos años estuve currando con Spring y me dio por ir traduciendo el manual de Spring. Ahora he vuelto por mis fueros (con Spring) y he flipado al ver que todavia no esta traducido al castellano. Solo llegue al punto 3.3.1. Estableciendo properties y collaborators del bean con lo que desgraciadamente hemos solapado nuestros trabajos :( en los dos primeros puntos. Os lo paso cuando querais.

De todas formas tengo intencion de avanzar un poco mas con el punto 3 y hacer tambien algo con el MVC.

Os lo comento por no volver a solapar las traducciones y asi avanzar un poco que ya es hora de que haya un manual traducido al castellano.

Saludos, Kutxo.

gonzalomunoz71@yahoo.es

Hola Kutxo apenas estoy empezando con Spring y me interesaria bastante saber si me puedes facilitar la info q tienes muchas gracias d antemano...

jhoanseve@hotmail.com

Si tenéis el manual, copartirla por favor, o decir de donde se puede descargar, gracias.

saludos

Hola a todos!!

Solo para pedirles un favor. Estoy revisando el manual de Spring y no se ven las imágenes.

Ojalá se solucione pronto este detalle menor.

Salu2

Cómo puedo bajar el Manual de Spring 2.x, no veo ningún link que me permita descargar el manual.

Saludos, John

Buenos dias, quiero saber como descargar el manual muchas gracias

por el momento no tenemos descargable, una disculpa de antemano...

seguimos trabajando en el material...

saludos

neodevelop

el seguimiento del manual esta muy desordenado, propongo emplen un systema donde tengan una version test del manu8al y una inestable, cuando los "articulos" de la inestable sean apropiados de insertar organizadamente en un 20% en la test, los unes y asi.. y mientras publiquen un html completo unico de lo que hay estable.. asi lo que parece es un documento de locos

Quiero ayudar a hacer la traducción, pero quisiera saber qué partes realmente ya están completadas y cuáles faltan. Tal vez tengan guardados por ahí algunas secciones que aun no han publicado. ¿O es todo lo que se tiene?

Envío lo que haga a tí @neodevelop ?

Gracias por subir la documentación. Me pregunto si hay una traducción a otros idiomas también. Sería de gran ayuda tenerlo en Inglés.
Giron Escobar - Dominios

Esta información me sera muy util en mi travesia por los amplios y maravillosos caminos de Spring Famework.

 Buen dia,

como hago para bajar el manual??

desde ya muchas gracias.

 

Saludos

Hola me puedes decir como bajar el manual tengo examen el lunes gtacias

 

Hola estoy llevando el curso de sistemas distribuidos y pues estamos estudiando el marco de trabajo spring te agradeceria me dijeras como descargar el manual

y donde bajo el manual???

Hola, me gustaria poder acceder al manual, lo necesito para utilizarlo en el trabajo

Quisiera saber como hago para bajar el manual?

Desde ya muchas gracias.

 

Karina

Primero que nada felicitarte por tus aportaciones me parecen muy bien explicados.

Ultimamente e querido leer el tuorial o ver los screencast pero ya no puedo accesar.

Podrias decirme si hay un link alterno para estos.

Gracias y saludos

Ya están arriba

Una disculpa por ello...

Saludos

buena aportacion gente..slds.

Muy buen aporte !!!