<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # java容器 java容器很很多,tomcat、jetty、jboss、resin、weblogic、webspere等等。 有收費的,也有開源免費的,性能可能是有些許差異的,理論上,收費的應該比免費的,性能要要一些。 但是,用開源免費的來做巨大訪問量的(比如千萬PV)應用,也是毫無問題的,當前我們所處的技術浪潮,性能的瓶頸一般都在數據庫上,在硬盤的訪問上,而不是網絡請求和響應。 **已知互聯網公司使用的java容器:** jetty:google、美團 tomcat:yougou.com jetty官網:[http://www.eclipse.org/jetty/](http://www.eclipse.org/jetty/) jetty源碼:git clone https://github.com/eclipse/jetty.project.git 關于tomcat的博客:[http://blog.csdn.net/puma_dong/article/details/21875253](http://blog.csdn.net/puma_dong/article/details/21875253) [Jetty 的工作原理以及與 Tomcat 的比較](http://www.ibm.com/developerworks/cn/java/j-lo-jetty/) [Google App Engine轉向了Jetty](http://www.infoq.com/cn/news/2009/08/google-chose-jetty/) # jetty日志 ### jetty的日志記錄 本周遇到一個jetty日志的問題,看jetty的request.log日志中,我們post過來的參數沒有記錄,google了好久,沒有答案,于是把jetty源碼下載下來,看了看日志這部分:jetty-server/src/main/resource/org/eclipse/jetty/server/NCSARequestLog.java,發現日志中關于參數相關的日志,只記錄了request.getUri(),也就是說只有get的參數才能記錄到日志里面去,post的參數都不會記錄到日志里面。 **相關帖子:** [http://wiki.eclipse.org/Jetty/Tutorial/RequestLog](http://wiki.eclipse.org/Jetty/Tutorial/RequestLog) ### 啟動過程中一個日志輸出的問題 啟動過程中,jetty的INFO級別及以上的日志,會打印到IDE控制臺(比如Eclipse),突然有一天,日志不再打印到IDE控制臺,而是到某個地方后,重定向到了logs/jetty.log.2015-06-10,如圖: ![](https://box.kancloud.cn/2016-05-27_5747b452330eb.jpg) 開始發現這個日志和mms-boot-0.8.jar中的配置一致,截圖如下: ![](https://box.kancloud.cn/2016-05-27_5747b45272af3.jpg) 所以把問題的原因定義為:jetty定義的重定向,對于控制臺的輸出重定向到了文件(實際jetty8.xml僅僅是對System.out/error進行了重定向)。 后來了解到,其他的項目也是同樣的啟動方式,沒有這個問題。 于是重新查原因,對比hotel-campaigns和hotel-cms的日志的不同,開始時有“先入為主”的思維定勢,潛意識相信是jetty8.xml再搗鬼,所以對比兩個項目的依賴mms的版本、及執行jetty8.xml處的日志,修改log4j.xml配置文件進行多種辦法的嘗試,沒有找出問題。 結合下午發現的log4j.xml配置文件不生效,可以確定:IDE啟動hotel-campaigns項目時,對于slf4j的實現,用了logback,為什么突然用了logback呢? 結合pom.xml,可以看到: ![](https://box.kancloud.cn/2016-05-27_5747b452a975a.jpg) 于是exclusions 這個jar,問題解決。 **參考文章:** [http://www.slf4j.org/codes.html#multiple_bindings](http://www.slf4j.org/codes.html#multiple_bindings) [http://www.slf4j.org/manual.html](http://www.slf4j.org/manual.html) # 嵌入式Jetty和RunJettyRun插件 使用RunJettyRun插件,項目運行正常,截圖如下: 使用嵌入式方式運行,打不出啟動成功的標記,截圖如下: 開始嘗試解決問題: 1、由于“springmvc”是web.xml里面關于SpringMVC的servlet,嘗試把SpringMVC相關的內容都去掉,依然沒有打出啟動成功的日志 2、嘗試著訪問了一下antispider-server提供的Thrift服務和Web服務,結果都是正常的,很是疑惑,這個時候懷疑:RunJettyRun插件(這相當于Jetty容器)和Bootstrap(這相當于Jetty內嵌),對于SpringMVC或者Web項目的處理方式,有很大不同,導致沒有正常啟動完畢。 評:這實際是由于對Jetty理解不深刻,胡亂猜忌Jetty了,如果作為容器和嵌入式,有很大的差別,這簡直是不可想象的。 由于沒有解決問題,結合Bootstrap源碼,關注以上圖示中的“第一點”和“第二點” 第一點:這一點沒啥好說的,就是src/main/resource下沒有config.properties,對于結果沒有影響,期間經歷一個小插曲,hotel-campaigns-web項目,沒有config.properties文件,也沒打這行日志,經查是因為依賴的sinai.client里面有config.properties 第二點:這一點因為使用RunJettyRun插件時沒有這個日志,所以被高度懷疑,差異了一些資料,但是依然沒有解決 http://stackoverflow.com/questions/22938689/info-no-spring-webapplicationinitializer-types-detected-on-classpath http://stackoverflow.com/questions/16321819/no-spring-webapplicationinitializer-types-detected-on-classpath http://steveliles.github.io/setting_up_embedded_jetty_8_and_spring_mvc_with_maven_and_no_xml.html http://hitmit1314.iteye.com/blog/1315816 3、萬不得已,新建一個單純的aitispider-test項目,使用Bootstrap運行,并逐漸增加antispider-server的配置文件,終于在一步增加log4j.xml時,問題重現,找出原因: 4、"org"中,“ERROR”以下級別的日志被過濾了,用RunJettyRun插件,啟動成功,是oejs包打印的,所以能顯示;而用嵌入式Jetty,啟動成功是org包打的,所以被過濾掉了,截圖如下: 5、故事到此就結束了,但這個經歷,加深了對嵌入式Jetty的理解:服從一套規范,實現一組標準,幫我們實現高效的Web通訊。如果寫過ServerSocket通訊程序,會對嵌入式Jetty更深入的了解。 另外一個沒有微觀佐證的問題,關于Maven解決沖突的方式: 對于,這個問題,我使用準確告訴maven使用版本的方式解決(這是最標準、明確的方式,本身對于pom.xml就應該進行準確的定義,不應該依賴Maven自定義的方式幫我們解決沖突):
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看