Wednesday, December 18, 2013

Windows equivalence of "ps -ef | grep java" linux command

Dejo un comando muy util para matar procesos en Windows, es su similar en Linux.

wmic process where "name='java.exe'" get ProcessID, Commandline /format:list

Este es otro comando es para matar el proceso usando el ID, similar al "kill -9 ID".

taskkill /F /PID 827

Tuesday, November 5, 2013

Oracle BPA ServerSetting files configuration

Para usar Oracle BPA Repository tuve que realizar algunas configuraciones en los archivos que se encuentran en $BPA_HOME/server/config

En los siguientes archivos.


  • defaultServerSettings.cfg
  • userServerSettings.cfg
  • setupServerSettings.cgf
En seguida voy a poner el contenido de cada archivo:

defaultServerSettings.cfg




 
  
  
  STANDARDSRV
  
  
  
  STANDARD
    
    
  
    
    
     
     
     
     
     
     
     
     
     
      
      
      
      
     
     
     
      
     
     
     
      
     
     
     
     
    
    
    
    
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
 
 
 
    
   
    
    ${sys:aris.server.home}/jre 
    
    
    
    
     
    
     
     
     
     
     
     
     
     
     
     
    
      
     
      
           
     
    
   
    
    
    
     
    
    
    
    
    
    
    
    
    

  
  
    
    
    
    
    
    
    
    
    
    
    
     
     
    
    
    
    
    
    
    
      


  
    
    
    
    
    
    
    
    
    
    
  



  
    
    
    
    
    
    
    
    
 
  
    
    
    
    
    
    
    
    
 
 
    
    
 
   
    
    
  
    
  
    
  
  
    
    
    
  
   
  
    
    
         
     
 
 
      
    
  
    
    
    
    
     
     ${sys:aris.server.home}/..
    
    
    
    
    
    
    
    
    
    
   
  

  
    
    
    
    
   
  

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    


  
    
    
    
    
    
    
    
    
    
    
   
   
   
   
   
   
   
   
 
   
    
 
    
 
   
 
   
 
     
     
   
   
   
   
   


  
  
  
 
  
   
   
    
   
   
   
    
    
    
     
    
    
    
    
    
    
    
        
          
        
    
 
 
  
 
 
 
 
 
 
   
  512m
  
   server.bin.path=${sys:aris.server.home}
    server.start.cmd=y-simusrv.exe
  server.start.param="${sys:aris.server.home}/config/simusrv.cfg"
  server.run.path=${sys:aris.server.home}
    
  
   server.bin.path=${jre.path}/bin
      server.start.cmd=java
   server.start.param=-server -XX:MaxPermSize=92m -XX:NewRatio=2 -Djava.endorsed.dirs="${sys:aris.server.home}/simusrv/endorsed" -classpath "${sys:aris.server.home}/simusrv/y-simulationserver-3.jar" -Xrs com.idsscheer.simulationserver.core.AMain "${sys:aris.server.home}/config/simusrv.cfg"
   server.run.path=${sys:aris.server.home}
  
    
 
 
 
 
 
 
 
 
  e3123ece7f283400a988e2187080902811e87f5c
  4fa22348945ed26474789cf5683b9445d74fd181
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
    
 
 
 
 

 
    
 
 
 
 
 
 
 
 
 
 
    
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
    
    
    
    
    
    
    
    
    
    
    
 
    
    
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
    
  

 
     
 
 
 
 

    
 




userServerSettings.cfg


















setupServerSettings.cfg





 BS_SM

 


 


 1842m








 
  
 



Al terminar de editar los archivos hay que reiniciar el servicio del Repository.

Wednesday, October 9, 2013

BPEL 11g - Disabling the Auto recovery

En este blog encontre esta solucion interesante para deshabilitar el "Recovery" y evitar que las instancias de BPEL se queden en el estatus "Running".

http://www.albinsblog.com/2011/10/oracle-soa-suite-11g-disabling-auto.html#.UlWnNVC3_Al



Scenario 1:Auto Recovery only for sync process.

  1. In the navigator, right click "soa-infra" and select "SOA Administration Common Properties" Advanced More SOA Infra advanced Configuration Properties
  2. In the Name Column, click GlobalTxMaxRetry (The maximum of times  a GLOBAL_RETRY FabricInvocationException can be retried before bubbling up)
  3. Set GlobalTxMaxRetry = 0 (Default : 2)
  4. Similary, GlobalTxRetryInterval (The number of seconds between retries in the case of GLOBAL_RETRY FabricInvocationException) Set GlobalTxRetryInterval = 0 (Default : 3)


