Showing posts with label jdeveloper. Show all posts
Showing posts with label jdeveloper. Show all posts

20 April 2015

jenkins ojdeploy plugin - Version 2

Hace no mucho tiempo publique un plugin para jenkins, que hace un wrapper sobre el OJDeploy para compilar proyectos de JDeveloper (probado principalmente con Oracle ADF). Esta es la segunda versión se ha hecho algunos cambios como:
  • Se ha pasado de Google Code a GitHub.
  • Se ha mejorardo la interfaz gráfica:
    • En la configuración global, se pueden registrar muchos directorios middleware de diferentes versiones.
    • En la configuración de cada job, por cada workspace/proyecto configurado, se puede indicar si queremos habilitar/deshabilitar su ejecución.
Instalación desde línea de comandos Para instalar el plugin hay que descargar el código y generar el fichero de instalación de jenkins utilizando Maven, una vez generado procedemos a instalarlo.
  1. git clone https://github.com/Emmerson-Miranda/jenkins-jdeveloper-ojdeploy.git
  2. cd jenkins-jdeveloper-ojdeploy
  3. mvn clean package
  4. El plugin para instalar en jenkins, estará en la carpeta target\ojdeploy.hpi y hay que instalarlo desde su consola web.
Enlaces relacionados:

09 July 2014

oracle.jbo.dt.objects.JboException: Illegal name. It is either a reserved word or an object of the given name already exists within the project.

Problema: JDeveloper de buenas a primeras muestra el siguiente mensaje error:
oracle.jbo.dt.objects.JboException: Illegal name.  It is either a reserved word or an object of the given name already exists within the project.



Solución:

En este caso, buscar en el fichero *.jpr el elemento "jbo.JpxName" y corregir su valor.

- FIN - 

07 April 2014

jenkins ojdeploy plugin

Normalmente para compilar proyectos ADF en jenkins se suelen usar Ant o Maven, lo cual requiere crear dichos ficheros y configurarlos correctamente para resolver las dependencias, además de mantenerlos cuando la configuración de una aplicación cambia (por ejemplo se añade un nuevo módulo o dependencias a librerías de terceros).

Este plugin de jenkins simplemente ejecuta la herramienta ojdeploy usando la configuración hecha con jdeveloper sobre la aplicación en la cual se desea trabajar, tampoco hace ningún tipo de gestión de dependencias al estilo Maven o Ivy, ya que ese tipo de información la obtiene la herramienta de la descripción de los proyectos (ficheros jws/jpr).

Instalación

Descargar el plugin de https://code.google.com/p/jenkins-ojdeploy-plugin/source/browse/trunk/target/ojdeploy.hpi y que clickar en "view raw file" (cuando se descarga se puede descargar como ojdeploy.zip, en ese caso una vez descargado hay que renombrarlo a ojdeploy.hpi)

Una vez descargado, hay instalar el plugin en jenkins, subiendo el fichero hpi descargado.


Luego reiniciar jenkins.

Verificar que el plugin aparece en el listado de plugins instalados.



Utilización
Dentro de un job añadir un nuevo paso ("step") y seleccionar "JDeveloper ojdeploy"

Luego introducir los datos del formulario.

Ahora cuando se ejecuta la tarea, podemos ver la salida del ojdeploy por la consola de jenkins y al final sabremos si el proceso a ido bien o mal.

En el historico de ejecuciones de la tarea se puede observar aquellas que han ido bien o mal.



- FIN -

21 December 2013

Exportando e importando un dominio Weblogic

Para recrear un entorno de desarrollo, cada desarrollador se configura datasources, nodos, realms, colas.... y todo esto toma su tiempo; este tiempo es mayor según la complejidad de la solución a desarrollar, y esto sucede cada vez que el entorno se corrompe o se tiene que recrear en otra máquina.

Una alternativa para ahorrar ese coste de tiempo, una vez configurado un dominio con todo lo necesario, es utilizar las utilidades pack y unpack que WL trae consigo.

Un ejemplo de del comando pack es:
D:\Oracle\Middleware\wlserver_10.3\common\bin>pack -domain="D:\XXX\YYY\JDev111170\system11.1.1.7.40.64.93\DefaultDomain" -template="D:\mydo
main_desa.jar" -template_name="WLS DOMAIN DESA" -log="D:\mydomain_desa.log" -log_priority=INFO
NOTA: En una situación standard los certificados digitales no se incorporán dentro del export y hay que hacerlo manualmente.

