2016-11-24

HikariCP経由のPostgresをJettyで使う

自分の中ではDBCP2がコネクションプールの定番だったが、今はHikariCPが鉄板らしい。
そこで、Jettyで使うPostgresq接続のプールをHikariCPで行うの事にしたのだが、かなりハマったのでメモ。

 <New id="hikarids-postgres" class="org.eclipse.jetty.plus.jndi.Resource">
    <Arg>
      <Ref refid="webアプリケーション" />
    </Arg> 
    <Arg>jdbc/hikarids-postgres</Arg>
    <Arg>
      <New class="com.zaxxer.hikari.HikariDataSource">
        <Arg>

<!-- 省略可能
          <New class="com.zaxxer.hikari.HikariConfig">
-->
            <Set name="dataSourceClassName">org.postgresql.ds.PGSimpleDataSource</Set>
            <Set name="minimumIdle">1</Set>
            <Set name="maximumPoolSize">10</Set>
            <Set name="connectionInitSql">select version();</Set>
           
            <Call name="addDataSourceProperty">
              <Arg>user</Arg>
              <Arg>接続ユーザー名</Arg>
            </Call>
            <Call name="addDataSourceProperty">
              <Arg>password</Arg>
              <Arg>接続パスワード</Arg>
            </Call>
            <Call name="addDataSourceProperty">
              <Arg>serverName</Arg>
              <Arg>接続ホスト名(IPアドレスでも可能)</Arg>
            </Call>
            <Call name="addDataSourceProperty">
              <Arg>portNumber</Arg>
              <Arg>接続ポート</Arg>
            </Call>
            <Call name="addDataSourceProperty">
              <Arg>databaseName</Arg>
              <Arg>接続DB名</Arg>
            </Call>




<!-- 省略可能
          </New>

-->

        </Arg>     
      </New>
    </Arg>
  </New>

ここでややこしいのが、postgresの接続情報を指定するのに、HikariDataSourceのインスタンスへ直接指定するのではなく、インスタンス化する引数で使うHikariConfigのaddDataSourcePropertyメソッドを通じて指定している事だ。直接データを指定するメソッドを準備してくれればよいものを、どうしてこんなにまどろっこしい事をしているのか・・・・。
おそらく、db接続に使うアドレス、ユーザー名、パスワード、ポートの指定方法が、いろいろなドライバークラスで統一が取れていないからなんじゃないかと思う。
jdbc:postgresql://ホスト名:port/database名  のような URL形式で接続できたり、バラバラに指定できたりするのが自由に行われているのが原因じゃないだろうか。
JDBCはこのへんを曖昧のまま放置してきたので、いまだにややこしい事が起きている気がする。

省略可能:
HikariDataSourceのコンストラクタにHikariConfigを渡さない場合でも、HikariConfigを継承しているのでaddDataSourcePropertyをCALLしてやることで、接続情報を指定できる。

2016-11-19

スマホやタブレットでのバッテリーの選び方

Nexus7のバッテリー交換をやろうと思いバッテリーを探していた所、いろいろ勉強になったのでメモ

ヨドバシと違ってAmazonは玉石混淆、しかもバッテリーなどのパーツに至っては、詐欺すれすれの境界線上でショッピングしなければならない。
その上、発売から3年経過のNexus7のパーツになると、入手困難となってくる。

そこで、Amazon以外のサイトでの販売はないかと検索すると、めぼしいのが出てきた。

怪しげなサイトに警戒しつつ能書きを読んでゆくと、業者の説明にPSEマークを取得しているので安心してくれとある。
そうか、PSEマークついてるのなら、互換製品だとしても安心か・・・・と思い込んでいたのだが、これが大きな間違いだとわかった。

技適マークと違い、丸型のPSEマークにはどこの審査も受けていなくても、自分で検査したということでオレオレ認証できるらしい。
電池などに必要となる菱型のPSEマークの場合は第三者の認証が必要になるが、




このマークのように、認証した機関のロゴがついているようだ。購入対象の電池屋.comの製品にはPSEマークつきとあったので安心して発注しかけたが、慌てて取り消してセーフ!。
もう少しでダマされる所だった・・・・危ない危ない。
よく読んでみると説明している日本語文法も怪しい上、振り込みは日本の銀行だが、ドメインは中国での登録だ!。ヤバイヤバイ。
Glaxy端末の爆発報道から、いかにリチウム電池が危ないかよーーくわかったので、中国の怪しいバッテリーなんか怖くて使えない。

考えて見ると、技適マークなんかよりもバッテリーのPSEマークのほうが重要だ。
電波違反も確かにヤバいが、違反行為が直接怪我に結びつくことはまずない。
ところがバッテリーの場合は、直接に怪我や火事、ひいては乗り物の事故にまでつながってしまう。

こんな状態の製品が、Amazonあたりのいい加減なチェックの元に販売されているのは、どう考えてもおかしい。

経産省は、他のくだらない天下りよりも、こっちの方面で天下って利権作ってくれ!。
しゃくだけど、この分野での利権は、国民のためにもなる。