Scenario 2: Disabling recovery attempts for faulted instances.
1. Log in to Oracle Enterprise Manager Fusion Middleware Control.
2. Right-click soa-infra.
3. Select SOA Administration > BPEL Properties.
4. Click More BPEL Configuration Properties.
5. In the Name column, click RecoveryConfig.
6. Expand RecurringScheduleConfig.
7. Set the following properties to values and click Apply.
maxMessageRaiseSize =0
8. Expand StartupScheduleConfig, respectively.
9. Set the following properties to values and click Apply.
maxMessageRaiseSize=0




Friday, September 27, 2013

Configuring JMS Distributed Queue step by step!

Enseguida voy a mostrar como crear una cola distribuidas las cuales se utilizan en ambientes del tipo CLUSTER.

Despues de ingresar a nuestra consola de Weblogic nos dirigimos a la ruta "Services/JMS Modules", si estamos en ambiente productivo bloqueamos la sesion.


Haciendo clic en el boton "New" procedemos a crear primeramente nuestro modulo el cual contendra nuestra fabrica de coneccion y nuestras colas.


Nombramos nuestro modulo, en mi caso lo llamare "MyJMSModule" y hacemos clic en el boton "Next".


Antes de finalizar seleccionamos el "check box" como se muestra en la imagen y presionamos el boton "Finish".


Ahora procedemos a activar la sesion para guardar esta configuracion.



A continuacion se muestra el modulo que acabamos de crear.



El siguiente paso es dar clic al modulo que acabamos de crear y procedemos a crear el "Subdeployment" antes de comenzara crear la fabrica de conexiones y nuestra cola. Para esto nos dirigimos al tab "Subdeployments" y hacemos clic en el boton "New".


Nombramos nuestro subdeployment, en este caso yo lo llamare "MyQueue" y hacemos clic en el boton "New".



En la siguiente pantalla tenemos que seleccionar los "Targets", en este paso vamos a reutilizar unos previamente configurados con la instalacion de SOA en el servidor de nombre "SOAJMSServer" en este caso encontramos uno por cada instancia configurada en el ambiente CLUSTER y las seleccionamos para finalizar haciendo clic en el boton "Finish".


Ahora procedemos a activar la sesion para guardar esta configuracion.


Bien, ahora podemos proceder a la creacion de la "Fabrica de Conexiones" que usara nuestra Cola, para esto dentro del modulo que creamos nos dirigimos al tab "Configuration".

Volvemos a activar la sesion.



Y damos clic al boton "New".



En esta pantalla tenemos que seleccionar "Connection Factory" y damos clic al boton "Next".


Ahora procedemos a nombrar este recurso en el cual en este ejemplo nombre lo siguiente:

Name: MyQueueCF
JNDI Name: jms/MyQueueCF

Y realizamos clic al boton "Next".


En la siguiente pantalla damos clic al boton "Advanced Targeting" el cual nos permetira seleccionar el "Subdeployment" previamente creado el cual nos permite apuntar los Server correspondientes.


Seleccionamos el "Subdeployment" anteriormente creado.


En seguida nos aparecera una lista de los Servers en los cuales estan previamente seleccionados segun la configuracion realizada en el "Subdeployment" anteriormente creado.


Damos clic en el boton "Finish" y activamos la sesion para guardar los cambios.


Una vez creada la Fabrica de Conexion procedemos a crear nuestra cola, para esto nos dirigimos al tab "Configuration" dentro de nuestro modulo creamos y tambien nos encontraremos la Frabrica de Conexion anteriormente creada.

Antes de comenzar actuvamos la sesion.



Hacemos clic en el boton "New".





En esta pantalla tenemos que seleccionar "Distributed Queue" y damos clic al boton "Next".


Ahora procedemos a nombrar este recurso en el cual en este ejemplo nombre lo siguiente:

Name: MyQueue
JNDI Name: jms/MyQueue

Y realizamos clic al boton "Next".


En la siguiente pantalla damos clic al boton "Advanced Targeting" el cual nos permetira seleccionar el "Subdeployment" previamente creado el cual nos permite apuntar los Server correspondientes.


Seleccionamos el "Subdeployment" anteriormente creado.


En seguida nos aparecera una lista de los Servers en los cuales estan previamente seleccionados segun la configuracion realizada en el "Subdeployment" anteriormente creado.


Damos clic en el boton "Finish" y activamos la sesion para guardar los cambios.


