Oracle Middleware 11g
In Mastering SOA and other sites/blogs, etc the news are running! The launching date for the Oracle Fusion middleware 11g will be 1th July. The products in the suite will be:
Oracle WebCenter Suite 11g (Portal solution)
Oracle Weblogic Suite 11g (the new middleware foundation, maybe with a lot of new features, migration tools, etc).
Oracle Identity Management 11g (Security)
Oracle SOA Suite 11g
Oracle BPA Suite 11g (delayed for a month)
and now, enjoy the new features and capabilities.
Thanks to Iñaki Martin for the info.
Java’s new GC / After Oracle
Sun has released a new JVM, the 1.6.0_1 with a new super-brand-new Garbage Collector called G1 with new characteristics adapted for use it in server environments, ease of use, low pause times and improvements in the concurrent Mark and sweep collector, compaction and other more.
All is OK, like others improvements that are usual in the new releases of Sun (recently acquired by Oracle). But one of this therms of use says:
“Although G1 is available for use in this release, note that production use of G1 is only permitted where a Java support contract has been purchased. G1 is supported thru Sun’s”
I never heard or read something like that in the Sun’s Java technology before. What’s happen!!!??? I hope Sun mention this to protect themselves trying to avoid people use it in production environments because is in experimental phase. I hope!
Here is the page’s release with a little how to use the new G1. Meantime I’ll go to do some tests.
XML Parsing without validation
Sometimes your machine where your app is running needs to parse some XML with DOM or SAX. There aren’t possibility to connect to schema’s container site (obtaining a java.net.ConnectException: Connection timed out: connect) and you don’t have the possibility to put the schema in programmatic way by DocumentBuilderFactory.setSchema(Schema schema).
I know, terrible situation! but it happens. It is possible to set a group of features to avoid the namespace’s validation of external resources.
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(false);
dbf.setValidating(false);
dbf.setFeature(”http://xml.org/sax/features/namespaces”, false);
dbf.setFeature(”http://xml.org/sax/features/validation”, false);
dbf.setFeature(”http://apache.org/xml/features/nonvalidating/load-dtd-grammar”, false);
dbf.setFeature(”http://apache.org/xml/features/nonvalidating/load-external-dtd”, false);
DocumentBuilder db = dbf.newDocumentBuilder();
//parse your document as usual
Document doc = db.parse(descriptor);
There isn’t the cleanest way to do that, but sometimes it can save your life.
Path Mac OS X
![]()
Add an entry to PATH variable for Mac OS X each time you use it can be awful, for avoid this, is possible to assign the variable permanently, doing the next steps:
- Open Terminal.app
- Add via command line the entry to the file ~/.profile of the variable that we wish to change in the way of the Unix operator ‘>>’ (append output)
echo ‘export PATH=<path>:$PATH’ >> ~/.profile - Test it, the variable PATH has been changed and you can prove it by one echo sentence in the terminal “echo $PATH” en la terminal. Changes must be here.
In the same way we can modify or/and put more user variables (like classpath, ant_home, wl_home, etcetera).
sftp con Ant
Una tarea Ant para mover un archivo a un servidor vía ftp iria de la siguiente manera mas o menos.
<ftp server=”hostname”
port=”21″
remotedir=”/dir/”
userid=”myUser”
password=”myPassword”
passive=”yes”
depends=”yes”
binary=”yes”>
<fileset dir=”.”>
<include name=”**.jar”/>
</fileset>
</ftp>
Basta agregar al classpath de ant los jars de apache commons-net para que esto funcione.
Sin embargo, cuando el servidor solo acepta SFTP la cosa cambia porque se necesita realizar una autenticación segura y ahí las librerías net de apache ya no son suficientes para solucionar el problema.
La tarea SCP permite el movimiento/copia de archivos de manera segura. En este caso es necesario agregar las librerías de jsch al CLASSPATH de ant (es necesario construir el jar) y agregar una tarea que resulta mas sencilla que una de ftp para que podamos realizar el movimiento de archivos.
<scp file=”file.jar” todir=”user@host:/dir” password=”coficina” />
Esto de la manera mas sencilla, es posible usar un fichero de llaves privadas y demás features que pueden verse en la documentación. No hay duda que todo se puede hacer con ant, o mínimo puede ser implementado.
jrcmd
JRockit, la máquina virtual de Java de Bea (ahora Oracle) tiene entre sus features el JRA (Java Runtime Analyzer), una herramienta para realizar/analizar grabaciones de procesamiento en franjas de tiempo que ha realizado la maquina virtual JRockit en local o en hosts remotos. El uso de la herramienta en modo consola gráfica es bastante explicita pero el usarla con línea de comando en las ocasiones en que no hay posibilidad de conexión remota a la máquina destino o no hay posibilidad de levantar un servidor X tiene sus detalles.
El ejecutable es el jrcmd dentro del $JROCKIT_HOME/bin/
Para comenzar una grabación JRA podemos ejecutarla con el mismo usuario que se levantó la máquina virtual que deseamos observar de la siguiente manera:
Primero debemos conocer el PID del jre, eso lo podemos hacer de dos maneras
erwin@eva02:$ ps -ef | grep java
esto muestra los procesos coriendo con los parámetros con que fueron ejecutados, o bien con el mismo jrcmd
[erwin@eva02]$ $JROCKIT_HOME/bin/./jrcmd
esto mostrará los pids de los procesos ejecutandose y una breve descripción, puede ser que hayan varios corriendo con nombres parecidos así que habrá que ver los procesos ejecutandose.
con el pid en mano:
[erwin@eva02]$ $JROCKIT_HOME/bin/./jrcmd <pid> jrarecording time=<time en segundos> filename=<nombre> [methodtraces=true|false] [sampletime=<time en seg>] [nativesamples=true|false] [delay=<time en seg>] [tracedepth=<1..16>]
methodtraces deshabilita con false la traza de resultados por cada muestra
nativesamples, en caso de que haya código proveniente de otros lenguajes se mostrará en su código nativo
delay, da un retraso a la ejecución de la grabacion
sampletime, se indica el tamaño de la muestra en tiempo
Hay que tomar en cuenta que el uso de estas herramientas, supone un overhead en la maquina host que no es tan medible, sin embargo este tipo de mediciones pueden ayudar bastante a encontrar cuellos de botella, puntos calientes dentro de las aplicaciones, la efectividad de las politicas del garbage collector y la latencia generada con ayuda del Mission Control, ya en forma gráfica.
jrcmd es una herramienta superpotente para monitorizar y hacer profiling de weblogic, para ver mas comandos disponibles y sus variantes basta con pedirle ayuda y listo.
$JROCKIT_HOME/bin/./jrcmd <pid> help
Como siempre y como cualquier producto propietario tus posibilidades dependen de la licencia.
SCA
SCA (Service Component Architecture) es un conjunto de especificaciones para desarrollar bajo un modelo arquitectural de servicios, extendiendo y conjuntando EJB, RMI, Rest, JMS y obviamente WSDL/SOAP de tal manera que se abstrae la parte molesta de estas tecnologías (localización, invocación remota, etc) y se simplifica el modelo programatico de manera dramática permitiendo comunicar componentes que se ejecuten dentro de una misma maquina virtual o distintas de estas, ya sea en forma local o remota.
La “moda” SOA al parecer por fin se simplifica un poco y se hacen caso a tecnologías que ya se ha comprobado bien que funcionan. SCA se me figura como seguir impulsando SOA pero incluyendo también a tecnologías de servicios anteriores, simplificándolo y no montando otra especificación WS-* mas a la lista sino tratar de hacer las cosas de la manera mas limpia posible.
Aún así SCA es una serie de especificaciones para cada tecnología y para cada tecnología hay que leer un poco de que se trata y como se hacen las cosas. Como cada específicación esta debe ser probada y usada antes de hacerla pública, su implementación base es Apache Tuscany, aunque los distintos fabricantes implicados en su desarrollo (IBM, Oracle-Bea, Sun, SAP, etc) trabajan en sus propias implementaciones, cada uno de ellos dándole énfasis en cosas que les convienen o creen mas explotables.
Apache Tuscany, ahora a cargo del grupo Oasis, como modelo de referencia esta un poco mas maduro, pero los fabricantes van incorporando soporte SCA en sus nuevos realeases. El soporte para SCA esta incluído en el TechPreview de Weblogic Application Server 10.3 Oracle-Bea(WLServer10.3tp) con las librerías necesarias para su uso y ejemplos para jugar con el un poco. IBM sigue dando como modelo de referencia a Tuscany y extrañamente Sun Microsystems no esta haciendo mucho por SCA aunque esta en el grupo de definición, aunque los demás fabricantes y mucha gente en el medio al parecer se esta interesando por esta tecnología, que aunque parece prometedora habrá que ver como evoluciona.
Como siempre, el mercado impone y no quiere decir que sea lo mejor para el desarrollo de las tecnologías, en ocasiones el mismo mercado mete complejidad a las cosas, esperemos que este no sea el caso y de veras sea lo que por ahí se lee, que SCA es el nuevo JEE, ojalá no nos traicione como los WS.
101 maneras de saber cuando tu proyecto fracasará
En Codesqueeze hicieron una lista de señales estoy seguro que basadas en la realidad (porque muchas las he vivido) que son buen indicativo de que las cosas van mal y que el proyecto en el que estas fracasará. No importa que ya se haya vendido [nota cultural]. Creo que la lista hasta se queda corta. La lista completa esta por aquí y hay algunas que casi me sacan la lagrimita jeje.
- Every bug is prioritized as Critical
- Every feature is prioritized as Trivial
- Your manager insists that you track all activity but never uses the information to make decisions
- Your manager thinks MS Project is the best management tool the market offers
- Team Rule – No meetings until 10 AM since we were all here until 2 AM (que cruel, pero cierto)
- The project code name is renamed to ‘The Death March’
- “Oh, oh, and I almost forgot. Ahh, I’m also gonna need you to go ahead and come in on Sunday, too… thanks”
Podríamos agregar
- Cuando escuchas, “este es el último fin de semana que venimos”
- Estas tan harto de la pizza por la noche que la odias
- Recuerden que quien se esfuerce mas recibirá un bono por “mejor rendimiento”
- Comienzas a pensar que realmente es tu culpa que las cosas vayan tan mal
- Se modifican los requisitos 3 horas antes de una presentación a clientes potenciales
- Ves mas a tus compañeros desarrolladores que a tu familia, y no porque tengan mucha vida social
… creo que la lista es interminable, y lo peor es que sean basadas en la realidad.
>
Hacia tiempo que escribo algunas cosas técnicas que siento que no van en mi blog personal, y aunque desde que he pseudobloggeado he tenido ese debate interno entre que va y que no va, el orden de las cosas, a quien le interesa y a quien no, finalmente he hecho esto, un blog puramente técnico con lo poco que se de a lo que me dedico (desarrollo de software) y algunas otras cosas como sistemas operativos, casualidades, chismes del medio (a.k.a noticias), lo que si prometo es no hablar de bicicletas. Estaré portando los posts tecnicos que llegué a hacer en vonkinder-blog (tampoco son tantos) y que creo que ahi no van simplemente porque para quien según yo esta dirigido mi blog personal (familia y amigos), pienso que no les interesa totalmente que es el bytecode, el garbage collector o si tal o cual lenguaje va mejor para tal cosa. Así que bienvenido, tanto aquí como allá sientase libre de opinar, corregir cosas, tomar lo que gustes y cooperar si así lo deseas que para eso esta.
Bienvenido a este lugar que siempre estará en versión beta… de veras que nunca saldrá a producción, es mas nada debería salir.