Java7とJavaMail

Java7でJavaMailを使うと、以下のようなエラーでSMTPサーバへの接続が失敗します。

javax.mail.MessagingException: Could not connect to SMTP host: 192.168.151.201, port: 25;
nested exception is:
java.net.SocketException: Network is unreachable: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
at javax.mail.Service.connect(Service.java:275)
at javax.mail.Service.connect(Service.java:156)
at javax.mail.Service.connect(Service.java:105)
at javax.mail.Transport.send0(Transport.java:168)
at javax.mail.Transport.send(Transport.java:98)
...

Caused by: java.net.SocketException: Network is unreachable: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:232)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1250)
... 11 more

なぜかLinuxマシンではエラーが出ず、Windowsマシンでのみ発生。
念のためtelnetSMTPを喋ってみたら、正しく接続できる。

調べてみたら以下の記事を見つけました。

Java Mail mystery - SMTP blocked?
http://stackoverflow.com/questions/14064111/java-mail-mystery-smtp-blocked

どうもJava7になってから、IPv6ネットワークアダプタが存在する場合にそっちを優先的に使おうとするようですね。WindowsはXPの頃からIPv6がデフォルトで(使ってなくても)設定されますから。

Javaの起動オプションで

-Djava.net.preferIPv4Stack=true

を指定することで解決。

または、プログラム内から以下を呼び出すことでも同じ結果が得られるようです。

System.setProperty("java.net.preferIPv4Stack", "true");

JavaMail API

JavaMail API

Java Mail完全解説

Java Mail完全解説

Maven 1.1リリース

Maven 1.*系のメンテナンスリリース。

Maven 1.1 is meant to improve the performance and stability for those using Maven 1.0 for their builds.
Compared to Maven 1.0.2, this release features several enhancements:

* Integration of Maven 2 technologies such as Maven Wagon, Maven SCM and the new model code
* Ant 1.6.5 support
* Upgrade dependencies, in particular Jelly, Dom4j, Jaxen, Commons-Jexl, and many others.
* Upgraded versions [2] of almost all the bundled plugins,
* Improved error handling and reporting.
* Improved POM layout
* Significant improvements in memory usage and general performance.
* Documentation updates.

ということらしいです。

Maven 2.0.5がリリースされました

Mavenウォッチャーとしては、一応チェック。

なかなか実際のプロジェクトで使うところまで行かないのですが、個人的趣味でプロトタイプ作る時などは重宝します。Jakarta等の様々なライブラリの依存関係を自動解決してくれるので、使いそうな部品をpom.xmlに並べてやる程度で、さくっと全体ビルドの仕組みができあがります。

pom.xmlの記述法を覚えるのに少し苦労しますが。

なかなか思い通りには・・・

やっぱりblog書く時間がとれません。単に意識の問題かもしれませんが。

最近は移動時間が多いので、携帯電話やPDAから更新できなくもないのですが、本腰入れて技術ネタを書こうと思ったら、やはりPCでないと辛いですね。以下、最近気になっているキーワードをいくつか。

DWR(特にReverse Ajax

わがライフワークとも言える某システムでの採用を真剣に検討中。5年前はイケてると思ってたアーキテクチャも、もう限界&面白みがなくなってきたので・・・。

Java SE 5,6,7 ...

いちおう追っかけてます。JSR 296: Swing Application Frameworkを知り、少し興味を持っています。あと、クロージャ

Windows Vista

ルック&フィール以外の変更点がよく分かっていません。Windows MEと同じイメージを持ってしまうのですが・・・。