martes, 28 de mayo de 2013

Como aplicar un fixpack a WebSphere Portal 7

Primero deben de bajarse el update Installer para el WebSphere Portal Server 7 para su SO en la pagina de IBM.

Se van a la ruta donde se encuentra instalado el portal server:
/opt/IBM/WebSphere/PortalServer

Crean la carpeta update, se cambian a ese directorio, mueven su archivo tar y lo descomprimen ahi:

mkdir update
cd update
mv /home/javier/Downloads/7.0-WP-UpdateInstaller-Linux-x86.tar .
tar xvf 7.0-WP-UpdateInstaller-Linux-x86.tar

Ahora crean dos directorios, bajo update: fixes y fixpacks:

mkdir fixes
mkdir fixpacks

Ahora copian al directorio de fixpacks los archivos fixpack y al directorio fixes los cumulative fixes.

Unzipean el fixpack

unzip 7.0.0-WP-Multi-FP001.zip

Y ponen el archivo WP_PTF_7001.ptflist en el directorio de fixes:

mv /home/javier/Downloads/WP_PTF_7001.ptflist .

Ponen la variable de entorno de WAS_HOME para que el instalador no llore:

export WAS_HOME=/opt/IBM/WebSphere/AppServer

Hay que abrir el siguiente archivo y modificar lo siguiente:

vi /opt/IBM/WebSphere/wp_profile/ConfigEngine/properties/wkplc.properties

WasPassword=ReplaceWithYourPwd  #Linea 156
PortalAdminPwd=ReplaceWithYourPwd #Linea 351

Luego ejecutan el siguiente comando:

./updatePortal.sh -fixpack -installDir "/opt/IBM/WebSphere/PortalServer" -fixpackDir "/opt/IBM/WebSphere/PortalServer/update/fixpacks" -install -fixpackID WP_PTF_7001
*el fixpackID viene en el archivo .ptflist , en mi caso instale el fixpack 1, ustedes checkenlo dependiendo el que instalen.
Y se van y se toman un cafe porque tarda como 10 minutos en instalar, si todo ha salido bien veran lo siguiente al final:
Log: ExecCmd::launch returns 0
Task 601 out of 602; End Installing fix pack 'WP_PTF_7001', component 'wp.ptf.config'.
Task 602 out of 602; Begin Completing fix pack 'WP_PTF_7001'
Task 602 out of 602; End Completing fix pack 'WP_PTF_7001'
subTmpDir to be cleaned up: /tmp/ptfs
Fix pack installation completed successfully.
chmod -R 550 /opt/IBM/WebSphere/PortalServer  done!
UpdateInstaller.puiReturnCode is 0
End of [ ./updatePortal.sh ]

Y para los fixes ejecutan el siguiete comando:
./updatePortal.sh -fix -installDir "/opt/IBM/WebSphere/PortalServer" -fixDir "/opt/IBM/WebSphere/PortalServer/update/fixes" -install -fixes PM53918
Y veran lo siguiente si todo sale bien:
Log: ExecCmd::launch returns 0
Task 605 out of 606; End (1 of 1) Installing fix PM53918.installing component 604 of 604: wp.ptf.config. 
Task 606 out of 606; Begin (1 of 1) Installing fix PM53918.completing installation
Task 606 out of 606; End (1 of 1) Installing fix PM53918.completing installation
subTmpDir to be cleaned up: /tmp/efixes
chmod -R 550 /opt/IBM/WebSphere/PortalServer  done!
Fix installation completed successfully.
UpdateInstaller.puiReturnCode is 0
End of [ ./updatePortal.sh ]

viernes, 3 de mayo de 2013

Como Aplicar un Fixpack al WebSphere Application Server 7

Primero antes que nada deben de bajarse el Update Installer para el software de WebSphere para su plataforma, en mi caso es un Linux de 64 bits, lo pueden encontrar en el siguiente link: Update Installer.

Una vez bajado lo descomprimen en la carpeta que quieran, les va a crear una carpeta llamada UpdateInstaller. Dentro de esta carpeta se encuentra un archivo llamado responsefile.updiinstaller.txt lo copian en un archivo nuevo para modificarlo.
cp responsefile.updiinstaller.txt responsefile.txt
Lo abren y se van a las siguientes lineas:
-OPT silentInstallLicenseAcceptance="true" //Linea 43 para aceptar los terminos

-OPT disableOSPrereqChecking="true"  //Linea 69 para que no revise el OS

