JbossTextMessage Unicode конвертировать не удалось в Linux - PullRequest
0 голосов
/ 13 августа 2010

Я пытаюсь загрузить файл XML (UTF-8) и опубликовать его на Jboss MQ.При чтении файла из слушателя символы UTF-8 неправильно отформатированы ТОЛЬКО в экземпляре Jboss (jboss-5.1.0.GA-3), работающем в Linux.

Для экземпляра: BORÅS преобразуется в BOR¿S в экземпляре Linux Jboss.

Когда я копирую и настраиваю тот же экземпляр jboss для работы в Windows (SP3), он работает отлично.

Также я изменил настройку по умолчанию в Linux, включив JAVA_OPTS = -Dfile.encoding = UTF-8 в файлы .bashrc и run.sh.

внутри слушателя JbossTextMessage.getText () идет с неправильно указанным символом.

Есть предложения или обходные пути?

1 Ответ

0 голосов
/ 13 августа 2010

Наконец-то мне удалось найти решение, НО решение все еще остается в черном ящике. Если у кого-то есть ответ на вопрос, ПОЧЕМУ он не удался / успешно, обновите ветку.

Решение с первого взгляда: 1. Захватил содержимое файла в виде байтового массива и записал его в файл XML в папке jboss tmp, используя FileOutputStream

  1. При публикации в очередь сообщений jboss я использовал явно записанный xml-файл (1-й шаг), используя FileInputStream в качестве байтового массива, и передаю его в качестве тела сообщения.

Пример кода:

Просмотр : страница JSP с файлом формы

Класс контроллера : 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 []
}

Foot Note: Я думаю, что это связано с типом сохранения файлов по умолчанию в Linux / Windows. Например: Windows по умолчанию: ANSI.

...