導航:首頁 > 編程語言 > dubbojava啟動

dubbojava啟動

發布時間:2025-05-12 00:16:30

Ⅰ 關於升級 Dubbo 版本到 2.6.5 後啟動失敗的「坑」

Dubbo 從低版本升級到 2.6.5 版本後,啟動失敗,報錯如下:

<b><font color='red'>上終極方案:使用 2.6.2 以下版本或者 2.7.0 以上版本的 bbo ;</font></b>

具體解決方式需要根據項目的情況解決,提供一些其他方案:

刪除 web.xml 中如下的配置:

Spring Boot 工程沒有特別好的解決方案,提供兩個解決思路:

這個方案也沒有繞過添加 web.xml 的命運,做法如下:

觀察報錯日誌,報錯位置很明顯是 Spring 框架初始化時的報錯,重點是: there is already a root application 。

這個錯誤拋出位置余汪返位於: Spring-web 包的 ContextLoader 類的 initWebApplicationContext 方法。

原因很明顯, ContextLoader 被調用了至少兩遍,第二遍報錯導致項目初始化失敗,其主要的「罪魁禍首」是 bbo 包下面的 web-fragment.xml 。

Servlet 3.0 是隨著 java EE 6 規范發布的,主要新增特性:

支持 Servlet 3.0 規范的容器,在啟動後會掃描工程的 jar 包,找到符合規范的 添加了相關註解的類 和 web-fragment.xml 然後跟 web.xml 的配置合並作為整個項目的初始化配置。

上述問題的發生原因很明顯了:

這個是 Servlet 3.0 提供的一個屬性,等同一個開關,設置為 true 則表示 web.xml 已經提供了全部的配置信息,不需要容器再去各個 jar 包找配置了陵罩,換句話就是:關閉 可插特性 ;

這個屬性是 注釋裡面提供的解決思路。這個屬性可以理解為指定 web-fragment.xml 的載入順序,和 ordering 標簽的區別是, absolute-ordering 僅僅針對我們指定的 web-fragment.xml 做排序。

輕易升級一個基礎框架不是一個好的做法豎飢,<b>升級基礎框架還是應該關注下當前版本和目標升級版本,框架作者做了些什麼事情,出現過什麼BUG。</b>

當前的 Spring Boot 的解決方案並不讓人滿意,畢竟 Spring Boot 的無Xml的感覺還是很爽的,為了這個升級引入了 web.xml 會有一點點不爽。

Ⅱ 現在開發網站,好像都是流行用php,那java web一般用在哪裡呢它們之間的區別和優劣勢在哪裡呢

