Archive for the ‘java’ Category

http 500 com imagem em GeneXus

lunes, enero 27th, 2014

genexus http 500 fabricio de los santos

 

Tempo atrás tive a grande oportunidade de dividir um projeto com o querido Gabriel Icasuriaga. Na época tivemos um erro de http 500 com GeneXus Evolution 2, java e MySql.

A mensagem que apresentava na tela era a seguinte:

javax.servlet.ServletException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column ‘MyAttributeParticularNameThumb_’ in ‘field list’

O problema tinha origem nos atributos blob que estávamos usando para as imagens. Se bem tínhamos definido um atributo similar ao mencionado acima (o atributo real tinha outro nome), no meio houve uma mudança no tamanho dos campos que aparentemente não afetava nenhuma tabela, mas não consideramos que GeneXus adiciona automaticamente outro atributo com o nome similar adicionando os caracteres “_GXI” que significa GeneXus Identifier para guardar a URI do arquivo, por tanto o atributo gerado na sentença SQL não coincidia com o nome na tabela por causa do limite do nome do atributo.

Colocando a nomenclatura correta considerando o tamanho certo o problema foi solucionado.

Gabriel tinha me pedido postar isso algum dia no blog, então aqui está Gabriel.

Muitas Saudades amigo.

 

Até o próximo post. Grande abraço!


Fabricio De los Santos GeneXus
Fabricio De los Santos
_________________________________________
Coaching and Mentoring GeneXus, ScrumMaster, Project Manager, K2B Tools Agent – The best Patterns Tool to integrate with GeneXus
Siga meus blogs em www.fabriciodelossantos.com

GeneXus HTTPClient.HTTPConnection.setTcpNoDelay(Z)

miércoles, noviembre 13th, 2013

Não sei se é a melhor forma de trabalhar com a versão beta de Tilo.

Mas geralmente tenho por costume fazer o download do arquivo zip do night build e copiar por cima da pasta de instalação da versão Tilo.

Depois executo genexus / install e pronto para rodar, dependendo da situação um build all é recomendável, inclusive apagar os *.ver e *.ari antes disso.

O problema é que desta forma certos arquivos jar que possam vir atualizados na versão podem não ser copiados ao webapp de nossa aplicação java.

Então ai copio os arquivos “.jar” que estão em “C:\Program Files (x86)\Artech\GeneXus\GeneXusXTilo\gxjava” ao folder “lib”

Reinicio o tomcat e listo.

Só que dependendo da funcionalidade você pode pensar que está tudo ok até que aparece o erro

“HTTPClient.HTTPConnection.setTcpNoDelay(Z)”

A solução está em “apagar” ou se quiser melhor “não copiar” o arquivo “GXWS.jar” na pasta “lib”

Se já foi copiado não adianta fazer o “reload” do contexto, tem que reiniciar o tomcat para funcionar normalmente.

Na verdade isto não é um problema da beta de Tilo, isto acontece com qualquer aplicação java rodando num tomcat quando se copia este arquivo.

Tomara este post tenha sido de utilidade.

Muito obrigado por seguir meu blog.

Para ler outros tips


Lembre-se que na dELFASOFT www.delfasoft.com.br estamos desenvolvendo para Smart Devices com GeneXus Tilo

Até o próximo post!

 

Fabricio De los Santos GeneXus
Fabricio De los Santos
_________________________________________
Coaching and Mentoring GeneXus, ScrumMaster, Project Manager, K2B Tools Agent – The best Patterns Tool to integrate with GeneXus
Siga meus blogs em www.fabriciodelossantos.com

Exportar Reorg GeneXus Java

miércoles, junio 3rd, 2009

Para rodar uma reorg de GeneXus Java via linha de comandos devemos seguir os seguintes passos:

1) Quando executamos uma reorg na base de conhecimento (KB) temos que exportar ela para depois poder ser executada em produção.
Para isto depois de rodar em GeneXus a Reorg executamos o WinDeveloperMenu.
Selecionamos a Opção Utilities/Export Rerorganization

O que precisamos ou o que poderíamos mudar?
Filename: Nome que queremos dar a nosso .jar por exemplo c:\demoreorg\Reorg0001.jar

JDBC URL: Os dados de string de conexão ao banco de dados ou servidor (ip), porta, instancia de banco de dados,
por exemplo jdbc:oracle:thin:@SERVIDOR_TESTE:1521:xe

