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