2007年12月24日

          在使用Spring相關產品時,你可能會碰到下面這種異常:
          Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
          這是異常的第一行,按以往的經驗,第一行應該就是問題所在,但是實際上,從這行來看你根本不知道錯在哪里。

          后面接下來的是:
          Error creating bean with name 'basicProcessingFilter'
          Cannot resolve reference to bean 'authenticationManager'
          while setting bean property 'authenticationManager';

          nested exception is Error creating bean with name 'authenticationManager'
          Cannot resolve reference to bean 'casAuthenticationProvider'
          while setting bean property 'providers' with key [0];

          nested exception is : Error creating bean with name 'casAuthenticationProvider'
          Cannot resolve reference to bean 'statelessTicketCache'
          while setting bean property 'statelessTicketCache';

          nested exception is: Error creating bean with name 'statelessTicketCache'
          Error setting property values;

          nested exception is
          nested PropertyAccessExceptions (1) are:
          PropertyAccessException 1:
          TypeMismatchException:

          Failed to convert property value of type [net.sf.ehcache.Cache]
          to required type [net.sf.ehcache.Ehcache] for property 'cache'

          Error creating bean with name 'authenticationManager'
          Cannot resolve reference to bean 'casAuthenticationProvider'
          while setting bean property 'providers' with key [0];

          nested exception is
          Error creating bean with name 'casAuthenticationProvider'
          Cannot resolve reference to bean 'statelessTicketCache' while setting bean property 'statelessTicketCache';

          nested exception is
          Error creating bean with name 'statelessTicketCache'
          Error setting property values;

          nested exception is
          nested PropertyAccessExceptions (1) are:
          PropertyAccessException 1: org.springframework.beans.TypeMismatchException:
          Failed to convert property value of type [net.sf.ehcache.Cache]
          to required type [net.sf.ehcache.Ehcache] for property 'cache'

          Error creating bean with name 'casAuthenticationProvider'
          Cannot resolve reference to bean 'statelessTicketCache'
          while setting bean property 'statelessTicketCache';

          nested exception is
          Error creating bean with name 'statelessTicketCache'
          Error setting property values;

          nested exception is PropertyAccessExceptionsException;
          nested PropertyAccessExceptions (1) are:
          PropertyAccessException 1:TypeMismatchException:
          Failed to convert property value of type [net.sf.ehcache.Cache]
          to required type [net.sf.ehcache.Ehcache] for property 'cache'

          Error creating bean with name 'statelessTicketCache'
          Error setting property values;

          nested exception is PropertyAccessExceptionsException;
          nested PropertyAccessExceptions (1) are:
          PropertyAccessException 1: org.springframework.beans.TypeMismatchException:
          Failed to convert property value of type [net.sf.ehcache.Cache]
          to required type [net.sf.ehcache.Ehcache] for property 'cache'

          PropertyAccessExceptionsException;
          nested PropertyAccessException details (1) are:
          PropertyAccessException 1:
          ypeMismatchException:
          Failed to convert property value of type [net.sf.ehcache.Cache]
          to required type [net.sf.ehcache.Ehcache] for property 'cache'

          上面的內容是我將重復信息去掉,并分塊后的結果。

          從報錯機制可以看出來,spring出現異常不同于普通的java異常,我們查異常的習慣一般是關注第一行,但是sping恰恰相反,要在sping中查錯,你必須分解他,因為spring的嵌套層次比較多,它報錯是從最高層報起,然后逐層往下,每個層次都會要報錯,直到最終出錯的地方,因此查sping的錯必須逐層分解到最底層,那里才是真正出錯的地方。

          OK,現在看出來了,真正錯誤的原因是:
          Failed to convert property value of type [net.sf.ehcache.Cache]
          to required type [net.sf.ehcache.Ehcache] for property 'cache'

          我出現這個錯誤的原因是使用了Acegi 1.0.5,它本身自帶了ehcache 1.2.4.jar
          但是我同時還使用了hibernate3.1,從Eclipse導入hibernate3.1時,將會導入ehcache 1.1.jar,因為hibernate本身也要使用EHCache,但是版本不同。

          posted @ 2007-12-25 10:02 Exiler 閱讀(3201) | 評論 (0)編輯 收藏

          公司做了套由JMS做消息隊列,從JMS取出對象后轉交給RTX服務器發送RTX消息的機制。
          前幾天出現重大BUG:消息不發送。

          經過兩天的測試發現了癥結所在:
          我們通過RTX服務器發送RTX消息的機制是通過向一個URL后面加參數來實現的,而這個請求URL,在RTX服務器上默認超時時間設置為0,即永不超時,同時此服務器設置的同一個連接兩次發送消息的最短間隔時間為15毫秒。
          因為我們網管的失誤,打開了8012端口,此端口為RTX服務器接收消息的端口,致使開發環境中的消息能夠發送到工作環境的服務器,使得RTX服務器接收的并發量出現瞬時過大現象,RTX服務器判斷為DDOS攻擊,因此拒絕服務,此服務器拒絕服務的方式為不返回任何值。
          同時,因為設置的超時時間為0,因此后繼的消息因為前面的并未拋出超時異常也未發送完成,所以積壓在JMS隊列中,造成了消息發送失敗的現象。

          一開始我一直在找JMS的原因,因為曾經在某處看到過JMS服務器并不穩定的文章,但是我在測試過程中發現,JMS還是很強大的,在消息積壓的時候,其隊列中最高曾積壓了4000多條消息,仍然能夠繼續工作,我使用的是ActiveMQ+Tomcat6.10。

          希望能給碰到類似JMS消息積壓現象的朋友一點啟示,從JMS消息不能正常取出入手,或許會有收獲!

          posted @ 2007-12-24 09:33 Exiler 閱讀(3965) | 評論 (5)編輯 收藏


          posts - 3, comments - 32, trackbacks - 0, articles - 3

          Copyright © Exiler

          主站蜘蛛池模板: 云和县| 宾川县| 天门市| 五指山市| 民乐县| 龙山县| 临夏市| 淄博市| 额济纳旗| 东平县| 辉南县| 新兴县| 昌乐县| 定州市| 裕民县| 万盛区| 车致| 濉溪县| 赞皇县| 岳阳市| 开远市| 四平市| 阜南县| 志丹县| 台中市| 鄂托克前旗| 西乌珠穆沁旗| 防城港市| 萨迦县| 丽江市| 甘洛县| 灵山县| 醴陵市| 雅江县| 红安县| 桐庐县| 淮滨县| 呼和浩特市| 深州市| 浠水县| 柳河县|