Codificación en llamadas con un EJB

Ricard
04 de Enero del 2005
Hola a todos!!

Tengo un problemilla con mi aplicación WEB y no he encontrado información relacionada, a ver si ustedes me pueden ayudar.

Concretando, mi problema reside en la codificación que utiliza un Entity Java Bean para la comunicación entre la aplicación cliente y la aplicación servidor. Cuando se realiza una llamada a una función implementada en el Bean en la cual hay un paso de parámetros de tipo String, la información del String llega a la función del Bean incorrectamente, me substituye los caracteres españoles y caracteres especiales por otros.
Esto produce que en la base de datos lógicamente no se almacenen correctamente la información que introduce el usuario desde la aplicación cliente.

He puesto un "chivato" o un System.out.println(***) justo después del encabezado de la función del BEAN y en ese momento la información de los Strings ya se ha cambiado. El código HTML trata bien esta información y en la base de datos se almacenan correctamente valores que contengan caracteres españoles como pueden ser 'á' o 'í'.

Supongo que será un problema de configuración de la codificación que usa el EJB para la comunicación pero, no he sabido como poder configurarlo. ¿Tendría la amabilidad alguien de echarme una mano?


Muchas gracias por vuestra atención y ayuda. Un cordial saludo y felices fiestas a todos!!!!


Atentamente:


Ricard Fernández

Lucas
04 de Enero del 2005
La codificación de caracteres no es controlada ni mucho menos por el EJB. El EJB se limita a invocar llamadas remotas mediante RMI. Ni siquiera RMI controla estos aspectos. Supongo que tu problema vendra porque las partes intervienentes en la comunicaciones no se ejecutan sobre el mismo SO/arquitectura. Para ello, tienes que especificar a nivel de la maquina virtual el juego de caracteres que vas a utilizar. En el arranque de la maquina virtual, tanto de cliente como de servidor, debes especificar el parametro file encoding, no me acuerdo del nombre exacto, busca los parametros de la VM, los -D y busca algo tipo file.encoding y lo puedes poner =UTF-8 o lo que necesites. Otra forma de controlar la codificacion de las cadenas de caracteres cuando las transformas a bytes y cuando las creas desde bytes, es especificar el juego de caracteres al hacer la transformacion, como new String(byte[], "utf-8");