Psalm

プログラマ向け技術メモ

画像を読み込んでバイト配列に格納する。

2009-02-13 15:35:42 | Java
いまいち入出力系は苦手・・・
まあ、要するにInputStreamを作って出力したい形式のOutputStreamに
書き出せばいいんだね。

URL url = new URL(path);
InputStream is = url.openStream();
ByteArrayOutputStream b = new ByteArrayOutputStream();
OutputStream os = new BufferedOutputStream(b);
int c;

try {
    while ((c = is.read()) != -1) {
        os.write(c);
    }
} catch (IOException e) {
    throw e;
} finally {
    if (os != null) {
        try {
            os.flush();
            os.close();
        } catch (IOException e) {
            // do nothing
        }
    }
}

byte[] buf = b.toByteArray();

TomcatのJNDIデータソースをJavaアプリケーションから参照。

2009-02-10 17:50:37 | Tomcat
絶賛稼働中のサーブレットのAPIを使いまわして
データをインポートするツールを作ろうとして手が止まった。
APIはTomcatのデータソース読んでDBに接続しに行くんだよね。
Tomcatのデータソースのインターフェースは外部公開されてないから
外のプログラムからは呼べないのだった・・・
てことで探してみたら、便利なツール発見。

JNDIUnitTestHelper
http://faq.javaranch.com/java/CodeBarnLibrariesAndFrameworks

落としてきたZIPを解凍してjndi_unit_test_helper.propertiesを環境に合わせて修正。
適当なところに置く。
クラスパスが通っているところならどこでもいいらしい。
ログイン名とパスワードも適当に。

com.javaranch.unittest.helper.sql.pool.JNDIName=java:comp/env/jdbc/[Tomcat側で設定した名前]
com.javaranch.unittest.helper.sql.pool.dbDriver=org.postgresql.Driver
com.javaranch.unittest.helper.sql.pool.dbServer=jdbc:postgresql://localhost:5432/[DB名]
com.javaranch.unittest.helper.sql.pool.dbLogin=postgres
com.javaranch.unittest.helper.sql.pool.dbPassword=password

で、コードに以下を追加。相対パスなので注意。

JNDIUnitTestHelper.init("lib/jndi_unit_test_helper.properties");

以上。簡単ですねー。
Tomcat設定ファイルの代わりにjndi_unit_test_helper.propertiesを読んで
DB接続してくれます。
いやー、同じようなことで困った先人がいると楽でいいよね。笑