-OPT installLocation="/opt/IBM/WebSphere/UpdateInstaller" //Linea 113 para ver donde lo instalaran

Lo guardan y en el mismo directorio se encuentra el ejecutable de install, como aquí no somos de ventanitas, por eso hemos modificado el archivo, para correr todo en la linea de comando tecleamos:
./install -options "responsefile.txt" -silent

Si todo salio bien, verán la carpeta UpdateInstaller donde le especificaron que lo hiciera.
Pues bien ya han instalado el instalador de fixpacks, si es raro pero así debe de ser. Ahora deben de bajar el archivo .pak del fixpack que quieren aplicar, este archivo lo deben de poner en el directorio:
/opt/IBM/WebSphere/UpdateInstaller/maintenance/

De igual forma hay un directorio llamado:
/opt/IBM/WebSphere/UpdateInstaller/responsefiles

Y ahí un archivo llamado install.txt, lo copiamos para dejarlo de base:
cp install.txt myInstall.txt
Lo abren y modifican la siguiente linea:
-W product.location="/opt/IBM/WebSphere/AppServer" //Linea 104 donde esta el AppServer


Antes que nada deben de verificar que no esta corriendo ningún WAS para que no existan posibilidades de que ocurra algún error en la actualización, si hay alguno corriendo, apagenlo.
Y con eso teclean lo siguiente bajo el directorio de UpdateInstaller, recuerden nada de ventanitas aquí puro rockstar de la command line ;) :
./update.sh -options responsefiles/myInstall.txt -silent

Para ver el log de la instalación pueden hacerlo así:
tail -f /opt/IBM/WebSphere/UpdateInstaller/logs/tmp/updatelog.txt

Si todo salio bien al final de ese log verán algo así como:
(May 3, 2013 4:46:08 PM), Install, com.ibm.ws.install.ni.ismp.actions.SettleNIFRegistryAction, msg1, Current install/uninstall process is successful. Process type is: maintenance

(May 3, 2013 4:46:08 PM), Install, com.ibm.ws.install.ni.ismp.actions.SetExitCodeAction, msg1, CWUPI0000I: EXITCODE=0

(May 3, 2013 4:46:08 PM), Install, com.ibm.ws.install.ni.ismp.actions.ISMPLogSuccessMessageAction, msg1, INSTCONFSUCCES

jueves, 18 de abril de 2013

Como implementar en las cookies de sesión los flags "HttpOnly" y "Secure" en WebSphere Application Server 7



Primero para habilitar el secure flag en la cookie de sesion JSESSIONID, abres la consola del WAS y abres el menú Servidores -> Tipos de Servidores ->WebSphere Application Servers -> (el nombre de tu servidor) -> expandes el menú de Web Container Settings -> Web Container -> 
Session management -> Click en el link Enable cookies -> Das click en el checkbox que dice Restrict cookies to HTTPS sessions.


Le das click en Apply y guardas los cambios en la configuración maestra.

Ahora para habilitar el HttpOnly necesitamos crear una propiedad en el servidor de aplicaciones llamada: com.ibm.ws.webcontainer.httpOnlyCookies 


En la consola del WAS y abres el menu Servidores -> Tipos de Servidores ->WebSphere Application Servers -> (el nombre de tu servidor) -> expandes el menú de Web Container Settings -> Web Container -> Click en Custom properties -> En la pagina de Custom properties dar click en el botón de New -> en name le pones: com.ibm.ws.webcontainer.httpOnlyCookies y en value:


Le das click en Apply y guardas los cambios en la configuracion maestra.
Por ultimo reinicias el servidor para que agarre los cambios totalmente.

lunes, 1 de abril de 2013

Como instalar WebSphere Portal Server 7 en Linux Mint 14

Recientemente cambie de laptop en la empresa y opte por instalar mis herramientas de trabajo desde cero, por lo que volví a instalar el WebSphere Portal 7 y aquí les dejo las instrucciones para hacerlo en la distro de Linux Mint 14, distribucion basada en Ubuntu por lo cual esta guia aplica para ambas distros.

Primero como saben la instalación del portal requiere de 5 paquetes que son descargados desde la pagina de IBM, descomprimanlos en una misma carpeta y llamenlos de la siguiente forma según sea el caso, WPS-Install, IL-2, IL-3, IL-4, IL-5, esto para que el comando de instalación los agarre automaticamente y no les este preguntando la ubicación del siguiente paquete.