Enlaces relacionados:


- FIN -

06 October 2013

Integrando TortoiseSVN y JDeveloper

JDeveloper es una herramienta que ofrece integración con SVN, pero en mi caso prefiero utilizar TortoiseSVN en lugar de la funcionalidad integrada, lo cual suele ser algo incomodo al momento de trabajar con SVN ya que hay que ir por el explorador de ficheros.

Por suerte JDev tiene un apartado que ofrece integración con herramientas externas y es alli donde podemos integrar estas dos aplicaciones; al menos las operaciones mas usadas.

En la siguiente imagen se ve el resultado de integrar la funcionalidad de compare, update, log y revert.

Para registrar Tortoise como herramienta externa hay que ir a Tools->External Tools->New y elegir programa externo.

Luego como ejecutable hay que escribir el nombre del fichero exe de Tortoise y despues el comando que deseamos ejecutar (en la siguiente imagen se especifica que se ejecutara el comando diff)

En el siguiente paso especificamos en que lugares deseamos que aparezca este registro.

Finalmente continuamos hasta finalizar el asistente.

Los argumentos para las operaciones de "comparar con la última versión", actualizar, "ver historico de log" y deshacer son:
  • /command:diff /path:${file.path}
  • /command:update /closeonend:0 /path:${file.path}
  • /command:log /closeonend:0 /path:${file.path} 
  • /command:revert /closeonend:0 /path:${file.path}


Enlaces relacionados:
- FIN -

16 August 2013

Como cambiar el directorio de trabajo de JDeveloper


En el fichero MIDDLEWARE_INSTALL_DIR\jdeveloper\jdev\bin\jdev.boot hay que registrar nuestra carpeta que deseamos utilizar:

#Emmerson - cambiando el home directory para JDeveloper
ide.user.dir=D:/XXX/YYY/JDev111170
A partir de este momento, tanto los ficheros propios de la personalización de Jdev como los del "Servidor Weblogic Integrado" se ubicaran en esta carpeta y dejaremos de utilizar la carpeta "%APPDATA%\jdeveloper".

Nota: Contrariamamente a lo que dicta la documentación el tipo de barras que me ha funcionado en windows 7 correctamente es "/".

Enlaces relacionados:

- FIN -

03 August 2013

Mejorando el tiempo de compilación de proyectos ADF

Normalmente la compilación de proyectos en aplicaciones medianamente grandes suele ser un proceso costoso, y uno de los motivos es por que se realizan varias operaciones de lectura/escritura de ficheros en disco.

Si al menos las operaciones de escritura de ficheros resultantes de la compilación se hiciera en memoria RAM, el tiempo de proceso se reduciria. Para lograr este objetivo deberiamos apuntar la propiedad "output directory" a una carpeta dentro de unidad de disco RAM.

Para crear una unidad de disco RAM(J:) en este caso he utilizado la herramienta "RAM Disk" y le he asignado 2Gb de memoria RAM.


Posteriorme basta con configurar el "output directory" de cada proyecto que compone nuestra aplicación ADF, para que utilicen esta unidad de disco (J:).


Con esta técnica y dependiendo del tamaño del proyecto, he logrado en algunos casos un ahorro de un 40% de tiempo, aunque en proyectos pequeños, la diferencia es imperceptible.

- FIN -

23 April 2013

Integrando WinMerge con JDeveloper

Como es sabido WinMerge es una herramienta que permite comparar directorios y ficheros, la idea de este post es ver como integrar esta herramienta con JDeveloper para comparar el fichero que estoy editando con otro ubicado en otro proyecto, pero que conserva la misma estructura y nombre de fichero.

Lo primero que se va a crear es un fichero bat para lanzar WinMerge pasandole la ruta completa del fichero que se esta editando, se supone que el fichero con el que se comparará esta en una ruta similar, por eso se reemplaza la carpeta raiz del fichero actual (derecha) con la del fichero origen(izquierda), para posteriormente invocar WinMergeU.exe pasandole ambas direcciones.


Ahora toca configurar JDeveloper añadiendo una "external tool", pasandole como argumento la la ruta completa del fichero actual.


Activamos los sitios en los cuales será visible la herramienta externa.


Al final del proceso, podremos ver como se ha creado nuestro registro de herramienta externa.
 