JDBC Driver: Driver de banco de dados da plataforma de produção, por exemplo oracle.jdbc.driver.OracleDriver

User: usuário de banco de dados que vai rodar a reorg

Password: senha de usuário de banco de dados que vai rodar a reorg

Include configuration file in JAR, isto vai incluir o arquivo reorg.cfg com os dados escritos acima.

2) O .jar gerado em nosso exemplo Reorg0001.jar foi criado na pasta c:\demoreorg
Para executar esta reorg nesta pasta, temos que copiar a esta pasta o jar do banco de dados, em nosso exemplo Oracle, por isso usamos classes12.jar e o gxclassr.jar

3) Setamos o classpath para a pasta que pensamos rodar a reorg para evitar conflitos
set classpath=c:\demoreorg

4) E executamos a reorg com o seguinte comando:
java -cp .\Reorg0001.jar;.\classes12.jar;.\gxclassr.jar; Reorganization -force

5) Se for o caso depois de ter exportado a reorg por primeira vez, e queremos rodar ela em outro banco de dados el por algum motivo, não podemos usar o WinDeveloper Menu.
Por exemplo, no caso que já tenhamos executado outras reorgs, temos algumas alternativas para poder fazer isto.

Na verdade o que precisamos é alterar o reorg.cfg com os dados do novo servidor ou banco de dados.

Para isto renomeamos o arquivo Reorg0001.jar a Reorg0001.zip

Descompactamos ele e vamos encontrar o arquivo Reorg.cfg dentro.

Editamos o arquivo e procuramos o datastore que queremos alterar, por exemplo [default|DEFAULT]
Se quero mudar o usuário procuro a linha USER_ID= e coloco o usuário (é válido colocar sem encriptar também)
Se quero mudar o servidro procuro a linha DB_URL= e altero os dados que preciso
Se quero mudar a senha procuro a linha USER_PASSWORD= e coloco a nova senha (é válido colocar sem encriptar também)

Logo salvamos este arquivo reorg.cfg e reconstruímos o .zip novamente Reorg0001.zip, logo renomeamos ele por .jar e executamos novamente a reorg com o comando visto no ponto 4)

6) Se queremos fazer a mesma coisa do ponto 5) mas com o usuário e a senha encriptada podemos usar o utilitário de GeneXus que encripta qualquer .cfg
Para isto assumindo que já renomeei o Reorg0001.jar para .zip e descompactei ele, e tenho o arquivo Reorg.cfg na pasta c:\demoreorg

Executamos
set classpath=c:\demoreorg
java com.genexus.PasswordChanger -file:reorg.cfg -namespace:default -datastore:DEFAULT -user:usuario_encriptado -password:senha_encriptada

Alguns parâmetros são opcionais.
Para mais informação ver o SAC

Espero este post seja de utilidad.

Fabricio De los Santos
Gerência de Projetos – Consultoria GeneXus –
ERP – Sistemas de Missão Crítica – Bancos de Dados.

Veja meus blogs em:
www.fabriciodelossantos.com

Tips: Instalación de Tomcat 5.5.20 en Windows para usar con GeneXus Java sin Deployment para MySql

martes, noviembre 21st, 2006

Instalación de Tomcat 5.5.20 en Windows para usar con GeneXus Java sin Deployment para MySql en 16 pasos.

El presente instructivo, manual o tutorial de Instalación de Tomcat para GeneXus y MySql, no deja de ser algo que a mi me sirvió para instalar Tomcat y poder usarlo con GeneXus rápidamente.
Muchas veces instalamos una herramienta y luego tenemos que volvero a hacerlo y nos cuesta tanto trabajo como la primera vez porque nos hemos olvidado.
Aquí un ayuda memoria de los pasos para instalar el Tomcat 5.5.20 para usarlo con GeneXus 9.0 y el generador java.

Espero que este instructivo siga vigente por mucho tiempo, así que como hago referencia a bajar algunos Archivos de Internet, y estos no siempre están disponibles después de un tiempo determinado, voy a subir los archivos que se necesitan a un ftp propio por si quieren bajarlos de ahí.

Espero les sea útil.

Paso 1
Primero que nada y para que vayas ganando tiempo mientras vas leyendo el instructivo te paso lo que tienes que bajarte y los links.

apache-tomcat-5.5.20.exe

jdk-1_5_0_09-windows-i586-p.exe

