<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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 精品一区二区三区免费观看| 国产一级淫片免费播放电影| 香蕉免费在线视频| 亚洲 日韩经典 中文字幕| 九月丁香婷婷亚洲综合色| 免费人成视频x8x8入口| 五月天网站亚洲小说| 2019中文字幕免费电影在线播放 | 免费夜色污私人影院网站| 亚洲熟妇无码久久精品| 久久亚洲综合色一区二区三区| www.亚洲一区| 日本免费人成黄页在线观看视频 | 亚洲国产品综合人成综合网站| 亚洲精品国产精品乱码不卡√| 免费一级毛片正在播放| 麻豆国产精品入口免费观看| 成年网站免费视频A在线双飞| 30岁的女人韩剧免费观看| 嫩草在线视频www免费观看| 两个人www免费高清视频| 一区二区免费国产在线观看 | 日韩免费福利视频| 精品国产免费一区二区| 日本免费一本天堂在线| 免费激情视频网站| 国产在线观看免费不卡| 浮力影院第一页小视频国产在线观看免费 | 激情综合亚洲色婷婷五月| 亚洲国产精品线观看不卡| 亚洲综合无码一区二区三区| 亚洲电影中文字幕| 日产亚洲一区二区三区| 中文字幕亚洲免费无线观看日本| 亚洲AV日韩AV永久无码绿巨人 | a级毛片免费观看网站| 一级毛片免费播放试看60分钟| 成人免费视频一区二区| 国产成人精品免费视频大全| 插鸡网站在线播放免费观看| 在线观看免费黄网站|