A partir de este momento cada vez que invoquemos la herramienta "Winmerge" se abrirá WinMerge, con el fichero actual, y el fichero de la otra ruta, siempre y cuando exista.

Enlaces relacionados:
- FIN-

07 February 2013

JDeveloper 11g se queda colgado cuando lo inicio

Hace ya mucho tiempo de esto, pero hoy me ha vuelto a ocurrir, JDeveloper se me cuelga cuando lo inicio, justamente en la fase de "Restoring editors".


La mayoría de las soluciones pasan por borrar el directorio %APPDATA%\JDeveloper, pero esta vez no estaba dispuesto a pasar por ese trance ya que eso trae efectos colaterales, como reconfigurar el WL de desarrollo :-) así, decidí dar con el problema y la solución.

El problema:
Resulta que durante la sincronización de ficheros con el SVN el merge de uno de ellos se hizo mal, y un fichero *PageDef.xml quedo "mal formado", posteriormente se cerré JDeveloper (con ese fichero PageDef abierto en el editor) y se volvió a abrir, obtenido el dichoso cuelgue durante la fase de "Restoring editors".

La solución:
Editar el fichero %APPDATA%\JDeveloper\system11.1.2.1.38.60.81\o.ide\windowinglayout.xml y borrar el contenido del tag editorPositions.
Nota: antes de abrir nuevamente el fichero con JDeveloper lo corregí con otro editor XML.

-FIN-

01 February 2013

Cláusula IN en ADF BC ViewObjects

La clausula IN de las sentencias Select no esta soportada por los asistentes de jdeveloper, a día de hoy la forma de hacer una cláusula IN es mediante código.

El siguiente snippet crea un ViewCriteria de un VO que genera la sentencia IN.

ViewCriteria vc1 = view.createViewCriteria();
vc1.setName("usuarioSearchCriteria");
...
ViewCriteriaRow inRolCondition = vc1.createViewCriteriaRow();
inRolCondition.setAttribute("rol", " IN (" + roles + ")");
inRolCondition.setConjunction(ViewCriteriaRow.VC_CONJ_AND);
...
vc1.add(inRolCondition);
view.applyViewCriteria(vc1);

En este caso la variable roles es un string, cuyos valores estan separados por comas (Por ejemplo: "rol1,rol2,rol3"), el framework se encarda de detectar el tipo de datos y generar la sentencia select correctamente.

Tambien se puede hacer algo similar sobre-escribiendo el método getCriteriaItemClause de los VO.

Enlaces relacionados: 
- FIN -

08 February 2012

Como volver a crear el DefaultDomain con JDeveloper

Lo primero es borrar el la carpeta de usuario ubicada en %USERPROFILE%\AppData\Roaming\JDeveloper (en Windows7), luego basta con volver a abrir JDeveloper e intentar iniciar nuevamente el servidor (Run->Star Server Instance (IntegratedWeblogicServer))



- FIN -

23 January 2012

Ocultando Bounded Task Flows en adfLibs

Por definición las librerias ADF, estan compuestas de un conjunto de Task Flows que interactuan unos con otros, pero hay ocasiones en que ciertos BTF son de uso interno y no interesa que se puedan utilizar directamente desde las aplicaciones que las referencian; es decir ocultarlos.

Para ocultar un task flow, en el hay que hacer los siguientes pasos:
  1. Añadir un fichero manifest al perfil de despliegue adflib del proyecto.
  2. En la entrada Bundle-Classes se apunta a un fichero properties que debe estar en la raiz de la carpeta src del proyecto.
  3. En el fichero properties hay que registrar el TF interno con la propiedad visible a false.
ADF_TaskFlow|WEB-INF/TFInterno.xml#TFInterno.visible=false

- FIN -

13 January 2012

Weblogic ClassCastException EmbeddedLDAP.start

Entorno: JDeveloper sobre Ubuntu

Traza del error:
<...7:43:58 PM CET> <Critical> <WebLogicServer> <BEA-000362> <Server failed. Reason:

There are 1 nested errors:

java.lang.ClassCastException: com.octetstring.vde.backend.BackendRoot cannot be cast to com.octetstring.vde.backend.standard.BackendStandard
at weblogic.ldap.EmbeddedLDAP.start(EmbeddedLDAP.java:303)
at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

>
<... 7:44:08 PM CET> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to FAILED>

