2010-08-13 7 views
0

J'essaye de télécharger un fichier XML (UTF-8) et de le publier sur un Jboss MQ. Lors de la lecture du fichier à partir de l'écouteur, les caractères UTF-8 ne sont pas correctement formatés dans l'instance Jboss (jboss-5.1.0.GA-3) exécutée sous Linux.JbossTextMessage La conversion Unicode a échoué sous Linux

Pour un exemple: BORÅS est converti en BOR¿S à Linux par exemple jboss.

Lorsque je copie et configure la même instance jboss pour Windows (SP3), cela fonctionne parfaitement.

J'ai également modifié le paramètre par défaut sous Linux en incluant JAVA_OPTS = -Dfile.encoding = UTF-8 dans les fichiers .bashrc et run.sh.

à l'intérieur de l'écouteur JbossTextMessage.getText() arrive avec un caractère spécifié incorrectement.

Des suggestions ou des solutions de contournement?

+0

Veuillez fournir des informations exactes sur la manière de télécharger le fichier. – sorin

+0

J'ai exposé un jsp pour télécharger un fichier XML en utilisant la méthode post. Je vais obtenir le fichier en tant que FormFile en utilisant des struts dans la classe Action comme suit: FichierFormFile = theForm.getFile(); Deuxièmement, je récupère les données de fichier comme tableau d'octets byte [] buf = file.getFileData(); Enfin, je poste ce dans une file d'attente dans Jboss (jboss-5.1.0.GA-3). – isurux

+0

Le processus est le suivant: (1) Télécharger le fichier XML ---> (2) Obtenir le byte [] du fichier ---> (3) le mettre dans une file d'attente JMS ---> (4) choisi par un MDB à traiter. Lorsque le message posté est reçu de l'écouteur, j'ai essayé de le lancer comme suit, mais n'a pas fonctionné: (message (TextMessage)) .getText(). GetBytes ("UTF-8") – isurux

Répondre

0

Enfin, j'ai été en mesure de trouver une solution, MAIS la solution est toujours une boîte noire. Si quelqu'un a la réponse à pourquoi il a échoué/réussi s'il vous plaît mettre à jour le fil.

Solution en bref: 1. Captured le contenu du fichier en tant que Arry d'octets et écrit dans un fichier xml dans le dossier jboss tmp en utilisant FileOutputStream

  1. lors de la publication à la jboss File d'attente de messages, j'ai utilisé le fichier XML explicitement écrit (1ère étape) en utilisant un FileInputStream comme un tableau d'octets et le passer comme le corps du message.

Exemple de code:

Voir: page JSP avec un FormFile

classe contrôleur: 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 [] 
} 

Note pied: Je pense qu'il est quelque chose à voir avec le type d'enregistrement de fichier par défaut Linux/Windows. Par exemple: Windows par défaut: ANSI.

Questions connexes