Después deben de hacer una molificación en su shell, ya que por default Ubuntu utiliza el dash shell, esto hace que se interrumpa la instalación cuando se trata de instalar el was. Para hacer esto abren una shell y ejecutan los siguientes comandos como root :

cd /bin
unlink sh
ln -s /bin/bash sh

Luego como aquí no somos de ventanitas, sino de pura shell, vamos a correr el script de instalación en la modalidad de "silent" por lo cual no tendremos que introducir ningún dato en la shell sino que los agarrara de un archivo.
Para esto nos vamos a la carpeta WPS-Install y allí viene un archivo llamado installresponse.txt, lo copian y le ponen como nombre supongamos opcionesInstallWPS.txt y lo guardan. Ya con este archivo lo que hay que cambiar se encuentra en las siguientes lineas:

-G licenseAccepted="true"   #Linea 64 
#// Para aceptar los terminos de la licencia de IBM
-W welcome.entitlement="server" #Linea 65 
#//El tipo de portal que instalaremos


-W setupTypePanel.selectedSetupTypeId="base" #Linea 84 
#//Para que instale solo lo necesario


-W globalInstall.location="/opt/IBM/WebSphere" #Linea 121 
#//El directorio base de la instalacion


-W was.location="/opt/IBM/WebSphere/AppServer" #Linea 142
#//Donde estara el WAS
-W portal.location="/opt/IBM/WebSphere/PortalServer" #Linea 143 
#//Donde estara el Portal


-W wasPanel.installChoice="install"  #Linea 161
#//Para que instale un WAS nuevo


-W wasAdmin.user="wpsadmin"  #Linea 230  
#//Usuario administrador del WAS/Portal
-W wasAdmin.password="mypassword"  #Linea 231  
#//Password el Administrador


-W nodeHost.nodeName="DefaultNode" #Linea 249
#//Nombre del nodo


-W nodeHost.hostName="portal.mydomain.com" #Linea 267 
#// hostname del Portal


Lo modifican y lo guardan. En base al cambio de la linea 267, hay que agregar el dominio que pusieron en el archivo /etc/hosts por lo que lo abren como root y le agregan la siguiente linea:

127.0.0.1       portal.mydomain.com

Para evitar problemas de permisos de ejecución le damos permisos a las 5 carpetas de que se puedan ejecutar con los siguientes comandos:

chmood -R 744 WPS-Install

chmood -R 744 IL-2

chmood -R 744 IL-3

chmood -R 744 IL-4

chmood -R 744 IL-5


Ya con todo esto, ya tenemos todo listo para correr el script de instalación así que ejecutamos el siguiente comando como root:

./install.sh -options opcionesInstallWPS.txt


Para ver que es lo que esta ocurriendo mientras se ejecuta el script de instalación, en la carpeta /tmp se crean los siguientes archivos: wpinstalllog.txt y installmessages.txt .

Si todo ha salido bien, veremos el siguiente mensaje al final del archivo installmessages.txt :

EJPIC0004I: The installation has completed successfully.


martes, 16 de octubre de 2012

Como recuperar el GRUB dañado en Ubuntu

Pues después de 7 años de trabajar con Linux, llego ese momento en el cual corrompí mi GRUB cuando le aplique las actualizaciones que me pedía el Ubuntu.
Al reiniciar la computadora después de la actualización me salia un mensaje en el cual decía que la partición no era reconocida.
Entonces después de entrar en pánico por un par de horas, pude restaurar el GRUB y todo volvió a ser como antes, así que les dejo las instrucciones de como lo hice.

Lo primero que necesitan es un Live CD de Linux. En mi caso como uso Ubuntu pues yo tenia por ahí un cd.
Ya que arranca el sistema operativo, se abren una terminal y ponen los siguientes comandos:

$ sudo fdisk -l

Esto para listar las particiones que tiene el disco duro, por lo general la partición es sda1, así que yo proseguí con el siguiente comando;

$ sudo mount /dev/sda1 /mnt

Después montamos todos los directorios necesarios:

$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /dev/pts  /mnt/dev/pts
$ sudo mount --bind /proc /mnt/proc
$ sudo mount --bind /sys  /mnt/sys

Y luego utilizamos el siguiente comando para acceder al file system de nuestra partición:

$ sudo chroot /mnt

Ya con nuestro filesystem restaurado, procedemos con el siguiente comando, ojo que no es sda1 sino sda.

# grub-install --recheck /dev/sda 