mysql-connector-java-5.0.4.zip

mysql-5.0.21-win32.zip

mysql-administrator-1.1.9-win.msi

nmake.zip

Paso 2
Recomiendo desinstalar la versión de Tomcat que tengan instalado, cuidado porque en la desinstalación pregunta si deseas eliminar las aplicaciones que

tengas, y puede suceder que tengas una aplicación particular ya funcionando en tomcat con otra versión anterior y la borres.
Te recomiendo que la copies a otro lugar.
Si no entiendes que estoy diciendo fíjate en :

C:\Archivos de programa\Apache Software Foundation\Tomcat 5.5\webapps

si tienes alguna aplicación que sea tuya, si la tienes respaldala en otro lugar del disco y luego dile al wizard de desinstalación de tomcat que borre todo.

Paso 3
Si tienes instalado el JDK desinstalalo y si quieres puedes desinstalar el runtime también para que no te de problema con las versiones.

Paso 4
Instalate el jdk-1_5_0_09-windows-i586-p.exe
Cuando te pida la ruta de instalación si quieres luego seguir el ejemplo al pie de la letra, te recomiendo instalarlo en:

C:\Java\jdk1.5.0_09

Paso 5
Instalate el apache-tomcat-5.5.20.exe
En cierto momento el wizard de instalación te pregunta donde está el JDK y te pone una ruta por defecto, tu debes buscar la que mencioné en el paso 4.

Paso 6
Luego de instalado el Tomcat te debería quedar en la barra de tareas el ícono del monitor de tomcat.

Si no aparece el monitor del tomcat puedes ejecutarlo

y debes levantar el tomcat si no esta levantado

Paso 7
Tomcat no ejecuta servlets que no estén detallados en el archivo web.xml de cada aplicación.
Como este instructivo no muestra como hacer deployment debemos descomentar las lineas para que se permita la ejecución de clases anonimas.
Para esto debemos ubicar el archivo web.xml en C:\Archivos de programa\Apache Software Foundation\Tomcat 5.5\conf
editarlo, y buscar el siguiente código:

Lo que haremos es cerrar y abrir el comentario para que luego cuando hagamos deployment sea más fácil ubicar que es lo que tenemos que comentar.
Quedando el código de la siguiente forma:

También debemos hacer lo mismo con el siguiente código:

Paso 8
Para ver si está todo bien con el tomcat, lo bajamos y lo volvemos a subir con el monitor tomcat y abrimos el navegaro y colocamos la siguiente url:

http://localhost:8080/servlets-examples/servlet/HelloWorldExample

Donde nos debe aparecer “hola mundo” como texto en la página.

Paso 9
Podemos ver el administrador de tomcat si ponemos la siguiente url:

http://localhost:8080

Paso 10

Nos colocamos en el directorio C:\Archivos de programa\Apache Software Foundation\Tomcat 5.5\webapps y creamos un nuevo folder con el nombre de nuestra

aplicacion por ejemplo “mi_sistema”

Dentro de este folder “mi_sistema” creamos los folders “images”, “temp” y “WEB-INF”.
Dentro del folder “WEB-INF” creamos los folder “classes” y “lib”.

Paso 11
Descomprimimos el archivo mysql-connector-java-5.0.4.zip (anteriormente bajado) en una carpeta temporal y busacmos el archivo

mysql-connector-java-5.0.4-bin.jar que es el connector jdbc.

Copiamos este archivo al folder “lib” creado en el Paso 10.

En este mismo folder copiaremos otros archivos “.jar” que se encuentran en el directorio de la instalación de GeneXus

C:\Archivos de programa\ARTech\GeneXus\GeneXus90\gxjava

Estos son:

gxclassr.jar (este archivo no se encuentra con esta extensión sino que se encuentra como “.zip”, debemos copiarlo y luego renombrarlo a “.jar”)
GxUtils.jar
iText.jar

Paso 12

Instalamos mysql con mysql-5.0.21-win32.zip y luego creamos la base de datos en nuestro ejemplo “mi_sistema” con el administrador de base de datos de tu

preferencia. Puedes usar si quieres el mysql-administrator-1.1.9-win.msi que bajaste en el Paso 1

Paso 13
Copiaremos al folder C:\Java (creado en el Paso 4) los siguientes archivos necesarios que se harán referencia desde Genexus

