martes, 6 de noviembre de 2007
Frases - Escuela
jueves, 1 de noviembre de 2007
Excelentes Frases
sábado, 28 de julio de 2007
NetBeans con Esteroides
- Swing
- Java Server Faces
- Struts 1.2.9
- Visual Web Pack
- JPA con Hibernate y Top Link
- UML
- BPEL
- Web Services (Sun Application Server 9)
- Tomcat 5.5
- JBoss
- Sun AS 9
sábado, 2 de junio de 2007
Frases-Junio 2007
Si quieres que alguien aprenda, tienes que estar ahi para el momento en que te necesite y ser paciente.
domingo, 20 de mayo de 2007
ES-Senderos
Aun es tiempo de que no puedo simplemente mirar el exterior y dejar de hurgar en los ojos y expresiones del rostro. Quiero seguir pensando que las vivencias y las cicatrices de nuestra vida se llevan en la mirada. Deseo recordar que ese dolor que habito nuestra vida se cicatriza en nuestro corazón y nos hace ser fuertes encontrando: una razón que llene de luz nuestra sonrisa, un temple que no se inmuta ante las inclemencias temporales de la vida.
He buscado por muchos caminos el dolor que mantenga mi espíritu tranquilo, brindando paz a esas personas con las que cruzo palabras o miradas. Sigo un camino que parece guiarme sin una dirección clara, sin embargo las sensaciones y emociones que la vida me da, me hacen sentir como la sangre fluye por mis venas, me demuestran como puedo enojarme, gritar y reír.
Cada mañana me levanto y no siquiera observo si mi mirada es mas tranquila, lo único que hago es correr porque siempre hay un lugar a donde llegar y en ocasiones no es un lugar como el que busca mi corazón. Sigo la monotonía de un día lleno de emociones que mi corazón no busca, sigo un día de aventuras y peripecias que la vida me ofrece para darme cuenta cual es mi razón de hacer las cosas, cual es mi razón de continuar y no quedarme en el mismo lugar que el día anterior. Cada día es un paso breve en una vida que es tan corta como no imaginamos y tan larga como la aprovechemos.
Los días pasan uno tras otro como si fueran segundos en aquel viejo reloj que muchos años atrás inicio su marcha sintiendo aquella cálida brisa que la vida nos da.
miércoles, 25 de abril de 2007
SSO - OpenSSO y sus Agentes
Por lo cual nos fue necesario configurar el servidor de sso con su nombre de dominio real, ejemplo sso.cetechihuahua.gob.mx.
De está manera reinstalamos el opensso y en la pantalla de configuración le asignamos el nombre de sso.cetechihuahua.gob.mx, en lugar de su dirección IP (10.0.0.xx). Además en está ocasión seleccionamos un cookie domain más acorde a nuestras necesidades ".cetechihuahua.gob.mx"
Por último la configuración del Tomcat, la hicimos como se nos indica en el artículo: "Single Sign-On Using Sun Java System Access Manager 2005Q4 and Sun Java System Access Manager Policy Agent 2.2". Para esté paso nos fue necesario agregar al DNS a la PC que tenía el tomcat, y agregar el TomcatProfile como indica el artículo.
viernes, 20 de abril de 2007
SSO - Implementando un Login con Java y OpenSSO
Antes de Iniciar con estos pasos es necesario saber que es el archivo AMConfig.properties y ver los requisitos del API para clientes. Para más información consultar "How the Client SDK Works"
Una vez que tenemos el SSO instalado y configurado, procedemos a bajar los APIs para el client SDK en la siguiente dirección: http://download.java.net/general/opensso/nightly.
Creamos nuestro Web Project con eclipse WTP o JDeveloper y copiamos nuestro sso client sdk al directorio WEB-INF/lib.
Creamos nuestra pantalla de log in con la tecnología que preferimos
Creamos la clase de autenticación
import java.io.IOException;
import java.util.MissingResourceException;
import java.util.Properties;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.NameCallback;
import javax.security.auth.callback.PasswordCallback;
import javax.security.auth.callback.TextOutputCallback;
import javax.security.auth.callback.UnsupportedCallbackException;
import com.iplanet.am.util.SystemProperties;
import com.sun.identity.authentication.AuthContext;
import com.sun.identity.authentication.spi.AuthLoginException;
public class Login {
private static final String moduleName = "DataStore";
private String loginIndexName;
private String orgName= "opensso";
private User user;
/**
* Constructor
* @param user
*/
public Login(User user) {
this.user = user;
loginIndexName = "http://sso.cetechihuahua.gob.mx:8080/fma";
}
protected AuthContext getAuthContext()
throws AuthLoginException {
AuthContext lc = new AuthContext(orgName);
AuthContext.IndexType indexType = AuthContext.IndexType.MODULE_INSTANCE;
lc.login(indexType, moduleName);
debugMessage(loginIndexName + ": Obtained login context");
return lc;
}
private void addLoginCallbackMessage(Callback[] callbacks)
throws UnsupportedCallbackException {
int i = 0;
try {
for (i = 0; i < succeed =" false;" callbacks =" null;" callbacks =" lc.getRequirements();" succeed =" true;">
Creamos un servlet que ejecute la autenticación
package sso;
import java.io.IOException;
import java.util.Properties;
import javax.security.auth.callback.UnsupportedCallbackException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.iplanet.am.util.SystemProperties;
import com.sun.identity.authentication.AuthContext;
import com.sun.identity.authentication.spi.AuthLoginException;
/**
* Servlet implementation class for Servlet: SSOLogin
*
*/
public class SSOLogin extends javax.servlet.http.HttpServlet implements
javax.servlet.Servlet {
static {
System.err.println("Loading properties");
Properties props = new Properties();
props.setProperty("com.iplanet.am.naming.url",
"http://sso.cetechihuahua.gob.mx:8080/afm/namingservice");
SystemProperties.initializeProperties(props);
System.err.println("Properties Inicializadas");
}
/*
* (non-Java-doc)
*
* @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request,
* HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/*
* (non-Java-doc)
*
* @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request,
* HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("Autenticando");
Login login = new Login(new User(request.getParameter("usuario"),
request.getParameter("password")));
AuthContext lc;
try {
lc = login.getAuthContext();
if (login.login(lc)) {
RequestDispatcher dispatcher = getServletContext()
.getRequestDispatcher("/firmado.jsp");
dispatcher.forward(request, response);
} else {
RequestDispatcher dispatcher = getServletContext()
.getRequestDispatcher("/error.jsp");
dispatcher.forward(request, response);
}
} catch (AuthLoginException e) {
e.printStackTrace();
} catch (UnsupportedCallbackException e) {
e.printStackTrace();
}
}
}
Ligas de Interes:
SSO - Gil VS OpenSSO Round 3
Hasta el momento la alternativas que conosco para autenticar con el SSO son utilizando un agente y utilizando el API.
Utilizando el Agente
Los agentes para el SSO son distribuidos por SUN y su labor es monitorear los dominios, contextos o aplicaciones que se encuentran en un server. Por ejemplo si mi aplicación usa Java y está en tomcat, yo instala una aplicación de nombre abs, con el war abs.war. entonces mi url seria:
En ese caso si yo configurara el agente para monitorear abs, automanticamente al teclear esta dirección en el navegador, la página sería redireccionada al SSO para autenticarse. Una vez autenticado se regresaría el flujo a mi aplicación y dependiendo de la seguriddad me permitiría acceder a ella.
Los agentes funcionan con muchos servidores, Apache, IIS, WebLogic, Tomcat, etc. por lo cual cuando no utilizamos tecnologías de java, son excelentes.
Utilizando el API
El SSO tiene un API de Java que permite establecer conexiones con nuestro servidor de Accesos (Donde está instalado el OpenSSO), Si nosotros queremos tener el control y personalizar la implementación podemos utilizar esta opción además esta opción no requiere de Agentes.
martes, 17 de abril de 2007
SOA - Capítulo I - En Busca de SOA
Posiblemente entender SOA (Service Oriented Arquitecture) resulta sencillo para muchos ya que es un concepto en que muchos procesos de negocios se definen a través de la integración de servicios proporcionados, por uno o más sistemas y por uno o más organizaciones.
Sin embargo en nuestra región la integración de aplicaciones por medio de SOA es aún un mito ya que como desarrolladores estamos acostumbrados hacer aplicaciones gigantescas que tengan muchos módulos, por lo cual podemos decir que es un conjunto de código en un solo proyecto de implementación. Una forma de en la que podemos ver este tipo de sistemas se muestra en la siguiente figura:

Sin embargo para desarrollar esté tipo de aplicaciones se requiere al menos 4 o 5 desarrolladores que lo implementen, y en muchas ocasiones no existe documentación, un diseño previo y menos una arquitectura, lo que hace que estos sistemas sean en extremo complejos, difíciles de mantener y dependen de las personas que los desarrollan. Por estos motivos a los arquitectos de soluciones y aplicaciones les resulta fundamental evaluar este tipo de situaciones y al ser un problema muy complejo se han buscado muchas maneras como los objetos COM, EJBs, CORBA, etc. hasta que se ha llegado a SOA, que resuelve muchos de los problemas de integración de aplicaciones. Posteriormente se irá describiendo las características de SOA a medida que las vayamos descubriendo y entendiendo.
Una arquitectura en SOA tiene una forma como la siguiente:

Por otro lado hemos hablado de un ambiente federado y es una pregunta un tanto difícil de entender por el momento diremos que federación es la capacidad de poder utilizar servicios de muchas organizaciones, dominios o servidores como si fueran uno.
Si deseas tener una perspectiva general de Identity Management ver está liga:
sábado, 14 de abril de 2007
ES - Razones
La monotonía y el trabajo diario nos fuerzan a pensar solo en lo que hacemos en DIA, olvidando a quienes están a nuestro alrededor.
Es tan drástica la monótona, es tan esclavizante el trabajo que solo vivimos para ellos y no ellos para hacernos felices a nosotros, recordemos como miramos el reloj cuando están a punto de ser las 3:00, las 4:00, o cualquier hora a la que se acabe nuestro trabajo. ¿Por qué simplemente puedo disfrutar el día cuando estoy fuera de mi escritorio y alejado de los papeles del trabajo?
Una vida sin razón es como un laberinto sin salida, una vida en la camínanos, corremos, suplicamos sin encontrar una razón
Por la cual respiramos, por la cual sonreímos y mucho peor, por la cual amamos.
Una vida sin aceptarse es como caminar en el fuego, creyendo nunca quemarnos, que las llamas que viven en nuestro interior nunca afloraran y nunca despertaremos.
Desearía saber que es lo que me apasiona, que me da esa fuerza para continuar intentando vivir una y otra vez, una razón por lo cual hago lo que hago y vivo en donde vivo, son desear partir sin desear rezar por la noches y sin escuchar los mensajes que me lleva el viento.
Como quisiera encontrar la quietud, para saber que es lo que en realidad amo, paso mis días con las ilusiones que dejan los vestigios de la monotonía y el andar diario, sigo el camino que marca el reloj con el avanzar de sus manecilla, sin siquiera preguntarme que me lleva a amar la vida que se me dio.
Y deambular en una pregunta sin respuesta como lo es ¿Que quiero de mi vida?
jueves, 12 de abril de 2007
ES-Continuar
Acaso es vida, los días que pasan uno tras otro sin darme cuenta cuando respirar, sin darme cuenta cuando el reloj avanzo 15 horas y dejó el sol atrás.
Por las noches desearía ser aquel quien voló por los cielos, subió el Himalaya, camino por la India, vivió en las montañas. o ser aquel que cuando la luna llega está sentado a las orillas del río que escucho Sidharta y seguir el camino de buda, y tal vez rezar.
En ocasiones cuando escucho a los pájaros cantar y miro a mi alrededor, todo parece pasar, las palabras fluyen por mis labios y las lagrimas de mi corazón, siento mi respirar, escucho mi conciencia y siento la presencia de Jesús.
Hoy a mi lado Jesús está, Jesús que con su sonrisa me resista y me muestra su sol. Camino hacia él, pasando a un lado del árbol de mis recuerdos, el campo de los ayeres, el baúl de mis recuerdos... Y me doy cuenta...
hoy es un día para recordar que Jesús habitó mi corazón, hoy es un día para darme cuenta de que mis tormentos no se comparan con la dicha de mirar el sol, hoy es el día en el cual yo encontraré una razón más para aceptar mis problemas y caminar, hoy es un buen día para darme cuenta de que la vida es muy corta para estar triste, para sufrir y para añorar a quien se fué.
Hoy es un buen día para abrir mi corazón y sonreír día tras día al sentir el viento, mirar el sol y escuchar a los pájaros cantar.
Errores: Struts y los tipos de datos checkbox
En ocasiones queremos abusar de la potencia de un lenguaje como Java cuando utilizamos Struts 1.2.x, sin embargo existen casos en los que eso no es posible como por ejemplo :
Cuando utilizamos objetos ActionForm y se nos ocurre la grandiosa idea de utilizar variables de tipo String y a esas variables les creamos su métodos set y get, todo parece ser perfecto. Pero si se nos ocurre la grandiosa idea de crear un método como el siguiente:
/**
* Validates if a turn time is selected
* @return the turnTimeHistoricChart
*/
public boolean isTurnTimeHistoricChart() {
return turnTimeHistoricChart.equals(TRUE);
}
teniendo los siguientes métodos tambien:
/**
* Sets the information for field turnTimeChart
* @param turnTimeChart the turnTimeChart to set
*/
public void setTurnTimeChart(String turnTimeChart) {
this.turnTimeChart = turnTimeChart;
}
/**
* Gets the information ofturnTimeHistoricChart
* @return the turnTimeHistoricChart
*/
public String getTurnTimeHistoricChart() {
return turnTimeHistoricChart;
}
Struts puede pensar que el tipo de variable es boolean en lugar de String y nunca asignar el valor que capturamos en el formulario, por lo cual resulta importante no implementar nuestra funcionalidad de está manera.
sábado, 7 de abril de 2007
Intentando Modelar UML desde un IDE
- Modele Java 5
- Integración con el IDE: Ssi no se puede integrar que la ingeniería inversa sea sencilla.
- Tenga acceso a control de Versiones: Por ejemplo omondo se veía bastante bien, pero solo la versión de paga tenia acceso a control de versiones.
- Que permite el trabajo en equipo: Muchas herramientas tienen un servidor que permite hacer la fusión de los modelos (Enterprise Architect, Rational Rose Modeler, Visual Paradigm) , otros generan un archivo independiente para cada diagrama (Rational Application Developer, JDeveloper, Omondo).
- Diagramas agradable: Esta categoría la dominan Rational Aplication Developer, y JDeveloper los caules generan los diagramas mas agradables a la vista.
- Facilidad de uso: Al ser el modelado una actividad que no a todos los desarrolladores agrada, la herramienta debe crear modelos y sus relaciones de una manera sencilla.
- Recursos que consume: La herramienta debe ser ligera y que pueda ser utilizada en una Equipo que tenga desde Pentium 4 y 512MB en RAM, por lo cual herramientas como JDeveloper y Rational Application Developer no son muy buena opción.
- Multiplataforma: La herramienta pueda ejecutarse en las plataformas de Windows y Linux de forma nativa, ya que por ejemplo Enterprise Architect se puede instalar en Linux pero su funcinamiento deja mucho que desear.
- Enterprise Architect
- Visual Paradigm
- JDeveloper
- Poseidon
- Rational Application Developer 6.0
- Omondo
- eUML
- ArgoUML
- Jude
- AmaterasUML
- StarUML
- Rational Rose 7.0
- Concept Draw
- Smart Draw
- Infinidad de plug-ins de eclipse