Reinician la maquina y listo, su computadora ya podrá arrancar, o al menos a mi me ha funcionado 2 veces, pues a un compañero de trabajo le paso lo mismo después de aplicar la actualización de paquetes de Ubuntu.

sábado, 21 de abril de 2012

Como subir archivos y obtener los datos de una forma con un Portlet

La semana pasada me estuve peleando con un portlet para subir un archivo que se encontraba dentro de una forma, pues en un caso solo podia ver los parametros del request y en el otro solo podia obtener el archivo. Estuve investigando en la red sin exito alguno hasta que llegue a una pagina que hablaba de usar inputStream para leer los campos de la forma asi que aqui les facilito el codigo que necesitan para hacerlo.

Para realizar lo siguiente necesitaremos 2 jars, el de commons-fileupload-1.2.2.jar y el de commons-io-2.2.jar y los agregamos al build path.

Luego importamos los siguientes paquetes en nuestra clase portlet:

import java.io.*
import org.apache.commons.io.IOUtils.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.portlet.*;


Luego agregamos el siguiente metodo a nuestro portlet, que se encargara de procesar los campos del formulario asi como de subir los archivos que tengamos:

@ProcessAction(name="subirArchivo")
public void subirArchivo(ActionRequest req, ActionResponse res) throws PortletException, java.io.IOException{
   String param1 = "";
   PortletFileUpload pfu = new PortletFileUpload();
   String fileExtension = null;
   FileOutputStream outStream = null;
   try {
      FileItemIterator iter = pfu.getItemIterator(request);
      
      while (iter.hasNext()) {
         FileItemStream item = iter.next();
                    
         if(item.isFormField()){
     
            if(item.getFieldName().equals("param1")){
               param1 = IOUtils.toString(item.openStream());
            }
     
         }else {
        
            String fileName = item.getName();
            fileExtension = fileName.substring(fileName.lastIndexOf("."),fileName.length());     
            outStream = new FileOutputStream(getInitParameter("uploadFolder")
            + "\\"
            + "archivoPrueba"
            + fileExtension);
            InputStream stream = item.openStream();
            
            byte[] buffer = new byte[1024];
            while (true) {
               int bytes = stream.read(buffer);
               if (bytes <= 0) {
               break;
            }
            outStream.write(buffer, 0, bytes);
         }
         outStream.flush();      
       }
      }
      }
      } catch (Exception ex) {
         ex.printStackTrace();
         if(outStream != null) {
            outStream.close();
         }
      File file = new File(getInitParameter("uploadFolder") + "\\"
      + "archivoPrueba"
      + fileExtension);
      if (file != null && file.canRead() && file.canWrite()) {
         file.delete();
      }
      logger.debug("Error "+ ex.getMessage());
   }
   finally {
      if (outStream != null) {
         outStream.close();
      }
   }
}
Donde param1 sera el parametro que recibiremos de nuestra forma, y la magia se hace en las lineas 13 al 17 que es donde obtenemos con ayuda de los jars de apache los valores de los campos.

Ahora necesitamos la forma en la cual se subira el archivo y el campo:

Donde definimos el actionURL con el name que le pusimos a la anotacion para que se haga el mapeo de la accion, y el enctype lo definimos como multipart/form-data para indicar que se subira un archivo y datos de una forma.

martes, 7 de febrero de 2012

Año Nuevo, Todo Nuevo

Pues no habia tenido la oportunidad de escribir ninguna entrada ya que este inicio de año fue muy ajetreado, me surgio una oportunidad de trabajo que no pude rechazar y hasta cambie de ciudad.
Pero lo importante es que sigo trabajando con el WebSphere Portal Server y sigo desarrollando portlets.
Por cierto que estoy leyendo el libro de Portlets In Action y esta buenazo, asi que si estan desarrollando portlets es un must have.
Este año me estare enfrentando con nuevos retos y aprendiendo muchisimas cosas nuevas, de hecho ya le heche un ojo a unos cursos de Spring para ampliar mi set de herramientas y aplicar las mejores practicas que hay actualmente.
Tambien quiero entrar de lleno con Grails este año, todavia no encuentro algun curso, por que he de decir que es mas rapido que aprendas de alguien con experiencia que con un tutorial.
Bueno, muchas cosas buenas nos esperan este año en el campo profesional.
El consejo que les doy es que uno se arrepiente mas de las cosas que no hace que de las que hace.
Si tienen una oportunidad profesional, analicenla, y vayan por ella si les conviene, como decia Steve Jobs: don't settle.