<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 42  文章 - 71  trackbacks - 0
    <2012年2月>
    2930311234
    567891011
    12131415161718
    19202122232425
    26272829123
    45678910

    常用鏈接

    留言簿

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    同樣的一段代碼,在我的機器上是OK的,在測試環境也是OK的。就是到了新來的同事機器上,那叫一個慢啊。輸入用戶名口令,登錄,需要等待1分鐘……

    初步判斷肯定是LdapTemplate做操作的時候花費了很長的時間。LdapTemplate的配置如下:

    <bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
            <property name="url" value="ldap://192.168.1.77:389/dc=cn,dc=earth"/>
            <property name="userDn" value="cn=root"/>
            <property name="password" value="tjmc123"/>
    </bean>
    <bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate">
            <property name="contextSource" ref="contextSource"/>
    </bean>
        
     

    但是還是看不出問題。實在是百思不得其解了,只好查看Thread dump了,在這里花費了很長的時間:

    "qtp22172629-23" prio=5 tid=0x1741d1d0 nid=0x1760 runnable [0x17f9e000..0x17f9fd68]
            at java.net.Inet4AddressImpl.getHostByAddr(Native Method)
            at java.net.InetAddress$1.getHostByAddr(InetAddress.java:842)
            at java.net.InetAddress.getHostFromNameService(InetAddress.java:532)
            at java.net.InetAddress.getHostName(InetAddress.java:475)
            at java.net.InetAddress.getHostName(InetAddress.java:447)
            at java.net.InetSocketAddress.getHostName(InetSocketAddress.java:210)
            at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:341)
            at java.net.Socket.connect(Socket.java:507)
            at java.net.Socket.connect(Socket.java:457)
            at java.net.Socket.(Socket.java:365)
            at java.net.Socket.(Socket.java:178)
            at com.sun.jndi.ldap.Connection.createSocket(Connection.java:346)
    ......

    看起來,是在嘗試解析主機域名/地址信息。可是我配置的是IP地址啊,為啥還去解析?先不管這些了,先在本地hosts文件中配置一下LDAP服務器的別名吧。配置完本地hosts文件之后,測試,一切OK了。

    回想起來,因為我的機器和測試環境應用主機上都有LDAP服務器的別名配置,所以沒有出現連接慢的問題,而新來的同事的hosts文件是干干凈凈的,所以,杯具了……

    //------------------------------------

    分析了Spring-ldap的代碼以及關鍵的類InetSocketAddress,過程大概是這樣的:

    spring-ldap的LdapContextSource會把設置的屬性url的值中,ldap://和端口之間的字符串當做主機名(注意,是當做主機名,是String對象,不是地址)傳入給LdapClient去建立和LDAP服務器之間的連接。而LdapClient通過層層調用之后,最終通過構造器InetSocketAddress(String hostname, int port) 創建了InetSocketAddress對象。

    在JDK的文檔上關于InetSocketAddress(String hostname, int port)有如下描述:

    Creates a socket address from a hostname and a port number.
    An attempt will be made to resolve the hostname into an InetAddress. If that attempt fails, the address will be flagged as unresolved.

    無需再解釋什么了……

    回頭想想,介紹spring-ldap的文章也好,示例代碼也好,基本上都是在url上寫域名,很少見寫地址的,看來,spring-ldap是鄙視IP地址的方式訪問LDAP服務器的了。

    環境列表:

    Sun HotSpot JDK 1.5.0_05

    Spring-ldap: 1.3.0

    Spring: 3.0.4

     

    Technorati 標簽: ,,
    posted on 2012-02-29 16:41 YODA 閱讀(4033) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲免费在线观看| 7m凹凸精品分类大全免费| 久久精品国产精品亚洲蜜月| 91人人区免费区人人| 亚洲欧美日韩一区二区三区在线| 亚洲人成影院在线观看| 7m凹凸精品分类大全免费| 色偷偷亚洲第一综合| 亚洲AV日韩AV高潮无码专区| 好男人视频社区精品免费| 中文字幕无码日韩专区免费| 亚洲丰满熟女一区二区哦| 精品亚洲永久免费精品| 日韩视频在线免费| 日本亚洲欧洲免费天堂午夜看片女人员 | 久久国产乱子精品免费女| 亚洲老熟女五十路老熟女bbw| 久久久久久久尹人综合网亚洲| 好爽…又高潮了免费毛片| 永久免费av无码入口国语片| 亚洲精品无码日韩国产不卡av| 久久久久亚洲AV片无码| 亚洲第一黄片大全| 一区二区无码免费视频网站 | 国产免费的野战视频| 插鸡网站在线播放免费观看 | 久久WWW免费人成一看片| 国产视频精品免费视频| 暖暖免费在线中文日本| 亚洲日本成本人观看| 亚洲精品国产成人99久久| 亚洲性在线看高清h片| 日韩免费福利视频| 歪歪漫画在线观看官网免费阅读 | 亚洲性在线看高清h片| 国产在线观看免费不卡 | 亚洲国产a∨无码中文777| 亚洲国产精品一区二区九九| 夫妻免费无码V看片| 真人做A免费观看| 无码AV片在线观看免费|