BLOGTIMES
» ArchiveList (Tag for "java / ruby" )
«Prev || 1 · | Next»
2011/09/21

Java から MSMQ を使う

java  mom  ruby 

おそらくこういう事をやろうという人がいないのだろうと思いますが、ググっても情報が出てきません。やりたいのは以前に書いた「Ruby から MSMQ を使う」「JRuby と IronRuby と Ruby-mingw32 のスレッド実装の違い」のあわせ技のような感じなのですが、意外と時間がかかってしまいました。

大まかな話としては Java から COM を呼び出せれば目標達成なわけなので、JRubyも使っていると思っていたJACOBというライブラリを使ってみました。

JACOB - Java COM Bridge | Download JACOB - Java COM Bridge software for free at SourceForge.net

JACOB is a JAVA-COM Bridge that allows you to call COM Automation components from Java. It uses JNI to make native calls to the COM libraries. JACOB runs on x86 and x64 environments supporting 32 bit and 64 bit JVMs

これで最低限のことはできるのですが、どうしても既存のAPIだけでは定数が名前で呼び出せません。最初はちょっとダサいけど、ライブラリの制限なので仕方ないかなーと思いましたが、よくよく考えたら jruby-win32ole は WIN32OLE::const_load で定数取れてるじゃないかということに気づいたので、じゃあそのの実装はどうなってるんだろうと調べ始めてしまったのが、運の尽きでした。

[Java から MSMQ を使う の続きを読む]

    at 23:52 |
    2010/11/29

    UTF-8のBOMの削除でハマる

    java  ruby  charset  regex 

    XalanでXMLをXSL変換するプログラムを書いたら、そのうちの1つのXMLが下記のエラーを吐いて変換できなくてハマってしまいました。

    Caused by: javax.xml.transform.TransformerException: com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: An invalid XML character (Unicode: 0xfffe) was found in the element content of the document.

    エラーから分かることはドキュメントに0xFFFEが含まれているということ。この文字はBOM(0xFEFF)のエンディアンを間違えたときの文字列なので確かにXMLに使うことはできません。エディタで開くと一見間違いはないように見えますが、Firefoxで表示させようとすると「XML パースエラー: 整形式になっていません。」と他の処理系でもエラーを吐きます。

    元になったXMLはRubyのプログラムから生成したものだったので、元になったStringから下記のように BOM を削除するルーチンを埋め込んでみました。

    str = str.gsub(/\xFE\xFF|\xFF\xFE/,"")

    上記を利用してXMLを再生成してみたのですが、依然としてエラーは消えません。ここでしばらくハマっていましたが、XalanはJavaなので0xFFFEはUTF-16の表現であることを見落としていることに気づきました。今回のXMLはUTF-8だったので、BOMのUTF-8表現を「日本語文字コード変換 mojimoji」で調べて正規表現を書き直したところ、これがビンゴでした。

    UTF-16 UTF-8 BOM 0xFEFF → 0xEFBBBF BOMの反転 0xFFFE → 0xEFBFBE
    str = str.gsub(/\xEF\xBB\xBF|\xEF\xBF\xBE/,"")

    元のStringにBOMが混入していた原因は不明。本当に文字コードはくだらないところでハマりますね。


      at 19:04 |
      2009/10/08

      Solr 1.4 Enterprise Search Server

      solr  nlp  java  ruby 
      Solr 1.4 Enterprise Search Server

      Solrについての情報収集については、基本的にSolrプロジェクトのWikiと、実際のSolrや、Solr-rubyのソースコードですませています。

      が、そろそろ紙の本が1冊欲しくなってきて、Amazonで探してみたところ、洋書ですがSolr 1.4 Enterprise Search Serverという本が出ているのを発見。マニュアル代わりに買っておこうかな。


        at 20:23 |
        «Prev || 1 · | Next»
        » ArchiveList (Tag for "java / ruby" )