2012-06-03 57 views
0

我有一個小型的java web應用程序,當用戶單擊按鈕時,我可以在服務總線隊列中發送消息。我想在我的jsp頁面上顯示消息。但是,當我撥打電話無法在服務總線隊列上獲得消息

resultQM = service.receiveQueueMessage(queueName, opts);

我得到下面的異常。在此先感謝您的幫助。

java.lang.IllegalArgumentException: org.codehaus.jackson.map.JsonMappingException: Can not construct instance of java.util.Date from String value 'Sun, 03 Jun 2012 13:54:40 GMT': not a valid representation (error: Can not parse date "Sun, 03 Jun 2012 13:54:40 GMT": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd")) 
at [Source: [[email protected]; line: 1, column: 70] (through reference chain: com.microsoft.windowsazure.services.serviceBus.implementation.BrokerProperties["LockedUntilUtc"]) 
    com.microsoft.windowsazure.services.serviceBus.implementation.BrokerPropertiesMapper.fromString(BrokerPropertiesMapper.java:41) 
    com.microsoft.windowsazure.services.serviceBus.implementation.ServiceBusRestProxy.receiveMessage(ServiceBusRestProxy.java:187) 
    com.microsoft.windowsazure.services.serviceBus.implementation.ServiceBusRestProxy.receiveQueueMessage(ServiceBusRestProxy.java:151) 
    com.microsoft.windowsazure.services.serviceBus.implementation.ServiceBusExceptionProcessor.receiveQueueMessage(ServiceBusExceptionProcessor.java:108) 
    messaging.QueueListener.getMessage(QueueListener.java:22) 
    org.apache.jsp.index_jsp._jspService(index_jsp.java:116) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 

回答

0

我覺得這個例外很明顯嗎?有一條消息包含一個包含日期的字符串,並且該庫無法將該字符串解析爲有效的日期。

"Sun, 03 Jun 2012 13:54:40 GMT": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd") 
+0

是的,但我不知道如何解決這個問題,因爲我不是操縱字符串的人......它來自底層庫,我不知道我的代碼是如何牽連的...... – orleant

+0

我試圖直接在雲上部署應用程序,它工作正常......我仍然奇怪它爲什麼不能在模擬器上工作。 – orleant

+0

這是因爲雲中的機器可能位於美國本地。 –

0

設置默認的系統區域設置爲US調用receiveQueueMessage前:

Locale.setDefault(Locale.US); 

原因:

在Windows Azure SDK for Java使用傑克遜創造的SimpleDateFormat對象時,它使用默認的系統區域解析日期。 Windows Azure服務總線返回使用RFC-1123和英語區域設置格式化爲字符串的日期。 RFC-1123日期格式包含星期幾,並且當您的默認語言環境不是英語且具有不同的星期幾名稱時,解析器將失敗。

來源:Alexander Racheev's answer在MSDN論壇。

0

在最新版本的Windows Azure SDK for Java版本0.4.2中。這應該已經修復,讓我們知道如果任何人仍然可以repro這一點。

相關問題