- PR -

Root exception is java.net.UnknownHostException について

投稿者投稿内容
もも
ベテラン
会議室デビュー日: 2007/07/01
投稿数: 78
投稿日時: 2008-08-20 11:35
jdk1.4.2
Red Hat Enterprise Linux 5

現在JNDIを使用して、Linux上からActive Directoryに認証にいっています。
そのときに、以下のエラーが発生してしまいます。
Windows XPから、同作業(同じjavaファイルを実行)を実行してもエラーを発生せず、正しく認証します。
原因と解決方法をご存じの方がいらっしゃいましたらご教示ください。

javax.naming.CommunicationException: hogehoge:389 [Root exception is java.net.UnknownHostException: hogehoge]
at com.sun.jndi.ldap.Connection.<init>(Connection.java:204)
at com.sun.jndi.ldap.LdapClient.<init>(LdapClient.java:119)
at com.sun.jndi.ldap.LdapClient.getInstance(LdapClient.java:1668)
at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2599)
at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:290)
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:175)
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:193)
at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:136)
at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:66)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243)
at javax.naming.InitialContext.init(InitialContext.java:219)
at javax.naming.InitialContext.<init>(InitialContext.java:195)
at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:80)
at AuthTest2.main(AuthTest2.java:36)
Caused by: java.net.UnknownHostException: hogehoge
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:153)
at java.net.Socket.connect(Socket.java:452)
at java.net.Socket.connect(Socket.java:402)
at java.net.Socket.<init>(Socket.java:309)
at java.net.Socket.<init>(Socket.java:124)
at com.sun.jndi.ldap.Connection.createSocket(Connection.java:346)
at com.sun.jndi.ldap.Connection.<init>(Connection.java:181)
... 14 more

[ メッセージ編集済み 編集者: もも 編集日時 2008-08-20 11:40 ]
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2008-08-20 13:30
hogehogeというホスト名を名前解決できてませんね。
/etc/hostsにでも追加してあげるとか。
もも
ベテラン
会議室デビュー日: 2007/07/01
投稿数: 78
投稿日時: 2008-08-20 15:58
>mio様

ご返答ありがとうございました。
>/etc/hostsにでも追加してあげるとか。
上記方法を考えてみたのですが、このhostファイルは、IPに別名を与えてあげるファイルなのかなぁ・・・・?と思いまして、正しい解決方法か分からずに、躊躇しております。
こういった場合は、一般的にhostsに追加するものなのですか?

何卒よろしくお願いします。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2008-08-20 16:36
「別名」というのが何をイメージしてるか分かりませんが、「かなぁ?」ということならhostsが何かを調査すれば良いのでは…。

resolv.confにDNSを入れるとか、名前解決はhostsだけではないです。
もも
ベテラン
会議室デビュー日: 2007/07/01
投稿数: 78
投稿日時: 2008-08-20 17:18
>mio様

ご返答大変ありがとうございました。
そして、怠惰な書き方をして大変申し訳ありませんでした。
hostsは「IP アドレスをマッピングする」というファイルであることだと理解しておりましたが、うる覚えでしたので曖昧な書き方をしてしまいました。
説明が足りなかったので、細かく説明しますと、windowsXP環境では、hostsファイルに設定しなくても、Active Directoryに接続できていましたので、Linux特有の設定が必要なのかなぁと思いました。
/etc/hostsとwindowsのhostsは同類のファイルなのでは?(この部分も再度調べてみます。)と考えているので、windowsXPではそのような設定が不要で、linuxではその設定が必要なのが解せないと思っています。
OSが違うと、そのような設定が必要なのでしょうか?
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2008-08-20 20:35
すでに書いたように名前解決はhostsだけではないので、Windowsからは別の誰かが名前を解決してくれていることになります。
その「誰か」に、Linux機が訊ねていないのでしょう。
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2008-08-20 22:00
引用:
ももさんの書き込み (2008-08-20 17:18) より:
windowsXPではそのような設定が不要で、linuxではその設定が必要なのが解せないと思っています。
OSが違うと、そのような設定が必要なのでしょうか?



話を急ぎ過ぎだと思います。
OSが異なれば設定の流儀が変わるのは良くあることですが、一方は設定不要で、もう一方は設定が必要、という考えは飛躍があるでしょう。

意識せずに設定していたモノが効いている可能性もあります。どの設定がどのように効いてくるのか、まずは把握した方が良いでしょう。

で、mio氏の回答にあるとおり、「名前解決はhostsだけではない」です。
これは Linux でも Windows でも同じです。
Linux に関しては、nsswitch.conf ( NSS … Name Service Switch の設定 ) の man が参考になるでしょう。項目としては hosts になります。
一般的には DNS が絡んできます。DNS に関しては、resolv.conf の man をどうぞ。

もしかすると、Windows の TCP/IPのプロトコル→詳細設定→DNS での「DNSサフィックスを追加する」の部分で、Linux機と相違が出ているかもしれません。単なる勘ですが。
対応するのは、resolv.conf の domain や search といった項目になります。
もも
ベテラン
会議室デビュー日: 2007/07/01
投稿数: 78
投稿日時: 2008-08-21 08:58
>mio様、angel様

ご丁寧なご回答ありがとうございました。
Windowsも、Linuxもインストールから携わったのでてっきりOSによる違いなんだとばかり思い込んでました。
まずは、現状調査を行ったほうがよさそうですね。
思わぬところが効いている可能性を捨てていました。
ヒントを沢山いただいたので、調査したいと思います。
ありがとうございました。
結果が分かり次第、ご報告したいと思います。

スキルアップ/キャリアアップ(JOB@IT)