druid數據源是一款很好的監控數據庫的數據源,可以很清楚的記錄一些sql執行記錄,慢日誌查詢記錄。首先要知道dubbo的容器啓動。默認就是啓動spring。但是使用的數據源是druid的情況下sql是在服務端執行的,服務端基本都是獨立jar包執行,放在單獨服務器上太浪費資源了。其實dubbo內置了jetty容器,我們只要把數據源監聽放到下面就可以了。節省資源。這裏介紹一些dubbo服務的使用druid數據源,使用內置jetty容器。
首先來看下默認的jar寫法
其中JettyContainer是啓動jetty具體的類,而下面的com.alibaba.dubbo.container.Container是配置這個類的路徑:jetty=com.alibaba.dubbo.container.jetty.JettyContainer
重寫
新建類JettyContainer
,拷貝jar包裏面的代碼,增加
// 日誌監控系統的
handler.addServletWithMapping(StatViewServlet.class, "/druid/*");
增加配置文件com.alibaba.dubbo.container.Container
:
把新建的類寫入裏面。jetty
對應容器名字,可以自定義。
jetty=com.container.JettyContainer
編寫測試類:
新建類JettyContainerStart
public class JettyContainerStart {
public static void main(String[] args) {
args = new String[] { "spring", "myjetty" };
com.alibaba.dubbo.container.Main.main(args);
}
}
執行,在瀏覽器上訪問http://192.168.1.196:8080/druid
注意:如果端口被佔用,可以修改JettyContainer裏面的默認端口值。
打jar包執行報錯:
分析一下,應該是打jar沒用把METE-INF的內容打包進去。修改pom.xml
在build標籤裏面的resources裏面增加
<!-- 複製META-INF下面的配置到生成jar下,包括自定義的jetty內置容器和ip過濾白名單 -->
<resource>
<targetPath>${project.build.directory}/classes/META-INF/dubbo/internal</targetPath>
<directory>src/main/resources/META-INF/dubbo/internal</directory>
<filtering>true</filtering>
<includes>
<include>*</include>
</includes>
</resource>
增加配置文件dubbo.properties
#配置傳入要加載的容器
dubbo.container=spring,jetty,log4j