2014-11-06 52 views
0

我的spring MVC控制器被調用兩次。最煩人的是它不是確定性的,有時它會發生一些不是。控制器bean的實例是相同的(我已經打印了引用),但堆棧調用是不同的。我打印了,並提出了差異,唯一的區別是:Spring MVC控制器調用兩次堆棧不同控制器實例是一樣的

< at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
--- 
> at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 

如此看來,一個是以線310打了個電話,另一種被稱爲由312似乎當請求需要發生更多的時間(它必須去數據庫等)。

我已經使用FF和Chrome進行了測試,並且此請求也是通過瀏覽器欄進行的GET請求,因此它沒有任何前端代碼。

該應用程序在Apache Tomcat/7.0.47下運行。

代碼示例:

@Controller 
@RequestMapping(value = "/base") 
public class AdyenApiController { 

    @Autowired 
    private AdyenNotificationService service; 

    @RequestMapping(value = "/debug/due", method = RequestMethod.GET) 
    @ResponseBody 
    public ResponseEntity<String> dueScheduler() { 
     try { 
      throw new RuntimeException(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     System.out.println("> " + this); 
     System.out.println("EXECUTING?!"); 
     service.processModifications(); 
     return new ResponseEntity<>("processed dues)", HttpStatus.OK); 
    } 
} 

是否有人有任何想法,這可能是?

+0

你能否粘貼誰le錯誤和您的控制器代碼? – Aeseir 2014-11-06 22:49:22

+0

沒有錯誤我只是爲了看到堆棧而發生錯誤。錯誤是控制器被調用兩次。 – rpvilao 2014-11-06 22:53:02

+0

因此,爲了澄清你輸入localhost/some_page,它會調用兩次映射到「some_page」的相同的「方法?」 – Aeseir 2014-11-06 22:54:18

回答

0

這是鉻製造兩個請求。

0

是的。這發生在Chrome中,但對於Safari來說,這沒什麼。

見我的結果,打印用戶代理 進來的:1498879041319,代理= Mozilla的/ 5.0(Macintosh上;英特爾的Mac OS X 10_12_0)爲AppleWebKit/537.36(KHTML,例如Gecko) /58.0.3029.110 Safari瀏覽器/ 537.36 進來的:1498879041596,代理= Mozilla的/ 5.0(Macintosh上;英特爾的Mac OS X 10_12_0)爲AppleWebKit/537.36(KHTML,例如Gecko) /58.0.3029.110 Safari瀏覽器/ 537.36 進來的:1498879049068,代理= Mozilla的/ 5.0(Macintosh的;英特爾Mac OS X 10_12)AppleWebKit/602.1.50(KHTML,如Gecko)版本/ 10.0 Safari /602.1.50