?1、使用Servlet容器運行(Tomcat、Jetty等)----不可取?
? 缺點:增加復雜性(端口、管理)?浪費資源(內存)?
假設1個服務模塊時,需要1臺tomcat,消耗3個端口,和200MB左右內存
假設10個服務模塊時,需要10臺tomcat,消耗30個端口,和2000MB左右內存
假設100個服務模塊時,需要100臺tomcat,消耗300個端口,和20000MB左右內存
.......大型的分布式項目將不可想象!!!!
?2、自建Main方法類來運行(Spring容器) ----不建議(本地調試可用)?
?缺點:Dobbo本身提供的高級特性沒用上?
?自已編寫啟動類可能會有缺陷。
比如關閉dubbo的時候,控制臺直接點擊關閉,如果此時dubbo有服務正在調用,就會導致失敗。
代碼:
package dubbo.test;import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** * @描述: 啟動Dubbo服務用的MainClass.*/
public class DubboProvider {private static final Log log = LogFactory.getLog(DubboProvider.class);public static void main(String[] args) {try {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/spring-context.xml");context.start();} catch (Exception e) {log.error("== DubboProvider context start error:",e);}synchronized (DubboProvider.class) {while (true) {try {DubboProvider.class.wait();} catch (InterruptedException e) {log.error("== synchronized error:",e);}}}}}
?3、使用Dubbo框架提供的Main方法類來運行(Spring容器)----建議使用?
?優點:框架本身提供(com.alibaba.dubbo.container.Main)?
? ? ? ? 可實現優雅關機(ShutdownHook ) ,即解決第2點關閉dubbo問題。
參見:
dubbo-user-book.pdf ?第110~111頁
下載地址:
https://www.gitbook.com/@dubbo