1. php即寫即用的。
也就是說每次只有一改動完成,用戶立馬看到效果,而java則慢多了,代碼改動完成後,要重新編譯,然後重啟jvm,中間耗費的時間可是不少啊,而且重啟jvm過程可是會造成用戶響應中斷的哦。
2. php寫東西快。
php可以說是非常敏捷的,一個需求給到,只要不考慮後期的性能和用戶量問題,那是相當快速的,甚至你都可以不用框架,直接寫也會非常快的,寫一個增刪改查功能,可能也就30-50行代碼就搞定了。而java就慢多了,首先要想一下用什麼框架,目前基本上就是spring了,然後就是配置各種資料庫,過濾器,servlet,決定是用mybatis還是hibernate,然後考慮代碼之間的傳遞,然後考慮事務。。。 然後不停調試,一改代碼可能就是幾分鍾的等待時間,可想而知。
3. php的表面思路更清晰。
什麼是表面思路,就是你看到的東西就是真正做出來的東西,比如echo "hello world",就是輸出hello world,而java則不同,你可能是寫response中,可能是寫在modelattribute中,也可能就是return了該字元串,然後不知道怎麼的,它就顯示到頁面上了。
4. php佔用內存少。
php是進程式處理問題的,佔用內存相當少,可以說,你在一台機器部署50個項目沒有任何問題,只要訪問量不上來,搞得定。而java就不行了,java每啟動一個項目,本身就得耗盡許多內存,比如在一台8g內存的機器上,一般跑上2個項目就差不多了。
說了這php的好處,難道java就沒有好處嗎?那是不可能的。
1. java組件多。
我個人覺得單是這一點就蓋過其他所有優點了,因為組件多,意味著用的人多,群眾的眼睛是雪亮的。所以,java一定是好的,它已經積淀了太多的東西,不是一門新型語言能夠隨便替代的。你想要做什麼,好好搜索java組件,可能都有你需要的功能,特別對於當下最流行的大數據產業,java更是占據一方。而php在這種場景就有點無能為力了。
2. java線程池,連接池,非同步化方便。
其實這一點和第一點也很相似,也是因為組件多,所以要使用線程池連接池都很方便,這對於高並發高性能的場景來說,是絕對必要的。因為java的運行原因就是多線程的,所以不用每次都去初始化很多基本的東西,這省去了太多的時間,也因此大家可以忍受伺服器啟動的緩慢過程,因為只有一次。而php則是多進程的,每次都需要重新載入所有需要的代碼,也因此無法將一些常用數據保存在內存,連接池也不大好做,非同步操作更是一個大短板。
3.java是真正意義上的邏輯清晰。
因為,java中,你可以從一個進入可以藉助IDE工具分析到最深層次的邏輯操作,對於每個欄位,都可以清晰明了,這其實是介面和完全對象的一個使用優點。而php則做不了或者說很少有人費那勁去做這種事情,php可以說是半面向對象半面向過程開發,所以,在調用過程中插入幾個自定義的函數調用是很正常的,那麼你再想通過簡單的IDE去分析調用鏈就不那麼容易了。比如,對於第三方提供的介面,php就很難清楚的看出介面返回了什麼,除非你把它列印出來,但是列印出來也不一定對,因為有些返回值的數據不一定有體現。這對於理解代碼來說,增加了一個大大的門坎。
4. 雖說java編譯比較煩,但是可以為你提前發現錯誤。
java的編譯的確比較耗時,但是如果有明顯的錯誤,編譯是不會通過的,這就給你一個重新檢查代碼的機會。而php則不會,不管你寫得多爛,都不會給你提示什麼,而許多時候,往往就因為少寫了個;分號,導致你排查數小時。
5. java遠程調用方便,rmi,hessian,bbo。
不管怎麼樣,遠程和本地調用都很方便的知道相關的信息,而且java的同語言調用不是採用純粹的http調用,而且維護一定的連接,從而大大提高性能。而php也有遠程調用,但是相對來說就弱許多了。
其實沒有問題是沒有絕對的好壞的,存在即合理。只是應用場景不一樣罷了。

閱讀全文

與dubbojava啟動相關的資料

熱點內容
win7無法打開隱藏文件 瀏覽:757
怎樣把壓縮文件變成空白文件 瀏覽:516
wokrNC和UG編程哪個好 瀏覽:487
愛奇藝隨刻文件名 瀏覽:40
wps是怎麼壓縮文件 瀏覽:986
dos配置文件名 瀏覽:582
java軟體工程師做什麼 瀏覽:897
3dmax導出ive文件 瀏覽:464
數據重復性好是什麼意思 瀏覽:166
如何查找電腦文件使用歷史記錄 瀏覽:821
linux可以運行exe的文件嗎 瀏覽:935
庫幣是哪個國家的app 瀏覽:201
大智慧internet文件夾有哪些文件 瀏覽:89
編程培訓課程哪個排名好 瀏覽:124
我的cad怎麼沒顯示文件選項卡 瀏覽:952
命令行當前是哪個資料庫 瀏覽:588
為什麼appstore打開空白 瀏覽:574
選貨車軟體什麼app最好 瀏覽:577
psv仙境傳說ace如何降級版本 瀏覽:460
杭州哪裡學少兒編程比較好 瀏覽:642

友情鏈接