【Java】Java1.6/SolarisのSSL通信バグ対応


SOAPで接続していた連携先のシステムに、ある日突然つながらなくなった。
SOAP連携の処理で接続しようとすると以下のようなJavaのStackTraceが出てくる。

…  
Caused by: java.lang.RuntimeException: Could not parse key values  
        at sun.security.pkcs11.P11Key$P11ECPublicKey.fetchValues(P11Key.java:1000)  
        at sun.security.pkcs11.P11Key$P11ECPublicKey.getW(P11Key.java:1021)  
        at com.sun.net.ssl.internal.ssl.ECDHClientKeyExchange.<init>(ECDHClientKeyExchange.java:40)  
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:779)  
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:238)  
        at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593)  
        at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:529)  
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:958)  
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1203)  
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1230)  
        ... 89 more  
Caused by: java.io.IOException: extra data given to DerValue constructor  
        at sun.security.util.DerValue.init(DerValue.java:368)  
        at sun.security.util.DerValue.<init>(DerValue.java:277)  
        at sun.security.pkcs11.P11Key$P11ECPublicKey.fetchValues(P11Key.java:991)  
        ... 98 more  
…  


Java1.6/OS:Solaris。
ただ、なぜかJava1.6/OS:Windowsだと問題なく動く。(JavaのVerは同じでOSだけ違う)


【Java】Exceptionを強制throwさせて絶対そこで処理を中断させる


「とにかく何が何でもそこから先の処理にいってほしくない」という場合、
処理を強制的に中断させる目的で無条件にExceptionをthrowするようなコーディングするとコンパイルエラーになる。
ただこれにちょっと手を加えることで、誰がどう見ても明らかに絶対そこで落ちるにも関わらず
結果的に強制処理中断するロジックとして成立させることができる。


 


【Oracle】既存テーブルの項目定義流用してテーブルCreateだけする(WHERE句に0=1つける)


あるテーブルをつくる(Createする)とき、既存テーブルの項目定義情報をそのまま流用したいときがある。
そのとき、いちいち流用したいテーブルの項目定義調べてCreate文書くのが面倒だったりするので、
Select+Createの要領で、かつ「絶対に結果が返ってこない条件」を意図的に書くことで、
テーブルの項目定義を簡単に流用することができる。



【UNIX】teeコマンド

標準出力の内容を同時にファイルにも書きだすコマンドとして「tee」ってのがある。 標準出力+ログファイルに同じ情報を挙げたいという場合に便利。

最近のこと20160609

仕事が忙しくなってきた。プロジェクトの状況が少し特殊になってきていて、全体的・局所的に明確なゴールの見えない日々が続いている。 「他システムと

【UNIX】変数文字列を扱う時のシングルクォーテーション有無について


正直個人的にあんまり区別つけずに使っていたがなんとなくわかってきたので備忘的にメモ

UNIXで適当な環境変数「var」を用意してそいつを使う場合、

var="aaa"  

echo $var ←①
echo ‘$var’ ←②



としたとき、①と②は結果が違う。

$ aaa	←①  
$ $var	←②  



ってなる。
つまり②は評価してほしい変数の中身ではなく評価式(っていうの?よくしらんが)がそのまま出る。
シングルクォーテーションで囲うと、中に変数を書こうが、書かれた文字列をそのまま扱うという動きをするのだ。
(今さらながら思い知った)