Ahora que terminamos de crear nuestra Queue podemos revisar si se ha creado correctamente,  para esto nos dirigimos al modulo donde se encuentra y seleccionamos "MyQueue" y buscamos el tab llamado "Monitoring" lo seleccionamos y nos debe de mostrar las Queue's activas una por cada instancia de SOA en nuestro ambiente de CLUSTER.


gl hf^^

Monday, September 23, 2013

Enable ANT for AIA manually

Para poder habilitar ANT y usar los comandos de AIA, este producto ya viene con la instalacion y para habilitarlo manualmente se tiene que configurar las variables de ambiente. Para efectos practivos se puede ejecutar el archivo setenv.cmd

Las librerias de ANT las localizamos en el siguiente directorio:

$MW_HOME\modules\org.apache.ant_1.7.1

$MW_HOME es el directorio donde se installo FMW 11g.

Ahora que agregar las siguientes variables de ambiente:

ANT_OPTS="-Xms512m -Xmx1024m -XX:MaxPermSize=512m"

ANT_HOME=${MW_HOME}/modules/org.apache.ant_<version number>

Si estamos en linux agregamos las variables anteriores dentro del perfil


vi .bash_profile


Si estamos en windows quedaria de esta manera:




Nota: Si estamos en windows recomiendo que pongan la ruta completa y no hagan referencias a variables por ejemplo

ANT_HOME=%MW_HOME%/modules/org.apache.ant_<version number>

No me funciono y no supe como corregirlo.

Tambien hay que agregar la ruta a la variable PATH

%MW_HOME%/bin

Ahora vamos a revisar si esta funcionando ejecutando el comando "ant-version"




Nota: Despues de agregar las variables tenemos que hacer "logout" de la sesion y entrar de nuevo.

GL!

Tuesday, September 3, 2013

Weblogic config.sh "No such file or directory"

Me he topado con el siguiente error en la version de Weblogic 11.1.1.7 usando Oracle Linux 6, en el cual al intentar realizar la configuracion para la instalacion de SOA Suite.

Lo primero que intente realizar fue configurar la variable de ambiente JAVA_HOME con JRockit pero no funciono, me seguia apareciendo el siguiente error.

Buscando en archivos de Weblogic que actualizan estas variables de ambiente encontre el error.

La solucion esta en modificar el siguiente archivo que se encuentra en "$SOA_HOME/wl_server_10.3/common/bin/commEnv.sh":


Buscamos la linea donde se encuentra la variable JAVA_HOME y la cambiamos por nuestra actual ruta que deseamos usar.


Bien, ahora ya podemos ejecutar sin ningun problema la configuracion.

gl hf!

Tuesday, June 11, 2013

Populating type table

El siguiente script de PL SQL muestra un ejemplo de como llenar una colección de tipo tabla, en la cual se definen puros tipos de datos simples.
DECLARE

  V_LIST AP_OTM_IF_TBL_T := AP_OTM_IF_TBL_T();
  V_LINE1 AP_OTM_IF_T :=    AP_OTM_IF_T(1,1,'n',SYSDATE,SYSDATE,'N','N','N',1,'N','N',1,SYSDATE,'N','N',1,1,'N','N',1,SYSDATE,1,1,SYSDATE,'N',1,1);

  V_RES CHAR(20) :='N';
BEGIN
  V_LIST.extend();
  V_LIST(V_LIST.count()) := V_LINE1;
  DBMS_OUTPUT.PUT_LINE('COUNT = ' || V_LIST.count());
  SOA_AP_INVOICES_IF_INPUT.SEND_VOUCHER(V_LIST,V_RES);
   
DBMS_OUTPUT.PUT_LINE('V_RESULT = ' || V_RES);

END;


Este es otro ejemplo de como poblar un objeto de tipo tabla usando BULK COLLECT INTO.
set serveroutput on;

DECLARE
  V_DATE_FORMAT varchar2(50) := 'DD-MON-YYYY';
  v_date varchar2(50) := '11-DEC-2013';
  v_eexp_list SWC_FA_EEXP_IFACE_TBL_T := SWC_FA_EEXP_IFACE_TBL_T();
BEGIN

