viernes, 19 de junio de 2015

Resetear el usuario y password de admnistración en Weblogic

Es posible que en algún momento olvidemos cual es la clave de nuestro dominio en weblogic para resetear nuestro usuario y password se deben llevar a cabo unos sencillos pasos:

  1. En caso de encontrarse arrancado debemos parar el dominio.
  2. Renombrar la carpeta carpeta_dominio/server/data a  carpeta_dominio/server/data-old.
  3. Ejecutamos el script carpeta_dominio/bin/setDomainEnv
  4. Vamos a la carpeta: carepta_dominio/security
  5. Ejecutamos java weblogic.security.utils.AdminAccount <nombre_usuario> <clave>.
  6. Editamos el archivo carpeta_dominio/servers/AdminServer/security/boot.properties
  7. En dicho archivo cambiamos username=<nombre_usuario> y password=<clave>.
Arrancamos el servidor y ya tendremos cambiada la clave.

martes, 9 de junio de 2015

PL/SQL Oracle: "Warning: compiled but with compilation errors"

Es posible que no hayamos encontrado alguna que otra vez con este error cuando estamos creando un procedimiento o función en Oracle y que no nos muestra más información que la indicada en el título.
En estos casos lo que debemos hacer es ejecutar la siguiente sentencia SQL:
SELECT * FROM USER_ERRORS
En el resultado de esta consulta nos aparecerá el error por el cual no se ha compilado al que hace referencia el mensaje anterior.

martes, 28 de abril de 2015

Android - Usar una base de datos existente

Es normal que para nuestras aplicaciones queramos trabajar con una base de datos previamente creada con datos insertados. Los pasos a seguir serán los siguientes:
  1. Crear la base de datos SQLite e insertar los datos que queramos. Podeís usar para ello alguna herramienta como SQLite Studio.
  2. Copiamos la base de datos creada a la carpeta de nuestro proyecto Android assets.
  3. Ahora en la clase que vamos a usar para interactuar con la base de datos lo que se va a hacer es lo siguiente:
    1. Verificar si ya existe la base de datos. Si esto ociurre ya ha sido creada por lo que no será necesario crearla de nuevo. En este caso debemos tener en cuenta que la ruta a la base de datos de nuestra aplicación viene dada por "context.getApplicationInfo().dataDir + "/databases/" + DATABASE_NAME" tal y como podeís ver en el código de ejemplo.
    2. Si no existe simplemente copiaremos el archivo que previamente hemos colocado en la carpeta assets en la ruta vista con anterioridad.
A continuación tenéis el código de ejemplo:


package com.losga.pedidos.com.losga.db;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.content.res.AssetManager;
import android.util.Log;

import com.losga.pedidos.dto.Entity;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Timestamp;
import java.util.Arrays;
import java.util.Date;
import java.util.Scanner;

/**
 * Created by Luis J. L.G. 
 */
public class DBHelper extends SQLiteOpenHelper {

    private Context context;
 
    // Nombre de la base de datos
    private static final String DATABASE_NAME = "ljlg.db";
 
    // Ruta donde se encuntra la base de datos
    private static String path;

    private static final int DATABASE_VERSION = 1;

    public DBHelper(Context context)
    {
         super(context, DATABASE_NAME, null, DATABASE_VERSION);
         try {
             this.context = context;
             // Ruta donde va a estar la base de datos en Android
             path = context.getApplicationInfo().dataDir + "/databases/" + DATABASE_NAME;
             copyDB();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }

    @Override
    public void onCreate(SQLiteDatabase db) {
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }

    private void copyDB() throws IOException {

        // Verificar si ya existe la base de datos
        File dbArchivo = new File(path);
        if (!dbFile.exists()) {
            InputStream inputStream = context.getAssets().open("MiDB.db");
            // Se crea el archivo para la base de datos
            OutputStream outputStream = new FileOutputStream(path);
            byte[] buffer = new byte[4096];
            int length;
            while ((length = inputStream.read(buffer)) > 0) {
                outputStream.write(buffer, 0, length);
            }
            outputStream.flush();
            outputStream.close();
            inputStream.close();
        }
    }
}

lunes, 16 de febrero de 2015

Cisco anyconnect: "VPN ​Failed to initialize connection subsystem"

Hoy cuando me he ido a conectar a una VPN resulta que me he encontrado con el mensaje: "VPN ​Failed to initialize connection subsystem". 

Pues bien parece ser que el problema se produce debido a alguna de las útlimas actualizaciones de Windows 8. En mi caso Windows 8.1.

La solución es bastante sencilla en este caso: Nos vamos a la carpeta donde se encuentra instalado el programa que normalmente será "C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client" y aquí nos colocamos sobre "vpnui.exe" y pulsamos sobre "Solucionar problemas de compatibilidad" y posteriormente seleccionamos "Probar configuración recomendada". Con esto queda solucionado el problema.

lunes, 9 de febrero de 2015

Weblogic. Copiar dominios

Es muy común y sobre todo si nos dedicamos al desarrollo que en algún momento queramos duplicar un dominio de nuestro servidor de aplicaciones en otra máquina distinta, esto conlleva crear de nuevo todos los pool de conexiones, instalar aplicaciones, etc.

En el caso de WebLogic si en algún momento has intentado copiar directamente la carpeta del dominio esto no funciona.

Pero la solución es sencilla. Existen dos comandos pack y unpack que nos permiten crear una plantilla del dominio que deseemos, de modo que podamos posteriormente crear un nuevo dominio en el que se incluirá la configuración de nuestro dominio de origen y de las aplicaciones que se encuentren instaladas en el mismo.

Si ejecutamos el siguiente comando:

{ruta_servidor}\common\bin\pack -domain={ruta_servidor}\user_projects\domains\local -template={ruta_salida}\mi_dominio.jar -template_name=mi_domino -log=mi_log.log -log_priority=INFO

donde {ruta_servidor} será la ruta donde tengaos nuestro weblogic instalado y {ruta_salida} donde queremos que se genere la plantilla. 

Se nos generará un archivo mi_dominio.jar el cual ya podremos usar como plantilla para crear nuevos dominios. Para ello podemos usar el comando unpack.

unpack -template={rruta_donde_tengamos_la_plantilla}/mi_dominio.jar -domain={ruta_servidor}/user_projects/domains/nuevo_dominio




domingo, 18 de enero de 2015

Depuración remota en JAVA

Si deseamos depurar una aplicación java en un servidor remoto debemos de activar la depuración en remoto en la máquina virtual de java. Para ello sólo debemos de añadir las siguientes opciones de java:

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1277

-Xdebug indica a la máquina virtual que debe activar el modo depuración.

-Xrunjdwp <options> Nos permite definir las características de como se va a realizar la conexión.

Las opciones en este caso son:
  • transport=dt_socket. Indica que la conexión se va a realizar a através de un socket
  • address=1277. Le indica a la máquina virtual a través de que puerto debe escuchar.
  • suspend=n Si está puesto como as 'y' la JVM comienza en modo suspendido y espera en este modo hasta que nos conectemos para depurar.
Estas opciones debemos añadirlas en el arranque del servidor de aplicaciones sobre el que deseemos depurar.