Winstoneでコンテキストルートを指定する
昨日のエントリはガセ(コメントありがとうございました).--prefixオプションで任意のコンテキストルートが指定できたよ.
具体的には,こんな感じだ.
$ java -jar winstone-0.9.6.jar --prefix=/click click-examples.war
これで以下のいずれかでもアクセス可能になる.
http://localhost:8080/click http://localhost:8080/click/
prefixの指定方法がイマイチ分かりづらかったんで,いろいろ試してみた.
結果は,こう.
× --prefix=click
○ --prefix=/click
× --prefix=click/
× --prefix=/click/
× --prefix=/click/examples/
これで何の問題もない.やっぱりスゴイぞWinstone.:-D
winstone.propertiesについて
マニュアルにも書いてあるけど,カレントディレクトリ*1にwinstone.propertiesってのを作っておけば,長ったらしいオプションを毎回書かないで済む.
たとえば,DataSourceとかはプロパティに書いたほうが見やすい.
--- winstone.properties --- controlPort=8081 useJasper=true javaHome=d:/java2/jdk150_10 toolsJar=d:/java2/jdk150_10/lib/tools.jar useJNDI=true jndi.resource.jdbc/HogeDS=javax.sql.DataSource jndi.param.jdbc/HogeDS.url=jdbc:oracle:thin:@localhost:1521:HOGE jndi.param.jdbc/HogeDS.driverClassName=oracle.jdbc.OracleDriver jndi.param.jdbc/HogeDS.username=hoge jndi.param.jdbc/HogeDS.password=hoge
なお,プロパティは引数に負ける.
ps.
ちなみに,Jasperなどの追加ライブラリは,これまたカレントディレクトリにlibディレクトリを掘って置いておけば,勝手に追加してくれる*2.
OracleとJ2SE5で致命的なバグ - minghaiの日記
Java5のBigDecimalの仕様変更には,ちょいとした恨みがあるんだけど,よもやOracleにも影響があったとは.
つーか,PreparedStatement#setBigDecimal()BigDecimalを使う以上,他のJDBCドライバも怪しむ必要があるかもダ.
(追記)会社のOracle10gで試してみたけど,ちゃんと再現したよ(ドライバは10.1.0.2だったかな?).
さらに言えば,PreparedStatement#setBigDecimal()が悪いんじゃなくて,BigDecimalが悪い.つまり,同現象はPreparedStatement#setObject()でも起こるのだ.
ちなみに,すべてのBigDecimalがダメなワケじゃなくて,元ネタが指数付きだとヤバイようだ.
なんで,
new BigDecimal("12500000");
なんてのは平気だ.
不味いのはJavalobbyに投稿してあったようなパターンで,
new BigDecimal(new Double(12500000).toString()); new BigDecimal("1.25E+7");
みたいのはダメ.
と考えると,doubleやfloatをBigDecimalの元ネタにしてなければ,案外平気なのかも知れない.
#ん?BigDecimalで乗除算したのも不味いか.