select 
SWC_FA_EEXP_IFACE_T (ADMIN_REVIEWED,    
  APPROVER_TEMPLATE_PHASE,   
  APP_ID,         
  BRIEF_DESC,  
  CHANGED_BY,  
  COST_CENTER,   
  DATE_CHANGED,           
  DATE_CREATED,           
  DIVISION,    
  DIV_NAME,   
  DIV_ID,         
  LONG_DESC, 
  ORIGINATING_LOCATION,  
  PRIME_ACCOUNT,   
  PRIOR_REQUEST,    
  PRIOR_REQUEST_AMT,         
  PROJECT,   
  REQUEST_ID,         
  REQUEST_STATUS,    
  REVISED_TOTAL_AMT,         
  SENT_TO_ONBASE,           
  SITE_CITY_OTHER,   
  SITE_ID,         
  SITE_NUM_OTHER,   
  SITE_STATE_OTHER,    
  SUB_ACCOUNT,    
  SUPPORT_MAILED,    
  TOTAL_COST_AMT ,         
  DATE_APPROVED)
BULK COLLECT INTO v_eexp_list from swc_fa_eexp_v where TO_CHAR(date_created,V_DATE_FORMAT) = v_date and request_status IN ('A', 'D');
  dbms_output.put_line('COUNT: ' || v_eexp_list.count());

END;

Monday, May 27, 2013

How to "select count(*) from table" with oraext:query-database

Me ha pasado que al intentar usar un query con la funcion de XPATH oraext:query-database, me marca error.

Estoy queriendo usar un simple "select count(*) from tabla".

Encontre que para poder realizar este count dentro de la expresión es ejecutar algo como se muestra:


oraext:query-database(concat('select count(no_viaje) as count FROM xbol.xxdi_map_ap_otm_interface WHERE no_viaje = ',$noViaje,' and line_id is not null'),true(),true(),'jdbc/ebs')

Como se observa, se ocupa poner un alias al campo en la cosulta, de paso también especifique un campo dentro del count y funciono.

gg hf!

Tuesday, April 30, 2013

Jndi Name is null or empty ERROR FIXED

Ahora me he encontrado con la siguiente excepción:


weblogic.connector.exception.RAException: Jndi Name is null or empty.

La cual nos impide realizar despliegues en la consola de BPEL puesto que el aplicativo DBAdapter.rar se encuentra inhabilitado.

Para solucionar este problema se tiene que ejecutar lo siguiente:

  1. Borrar el adaptador de aplicaciones "DbAdapter" desde la consola de Weblogic.
  2. Reinstalar el componente desde la consola de Weblogic usando el botón "Install".

Nota: Esta solución necesitara crear nuevamente el archivo Plan.xml por lo tanto hay que respaldar todas las configuraciones de fabrica de conexion ej. eis/DB/test




Tuesday, April 23, 2013

Customizing JVM Weblogic/SOA resources

Actualizando el archivo de configuracion para iniciar weblogic y el modulo de soa tenemos el siguiente apoyo:

if [ "${SERVER_NAME}" = "soa_server1" ]; then
 DEFAULT_MEM_ARGS="-Xms768m -Xmx1536m"
 PORT_MEM_ARGS="-Xms768m -Xmx1536m" 
else
 DEFAULT_MEM_ARGS="-Xms256m -Xmx512m"
 PORT_MEM_ARGS="-Xms256m -Xmx512m" 
fi
 

Thursday, April 4, 2013

Java singleton sample

Ejemplo de como implementar el patron de diseño "Singleton".
    private synchronized static void createInstance(){
        if(INSTANCE == null){
          INSTANCE = new StockCountMRG();
        }
    }
    
    public static StockCountMRG getInstance(){
      createInstance();
      return INSTANCE;
    }

How to build a XSD property-value?


A continuacion se muestra un ejemplo de un XSD para poder establecer una estructura de (property-value).
 
  
   
    
   
  
 
 
  
   
    
     
      
       
      
     
    
   
  
   
  
  
 
 
    
      
        
        
      
    

XML de Ejemplo:


  
    Valor
  


Thursday, March 28, 2013

How to get parameters from WF_BPEL_QTAB?

Con este query podemos obtener el valor del parametro deseado a partir del event_key que normalmente nos da una ejecución de un "Evento de Negocio".


SELECT   q.q_name
,        q.msgid
,        q.state
,        TO_CHAR(q.enq_time,'DD-MON-YYYY HH24:MI:SS') "ENQ_TIME"
,        q.user_data.event_name "EVENT_NAME"
,        (select value from table(q.user_data.getParameterList()) where name='CUSTOMER_PRODUCT_ID') instance_id
FROM     WF_BPEL_QTAB q
WHERE   1=1
and q.user_data.event_key = 'oracle.apps.csi.instance.update3451'

