Translate
lunes, 28 de junio de 2010
Agujero de seguridad grave en Spring
viernes, 18 de junio de 2010
SCA
Service Component Architecture (SCA) define un enfoque general para realizar estas dos cosas. SCA es un estándar de OASIS originalmente creado por diferentes vendedores como BEA, IBM, Oracle, SAP, etc. La especificación SCA define como crear un componente y como estos componentes interactuan para formar una aplicación. Los componentes en SCA pueden ser construidos en Java o en otros lenguajes y además permite interactuar con otras tecnologia como JEE, Spring o BPEL. SCA define un mecanismo común de ensamblaje que indica como los componentes son combinados dentro de la aplicación.
Apache Roller
Roller es una aplicación web Java que debe ser capaz de ejecutar en cualquier servidor Java EE y cualquier base de datos relacional. En la actualidad, corre mejor en Tomcat y MySQL - pero puede correr en Glassfish, WebSphere, JBoss, Gerónimo, Derby, PostgresSQL, Oracle, etc.
Roller es una producto estable y lista-servidor en el blog es importante revisión tercero. Roller se distribuye con licencia Apache. Roller se graduó de la incubadora de Apache en marzo de 2007 y ahora es un proyecto oficial de Apache.
martes, 15 de junio de 2010
MyIbatis
MyIbatis conocido anteriormente como Apache iBATIS, tuvo varios cambios estos días. Cambio de nombre y abandono la fundación Apache esto es poco común, dado que la fundación Apache da importancia a el proyecto por solo pertenecer a la fundación. Es un total misterio el abandono de la fundación.
Cambiando de tema, muchos se pregunta que es MyIbatis bueno es como un ORM. Pero no es un ORM completo como alguien lo llamo una vez es un ORQ (object relation queries). Es decir que tenemos que escribir el sql y mapear nuestro objetos a esas queries y el framework se ocupa de setear los valores de la query al objeto y viceversa. Es decir no es un competidor de hibernate sino de jdbc.
Cuando necesitamos mayor rendimiento y estamos seguros que vamos a escribir queries mejor que cualquier ORM, o cuando heredamos un diagrama de tablas sumamente complicado, nos conviene utilizar MyIbatis.
viernes, 11 de junio de 2010
Tenemos nuevo diseño !!!
HTML 5 !!
He encontrado este resumen que explica los alcances de html 5 y una comparativa con flash el rey de la interactividad web.
El link es el siguiente:
http://www.focus.com/images/view/11905/
martes, 8 de junio de 2010
Apache OFBiz
Apache Open For Business Project es un proyecto de código abierto licenciado bajo Apache License 2.0. Este proyecto enterprice Open source y como enterprice Open source entendemos : Open Source ERP, CRM Open Source, Open Source de E-Business / E-Commerce, Open Source SCM, MRP Open Source, Open Source CMMS / EAM, y así sucesivamente.
Seria es criollo el ERP de Apache totalmente libre.
Apache OFBiz es una base y punto de partida de soluciones fiables, empresa segura y escalable. Utilícelo out-of-the-box (OOTB) o incluso personalizar para satisfacer sus necesidades de negocios más exigentes. Con OFBiz , usted puede comenzar de inmediato y ir escalando a medida que su negocio crece, sin el gran despliegue y costos de mantenimiento de los sistemas tradicionales de automatización de la empresa.
Es de código abierto bajo la licencia Apache 2.0 y conducido por una comunidad Apache OFBiz ofrece la flexibilidad de diseño y el acceso a código, esta es una solución en la que no está solo, sino que puede trabajar con muchos otros para hacer las cosas.
sábado, 5 de junio de 2010
Frases
"Los programas deben ser escritos para que la gente los lea y sólo incidentalmente, para que las máquinas los ejecuten."
"Mucho del software hoy en día se parece a una pirámide egipcia: con millones de ladrillos apilados uno encima del otro, sin integridad estructural y hecho por pura fuerza bruta y miles de esclavos."
--Alan Kay
"Cualquier tonto puede escribir código que un ordenador entiende. Los buenos programadores escriben código que los humanos pueden entender."
--Martin Fowler
"Hay dos formas de diseñar software: la primera es hacerlo tan simple que obviamente no hay deficiencias y la segunda es hacerlo tan complicado que no hay deficiencias obvias. La primera forma es mucho más difícil."
--C.A.R. Hoare
"Si deseas empezar y desarrollar algo grandioso, no necesitas millones de dólares de capitalización. Necesitas suficiente pizza y Diet Coke en la nevera, una PC barata y trabajo y dedicación para realizar tu idea."
---John Carmack
La mejor forma de predecir el futuro es inventarlo.
--Alan Kay
El software y las catedrales se parecen mucho. Primero lo construimos, después rezamos.
–-Anónimo
jueves, 3 de junio de 2010
Aprendiendo SOA
http://blogs.tecsisa.com/articulos-tecnicos/¿por-que-soa/
http://blogs.tecsisa.com/articulos-tecnicos/¿por-que-un-enterprise-service-bus
Además les aconsejo un blog, Espacio SOA y además el mio jeje.
http://www.espaciosoa.net
viernes, 28 de mayo de 2010
Apache Ivy
- Flexibilidad y configurabilidad - Ivy es esencialmente independiente del proceso y no está vinculado a cualquier metodología o estructura. En su lugar, proporciona la necesaria flexibilidad y configurabilidad de adaptarse a una amplia gama de gestión de la dependencia y construir procesos.
- Estrecha integración con Apache Ant. Ivy funciona particularmente bien con Apache Ant proporcionando un número de poderosos tareas Ant desde la resolución de dependencias para la presentación de informes y publicación de dependencia.
Apache Harmony - Open Source Java SE.
Y yo personalmente uso muchos productos de Apache y la verdad es que siempre tuve buenos resultados. Vamos a probar esta Jdk
viernes, 21 de mayo de 2010
Configurar una cache con Spring con ehcache
viernes, 14 de mayo de 2010
Apache Tuscany y Spring
Comenzamos escribiendo la interfaz:
@Remotable
public interface ExampleService {
String sayHello();
}
Su implementación :
@Service(ExampleService.class)
public class ExampleServiceImpl implements
ExampleService {
private String hello = "Holasss !!! \n";
public void setHello(String hello) {
this.hello = hello;
}
/**
* @see org.assembly.nornas.ExampleService#sayHello()
*/
@Override
public String sayHello() {
System.out.print("llamaron a Say");
return hello;
}
@Init
public void init() {
System.out.println("Starting with "+ExampleServiceImpl.class + " \n");
}
}
Ahora tenemos que configurar el beans de spring, en un archivo que llamaremos: appcontext-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:sca="http://www.springframework.org/schema/sca"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/sca http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd ">
<bean id="service.example" class="com.elpaquete.ExampleServiceImpl">
<property name="hello" value="Hola desde Spring!!" ></property>
</bean>
<sca:service name="ExampleService"
type="org.assembly.nornas.sandbox.service.example.ExampleService" target="service.example" />
</beans>
Notaron que además de declarar el bean le indicamos a Apache Tuscany cual es la interfaz de nuestro bean que va a ser un componente de Apache Tuscany.
Ahora escribimos el archivo ExampleSpring.composite:
<?xml version="1.0" encoding="UTF-8" ?>
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
targetNamespace="http://nornas"
xmlns:nornas="http://nornas"
name="Example" >
<component name="ExampleServiceComponent">
<implementation.spring location="spring-sandbox.xml" />
<service name="ExampleService">
<interface.java interface="org.assembly.nornas.sandbox.service.example.ExampleService"/>
<binding.ws uri="http://localhost:8080/nornas/ws" />
<t:binding.atom uri="http://localhost:8080/nornas/atom" />
<t:binding.jsonrpc uri="http://localhost:8080/nornas/jsonrpc" />
<t:binding.rss uri = "http://localhost:8080/nornas/rss"/>
<binding.sca />
</service>
</component>
</composite>
Notaron que la implementación del componente no se indica clase si no el archivo appcontext-spring.xml, Apache tuscany va a leer y buscar de ahí la implementación.
Ya lo tenemos, ahora vamos a hacer la clase main:
public class MainSpring {
public static void main(String[] args) throws IOException {
System.out.println("Starting ...");
SCADomain scaDomain = SCADomain.newInstance("ExampleSpring.composite");
System.out.println("Example in "+scaDomain.getURI());
System.in.read();
System.out.println("Stopping ...");
scaDomain.close();
System.out.println();
}
}
Si todo salio bien, en http://localhost:8080/nornas/ws?wsdl va a estar wsdl de su web service soap.
Por ultimo las dependencias de maven:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6.SEC01</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-sca-api</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-core-spi</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-policy-security</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-host-embedded</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-data-api</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.ws.security</groupId>
<artifactId>wss4j</artifactId>
<version>1.5.3</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-implementation-java-runtime</artifactId>
<version>1.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-binding-atom-abdera</artifactId>
<version>1.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-binding-rss-rome</artifactId>
<version>1.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-binding-ws-axis2</artifactId>
<version>1.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
<version>1.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-binding-rmi-runtime</artifactId>
<version>1.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-implementation-resource-runtime</artifactId>
<version>1.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-binding-http-runtime</artifactId>
<version>1.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-host-jetty</artifactId>
<version>1.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-implementation-spring</artifactId>
<version>1.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-implementation-spring-runtime</artifactId>
<version>1.6</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
</exclusions>
</dependency>
sábado, 8 de mayo de 2010
Desarrollar un ejemplo con Apache Tuscany
En otro post les prometo dar más detalles de mi tesis.
Si no leyeron estos posts, sería bueno que lo hagan :
http://emanuelpeg.blogspot.com/2010/02/apache-tuscany_4551.html
http://emanuelpeg.blogspot.com/2010/02/sca.html
La idea es desarrollar un ejemplo facil usando maven.
Veamos la descripción del componente:
import org.osoa.sca.annotations.Remotable;
@Remotable
public interface ExampleService {
String sayHello();
}
Veamos la implementación:
import org.assembly.nornas.service.example.ExampleService;
import org.osoa.sca.annotations.Init;
import org.osoa.sca.annotations.Service;
@Service(ExampleService.class)
public class ExampleServiceImpl implements
ExampleService {
@Override
public String sayHello() {
System.out.print("llamaron a Say");
return "Holasss !!! \n";
}
@Init
public void init() {
System.out.println("Starting with "+ExampleServiceImpl.class + " \n");
}
}
Ahora hay que hacer un archivo composite que describe el componente:
Example.composite
<?xml version="1.0" encoding="UTF-8" ?>
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
targetNamespace="http://nornas"
xmlns:nornas="http://nornas"
name="Example" >
<component name="ExampleServiceComponent">
<implementation.java class="org.assembly.nornas.serviceImpl.example.ExampleServiceImpl" />
<service name="ExampleService">
<interface.java interface="org.assembly.nornas.service.example.ExampleService"/>
<binding.ws uri="http://localhost:8080/nornas/ws" />
<t:binding.atom uri="http://localhost:8080/nornas/atom" />
<t:binding.jsonrpc uri="http://localhost:8080/nornas/jsonrpc" />
<t:binding.rss uri = "http://localhost:8080/nornas/rss"/>
<binding.sca />
</service>
</component>
</composite>
Ahora vamos a correr todo esto, para lo cual vamos a tener que hacer una clase que tenga el método main:
import java.io.IOException;
import org.apache.tuscany.sca.host.embedded.SCADomain;
public class Main {
public static void main(String[] args) throws IOException {
System.out.println("Starting ...");
SCADomain scaDomain = SCADomain.newInstance("Example.composite");
scaDomain.getURI();
System.out.println("store.composite ready for big business !!!");
System.in.read();
System.out.println("Stopping ...");
scaDomain.close();
System.out.println();
}
}
Ojo hago esto porque no tengo servidor, para otro ejemplo probamos con tomcat o jetty. Internamente Apache tuscany levanta un jetty.
Y Listo!!
Si vamos a esta url: http://localhost:8080/nornas/ws?wsdl deberíamos tener en wsdl de nuestro web server SOAP.
Si fueron observadores vieron que use varios bildings (solo lo hice para probarlos)
Les dejo las dependencias del pom para correr el ejemplo:
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-core-spi</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-policy-security</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-host-embedded</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-data-api</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.ws.security</groupId>
<artifactId>wss4j</artifactId>
<version>1.5.3</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-implementation-java-runtime</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-binding-atom-abdera</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-binding-rss-rome</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-binding-ws-axis2</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-binding-rmi-runtime</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-implementation-resource-runtime</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-binding-http-runtime</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-host-jetty</artifactId>
<version>1.6</version>
</dependency>
Acabamos de hacer un servicio SOA con Apache Tuscany, muy fácil no?
miércoles, 5 de mayo de 2010
Manual de Osgi
http://www.javahispano.org/contenidos/archivo/14922/OSGI_Roberto_Montero.pdf