El connector jdbc que usamos en el Paso 11 mysql-connector-java-5.0.4-bin.jar
Por que este lo vamos a tener 2 veces copiado? Porque en teoria podrías tener el tomcat instalado en otra maquina, y serían usandos en momento de ejecución

por tomcat. Aquí estamos copiando los archivos que serán utilizados por genexus.

El nmake.exe y nmake.err (es un utilitario que permite construir proyectos a partir de archivo .mak. Lo provee el Visual Studio .Net ,también es provisto por

otros lenguajes que utilizan Makefiles, como Java) esta dentro del zip nmake.zip

Paso 14

Ahora en Genexus, configuraremos las propiedades del modelo se la siguiente forma.
Creamos el nuevo modelo de prototipo o produccion con el nombre correspondiente y las siguientes características

El Enviroment
Languaje: Java
User Interface: Web Form
DBMS: MySql
Target Path: Data002

Luego cuando quiera hacer el impacto de base de datos le damos cancelar, para nosotros definir las propiedades a mano sin el wizard

En el boton Properties

En el nodo Client Server Information

Blob local storage path:
/temp/

En el nodo Web Information

Servlet Directory :
C:\Archivos de programa\Apache Software Foundation\Tomcat 5.5\webapps\mi_sistema\WEB-INF\classes

Temp media directory:
/temp

Static Content Base URL:
/images

Static content directory seen from client:
C:\Archivos de programa\Apache Software Foundation\Tomcat 5.5\webapps\mi_sistema\images

En el boton DBMS Options

Algunos datos obligatorios a completar

Access technology to set: JDBC

Database name: mi_sistema

Server name: localhost

Server TCP/IP Port: 3306

Connect to server: At first request

Show connection dialog: Never

Userid:Usuario

User password: password

MySql Version: 4.x to 5.0.2

En el boton Execution

Plataform: Sun SDK

Classpath:
gxclassr.zip;GxUtils.jar;.;C:\java\mysql-connector-java-5.0.4-bin.jar; C:\Archivos de programa\Apache Software Foundation\Tomcat

5.5\common\lib\servlet-api.jar

Compiler Path:
C:\Java\jdk1.5.0_09\bin\javac.exe
direct
Make Path:
C:\Java\nmake.exe

Interpreter Path:
C:\Java\jdk1.5.0_09\bin\java.exe

Web Aplication Base URL:
http://localhost:8080/mi_sistema/servlet/

Boton Advanced

Web Browser Settings: Use Default Browser

Luego al final boton Set as default

Para comprobar que la configuración de Genexus con respecto a Tomcat quedó en forma correcta, escribe la siguiente url en el browser:
http://localhost:8080/mi_sistema/servlet/com.genexus.webpanels.gxver

El mensaje que debe aparecer para indicar que está todo ok es el siguiente:
Running GeneXus Runtime Classes Version 9.0.2.079

Paso 15

Crear una trn en diseño e imapctarla en el modelo recién configurado, o si ya teníamos transacciones creadas, solo hacer el impacto de base de datos.
Build / Impact Database

Reorganize

Paso 16

Armar los web panels main de prueba, especificar y compilar.
Ejecutar la aplicación en http://localhost:8080/mi_sistema/servlet/hmain

Felicitaciones!!!
Usted ya tiene andando su aplicación en java.

Espero le haya sido util este instructivo.

Fabricio De los Santos
Gerencia de Proyectos – Consultoría GeneXus –
ERP – Sistemas de Misión Crítica – Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com

Tips: Como hacer nuestro clásico debug en java/tomcat con GeneXus

jueves, septiembre 21st, 2006

Generalmente cuando programábamos para plataformas Windows y queríamos saber que valor tenía una variable o un campo, simplemente poníamos un msg en el programa y este aparecía en pantalla.
Para realizar esta tarea en java si estamos programando para web, podemos usar la siguiente sentencia:&msg=’Texto identificatorio ’ + &variable
Msg(&msg,status)

Luego de esto vamos al directorio que está instalado el tomcat y buscamos la carpeta “logs”
Ejemplo de una instalación Windows:

C:\Program Files\Apache Software Foundation\Tomcat 5.0\logs

Aqui buscamos el archivo stdout.log, lo abrimos y buscamos el “texto identificatorio” que pusimos en el msg() y allí encontraremos el valor de nuestra variable.

Fabricio De los Santos
Gerencia de Proyectos – Consultoría GeneXus –
ERP – Sistemas de Misión Crítica – Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com