Solución: En los foros de oracle se habla sobre borrar una carpeta llamada ldap dentro del dominio, entre otras, la mía fue borrar el directorio ".jdeveloper" de mi perfil de usuario y se acabo el problema :-)

- FIN -

24 July 2011

JBO-33005: Configuration AppModuleLocal is not found.

Lo primero, este tipo de fallos sale cuando se desarrolla con ADF + JDeveloper, en este caso 11g.


Después de cambiar los nombres de las configuraciones de un módulo de aplicación en el proyecto model, al volver a ejecutar la aplicación dió el siguiente mensaje de error:


<Utils><buildFacesMessage> ADF: Adding the following JSF error message: Configuration AppModuleLocal is not found.
oracle.jbo.ConfigException: JBO-33005: Configuration AppModuleLocal is not found.
at oracle.jbo.client.Configuration.getConfiguration(Configuration.java:570)
at oracle.jbo.common.ampool.PoolMgr.createPool(PoolMgr.java:328)
at oracle.jbo.common.ampool.PoolMgr.findPool(PoolMgr.java:587)

Es decir, que después de renombrar las configuraciones, JDeveloper no actualizo las dependencias asociadas.

Solución:

En el fichero proyecto->ViewController->adfmsrc->view->DataBindings.cpx hay que actualizar el nombre de la configuración a la que se hace referencia, por defecto llamada AppModuleLocal por el nombre de la configuración que se desea utilizar, en mi caso AppModule-DataSource.




- FIN -

23 March 2011

Consumir WebServices sobre HTTPS con ADF

A grandes rasgos, lo primero, para poder hacer esto, es obtener e instalar el certificado del servidor del cual se consumiran los servicios, luego hay que registrar dicho certificado en el keystore de la JVM que esta usando JDeveloper y en  el keystore del servidor weblogic de desarrollo que viene con JDeveloper.



Para saber la ubicación de la JVM que usa JDev lo podemos ver en el fichero de configuración jdev.conf:

/usr/Oracle/Middleware/jdeveloper/jdev/bin$ gedit jdev.conf

Es la linea => SetJavaHome /usr/java/jrockit-jdk1.6.0_20-R28.1.0-4.0.1



Sabiendo ahora la ubicación de la JDK, en su keystore hay que instalar el certificado del servidor https al cual nos conectaremos ("svn.servidor.es.cert" sera el nombre del fichero físico con el certificado, la contraseña por defecto es "changeit")

emmerson@emmerson-laptop:/usr/java/jrockit-jdk1.6.0_20-R28.1.0-4.0.1/jre/lib/security$ sudo keytool -importcert -file svn.servidor.es.cert -alias myAliasRoot -keystore cacerts -trustcacerts



Ahora solo queda instalar el certificado en el keystore del servidor weblogic; la ubicación del keystore se puede obtener desde la consola de administración del mismo (en el caso del servidor integrado de JDev http://localhosto:7101/console) DefaultDomain >Resumen de Servidores >DefaultServer -> Almacén de claves

emmerson@emmerson-laptop:/usr/java/jrockit-jdk1.6.0_20-R28.1.0-4.0.1/jre/lib/security$ sudo keytool -importcert -file svn.servidor.es.cert -alias myAliasRoot -keystore /usr/Oracle/Middleware/wlserver_10.3/server/lib/DemoTrust.jks -trustcacerts

La contraseña por defecto para esta keystore es "DemoTrustKeyStorePassPhrase".

Ahora ya se pueden generar y probar los stubs del ws que queremos utilizar.

- FIN -

20 January 2011

Personalizando la generación de ADF BC en JDeveloper

Con la configuración por defecto de JDeveloper al generar los "Business Components from tables", mete todos los artefactos generados en la misma carpeta (entities, views, associations....), y ciertamente si vas a trabajar con tres tablas no incomoda mucho;  pero si vas a trabajar con varias (la mayoría de veces) incomoda muchísimo ver todos los artefactos al momento de buscar una entidad o una vista.

JDeveloper brinda la posibilidad de personalizar determinados aspectos de la generación de los "Business Components", entre ellos los paquetes específicos para cada tipo de artefacto generado.

Tools -> Preferences -> Business Components -> Packages



- FIN -

17 November 2010

Video JDeveloper 11g

Interesante video que muestra como crear una aplicación simple con JDeveloper 11g, pasa desde el acceso a base de datos, creacion de EJBs de session y de páginas con ADF.




- FIN-