JBOSSTEXTMESSAGE UNICODEコンバートはLinuxで失敗しました
-
28-09-2019 - |
質問
XML(UTF-8)ファイルをアップロードして、JBoss MQに投稿しようとしています。リスナーUTF-8文字からファイルを読み取ると、Linuxで実行されているJBOSS(JBoss-5.1.0.Ga-3)インスタンスでのみ正しくフォーマットされていません。
インスタンスのために: ボロース に変換されます bor¿s Linux JBossインスタンスで。
Windows(SP3)で実行するように同じJBossインスタンスをコピーして構成すると、完全に機能します。
また、java_opts = -dfile.encoding = utf-8を.bashrcおよびrun.shファイルに含めることにより、Linuxのデフォルト設定を変更しました。
リスナーの内部jbosstextmessage.getText()は、誤って指定された文字が付いています。
何か提案や回避策はありますか?
解決
最後に、解決策を見つけることができましたが、解決策はまだブラックボックスです。誰かがそれが失敗した/成功した理由に対する答えがある場合は、スレッドを更新してください。
一目で解決策:1。ファイルのコンテンツをバイトアリーとしてキャプチャし、fileoutputStreamを使用してjboss TMPフォルダーのXMLファイルに書きました
- jbossメッセージキューに投稿するとき、fileinputStreamをバイト配列として使用してXMLファイル(1stステップ)を明示的に作成し、メッセージ本文として渡しました。
コード例:
意見: :formfileを備えた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 []
}
フットノート: Linux/Windowsのデフォルトファイルの保存タイプと関係があると思います。 EG:Windowsデフォルト:ANSI。
所属していません StackOverflow