JbossTextMessage Unicode no se convierten in Linux
-
28-09-2019 - |
Pregunta
Estoy intentando cargar un archivo XML (UTF-8) y que lo ponga en un Jboss MQ. Al leer el archivo desde el oyente caracteres UTF-8 no se formatean correctamente sólo en el caso de Jboss (jboss- 5.1.0.GA-3) que se ejecuta en Linux.
Para un ejemplo: BORÅS se convierte a BOR¿S a instancia Linux jboss.
Cuando copio y configurar la misma instancia de JBoss para funcionar en las ventanas (SP3) que funciona perfectamente.
También tengo cambiar la configuración predeterminada en Linux mediante la inclusión de JAVA_OPTS = -Dfile.encoding = UTF-8 en .bashrc y run.sh.
dentro del Oyente JbossTextMessage.getText () viene con carácter incorrectamente especificado.
Cualquier sugerencia o soluciones?
Solución
Finalmente pude encontrar una solución, pero la solución sigue siendo una caja negra. Si alguien tiene la respuesta a por qué se ha fallado / éxito por favor, actualice la rosca.
Solución de un vistazo: 1. capturó el contenido del archivo como un arry bytes y escribió en un archivo XML en JBoss tmp carpeta mediante FileOutputStream
- Al exponer en la cola de mensajes de JBoss, que utiliza la escribió explícitamente archivo XML (primera etapa) usando un FileInputStream como una matriz de bytes y pasarlo como el cuerpo del mensaje.
Ejemplo de código:
Ver : página JSP con un FormFile
Clase Controller : UploadAction.java
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){
...........
writeInitFile(theForm.getFile().getFileData()); // Obtain the uploaded file
Message msg = messageHelper.createMessage( readInitFile() ); // messageHelper is a customized factory method to create Message objects. Passing the newly
wrote file's byte array.
messageHelper.sendMsg(msg); // posting in the queue
...........
}
private void writeInitFile(byte[] fileData) throws Exception{
File someFile = new File("/jboss-5.1.0.GA-3/test/server/default/tmp/UploadTmp.xml"); // Write the uploaded file into a temporary file in jboss/tmp folder
FileOutputStream fos = new FileOutputStream(someFile);
fos.write( fileData );
fos.flush();
fos.close();
}
private byte[] readInitFile() throws Exception{
StringBuilder buyteArray=new StringBuilder();
File someFile = new File("/jboss-5.1.0.GA-3/test/server/default/tmp/UploadTmp.xml"); // Read the Newly created file in jboss/tmp folder
FileInputStream fstream = new FileInputStream(someFile);
int ch;
while( (ch = fstream.read()) != -1){
buyteArray.append((char)ch);
}
fstream.close();
return buyteArray.toString().getBytes(); // return the byte []
}
Pie Nota: creo que es algo que ver con el tipo de almacenamiento de archivos por defecto de Linux / Windows. por ejemplo: Windows por defecto:. ANSI