En este escenario estamos probando el busines event de ""Install Base" de update en el cual obtenemos el instance_ide (id del item) el cual nos va a permitir poder acceder a su información completa.

Wednesday, March 6, 2013

How to query collections types in PL SQL

Tenemos definido los siguientes objetos type:


 CREATE OR REPLACE TYPE "SOAADM"."AP_INVOICES_IF_T" AS OBJECT (
 INVOICE_ID NUMBER,
 INVOICE_NUM VARCHAR2(50 BYTE),
 INVOICE_TYPE_LOOKUP_CODE VARCHAR2(25 BYTE),
 INVOICE_DATE DATE,
 VENDOR_ID NUMBER
 )

 CREATE OR REPLACE TYPE "SOAADM"."AP_INVOICES_IF_TBL_T" AS TABLE OF AP_INVOICES_IF_T;


Ahora probamos con el siguiente script como saber si se pobló de manera correcta:
declare
  v_ap_if_tbl AP_INVOICES_IF_TBL_T;
  v_ap_if_t AP_INVOICES_IF_T;
  v_count number;
begin
  v_ap_if_t.INVOICE_ID:=1;
  v_ap_if_tbl := AP_INVOICES_IF_TBL_T(v_ap_if_t);
  select count(*) into v_count from table(cast(v_ap_if_tbl as AP_INVOICES_IF_TBL_T);
  dbms_output.put_line('length: '||v_count);
end;

Monday, February 11, 2013

Creating deployment plan for EJB 3.0

Para crear el "Deployment plan" hay que dar clic derecho a nuestro proyecto como se muestra en la figura y elegir "New Deployment Profile"


Nos aparece una galería de tecnologías y elegimos la que dice "EJB JAR File".



Y nombramos nuestro "Deployment Profile".



Nos aparecerá la siguiente pantalla y solamente presionamos el botón "Ok".


Bien, ahora ya es posible desplegar el EJB en nuestro servidor de Weblogic haciendo clic derecho a nuestro proyecto y en "Deploy".

hf gl!

How to make an EJB 3.0 with JDeveloper

A continuación se muestra como crear un EJB 3.0 usando el wizard del JDeveloper 11.1.1.4.

Primero creamos nuestro proyecto como se muestra en la imagen.



En la siguiente pantalla elegimos el tipo de proyecto "Generic Project".



Después definimos el nombre del proyecto, en este caso lo llamaremos "EJBsample" y presionamos el botón "Finish".



Ahora vamos a crear un EJB haciendo clic derecho en el proyecto que acabamos de crear y en el menú elegimos "New".



Y después buscamos en la galería "Session Bean" el cual se refiere a nuestro EJB Bean que usaremos del tipo "Stateless".



Definimos la versión del EJB 3.0.



Ahora procedemos a darle nombre a nuestro EJB y renombramos el nombre con el cual sera mapeado en nuestro servidor de Weblogic una vez desplegado.



Y después renombramos el nombre del Bean que va a contener nuestro EJB como se muestra en la imagen.



Ahora en los tipos de interfase seleccionamos solamente la interfaz remota ya que nuestro objetivo es exponer nuestro EJB para que sea invocado desde cualquier lugar.



Finalmente presionamos el botón "Finish".



Bien, ahora que tenemos nuestro EJB listo falta crear algunos métodos los cuales expondrá nuestro EJB para que sean invocados.

Procedemos a modificar nuestra interfaz remota y agregamos un método para concatenar String's.



Finalmente implementamos nuestro método que acabamos de definir en nuestra interfaz remota como se muestra en la imagen.




gl hf!

Friday, February 8, 2013

How to build a JAR Client for EJB´s

Ahora veremos como generar un JAR para crear un cliente de EJB.

Damos clic derecho en nuestro proyecto de EJB en JDeveloper y en el siguiente menú elegimos "Project Properties"



En la siguiente pantalla nos dirigimos en el menú al apartado de "Deployments" como se muestra en la imagén y presionamos el botón "New".




A continuación seleccionamos que el archivo que deseamos generar es del tipo "JAR" y nombramos nuestro archivo.



Después hay que filtrar los objetos que no ocupamos en nuestro archivo "JAR", dejamos solamente la interfaz remota de nuestro EJB.




Bien, ahora ya podemos generar nuestra librería que usara nuestro cliente.

Nos vamos en el apartado de "Deploy" en nuestro proyecto y seleccionamos nuestro plan de despliegue que acabamos de crear.



Ya podemos hacer uso del "JAR" como se puede ver en el log.




gl hf^^