介绍:在dubbo项目中,使用druid的监控功能

问题:因为,在网上找勒,很多的资料,显示的都是需要在web.xml中配置

<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>

可是,我们一般搭建的dubbo项目,使用的shell脚本启动的,java命令启动,没有使用到Tomcat容器,虽然可以使用,

但是会显得,很浪费

解决:

其实,思路是借鉴,dubbo-monitor-simple 工程的思路,在dubbo的启动项目中,启动jetty容器,去监控,这个监控

这个容器也不是很大,所以不会有多少性能的损失。

下面贴出代码,以及遇到的问题,贴出的为主要代码,是在大家已有的dubbo项目上添加即可

pom.xml

<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
<version>6.1.26</version>
</dependency>

描述: dubbo启动jetty依赖的jar

/src/main/resources/META-INF/dubbo/com.alibaba.dubbo.container.Container

myjetty=com.xxxx.insurance.service.demo.common.container.JettyContainer

/src/main/java/com/xxxx/insurance/service/demo/common/container/JettyContainer.java

// 日志监控系统的
handler.addServletWithMapping(StatViewServlet.class, "/druid/*");

代码如下:

public class JettyContainer implements Container {  

    private static final Logger logger = LoggerFactory.getLogger(JettyContainer.class);  

    public static final String JETTY_PORT = "dubbo.jetty.port";  

    public static final String JETTY_DIRECTORY = "dubbo.jetty.directory";  

    public static final String JETTY_PAGES = "dubbo.jetty.page";  

    public static final int DEFAULT_JETTY_PORT = 8090; //jetty容器端口  

    SelectChannelConnector connector;  

    public void start() {
String serverPort = ConfigUtils.getProperty(JETTY_PORT);
int port;
if (serverPort == null || serverPort.length() == 0) {
port = DEFAULT_JETTY_PORT;
} else {
port = Integer.parseInt(serverPort);
}
connector = new SelectChannelConnector();
connector.setPort(port);
ServletHandler handler = new ServletHandler(); String resources = ConfigUtils.getProperty(JETTY_DIRECTORY);
if (resources != null && resources.length() > 0) {
FilterHolder resourceHolder = handler.addFilterWithMapping(ResourceFilter.class, "/*", Handler.DEFAULT);
resourceHolder.setInitParameter("resources", resources);
} ServletHolder pageHolder = handler.addServletWithMapping(PageServlet.class, "/*");
pageHolder.setInitParameter("pages", ConfigUtils.getProperty(JETTY_PAGES));
pageHolder.setInitOrder(2);
//这里是新添加的,作用于druid日志监控系统的
handler.addServletWithMapping(StatViewServlet.class, "/druid/*"); Server server = new Server();
server.addConnector(connector);
server.addHandler(handler);
try {
server.start();
} catch (Exception e) {
throw new IllegalStateException("Failed to start jetty server on " + NetUtils.getLocalHost() + ":" + port
+ ", cause: " + e.getMessage(), e);
}
} public void stop() {
try {
if (connector != null) {
connector.close();
connector = null;
}
} catch (Throwable e) {
logger.error(e.getMessage(), e);
}
} }

描述:直接copy,dubbo的JettyContainer.java过来,修改就可以啦

启动代码

public static void main(String[] args) {
args = new String[]{"spring","myjetty"};
com.alibaba.dubbo.container.Main.main(args);
}

脚本启动

conf/ dubbo.properties

dubbo.container=spring,myjetty
dubbo.log4j.file=logs/dubbo-demo-provider.logdubbo.log4j.level=WARN

最后,启动,访问

http://localhost:8080/druid/index.html

在dubbo工程中,使用druid监控的更多相关文章

  1. Druid监控页面配置与使用

    一.Maven中添加Durid连接池依赖 <!-- druid连接池 --> <dependency> <groupId>com.alibaba</group ...

  2. alibaba druid监控页面的使用配置

    一.Maven中添加Durid连接池依赖 <!-- druid连接池 --> <dependency> <groupId>com.alibaba</group ...

  3. springboot中使用druid和监控配置

    如果想要监控自己的项目的访问情况及查看配置信息,druid是一个很好的选择,可能你会问druid是什么?有什么用?优点是什么? Druid简介 Druid是阿里巴巴开源的数据库连接池,号称是Java语 ...

  4. springboot中druid监控的配置(DruidConfiguration)

    当数据库连接池使用druid 时,我们进行一些简单的配置就能查看到sql监控,web监控,url监控等等. 以springboot为例,配置如下 import com.alibaba.druid.su ...

  5. Spring+SpringMVC+MyBatis+easyUI整合优化篇(十一)数据层优化-druid监控及慢sql记录

    本文提要 前文也提到过druid不仅仅是一个连接池技术,因此在将整合druid到项目中后,这一篇文章将去介绍druid的其他特性和功能,作为一个辅助工具帮助提升项目的性能,本文的重点就是两个字:监控. ...

  6. druid监控及慢sql记录

    本文提要 前文也提到过druid不仅仅是一个连接池技术,因此在将整合druid到项目中后,这一篇文章将去介绍druid的其他特性和功能,作为一个辅助工具帮助提升项目的性能,本文的重点就是两个字:监控. ...

  7. Druid 监控分布式解决方案

    什么是 Druid Monitor Druid 是一个非常强大的数据库连接池,但是它的强大并不仅仅体现在作为一个高性能连接池加快数据访问上和连接管理上,它内置了一个强大的监控工具:Druid Moni ...

  8. 应用Druid监控SQL语句的执行情况

    Druid是什么? Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBo ...

  9. Druid监控Mybatis不显示SQL问题

    一.Web.xml增加如下配置: 1.DruidWebStatFilter.如果没有配置filter信息.session监控,web监控等不可用.没有配置 <filter> <fil ...

随机推荐

  1. Linux查找工具locate和find

    linux 中有很多查找工具,今天主要讲解locate,find两个工具. 一.locate 1.性能介绍 非实时查找(数据库查找):locate 查询系统上预建的文件索引数据库 /var/lib/m ...

  2. (Linux基础学习)第七章:echo命令

    第1节:简单说明功能:显示字符语法:echo [-neE][字符串]说明:echo会将输入的字符串送往标准输出.输出的字符串之间以空白字符隔开,并在最后加上换行号选项:-E(默认)不支持\解释功能-n ...

  3. Spring+WebSocket+SockJS实现实时聊天

    设计初衷是通过websocket实现网页实时通讯聊天. 工程环境:tomcat8+jdk1.7+maven+eclipse 设计思路:客户端登录网页建立socket连接,后台记录用户连接信息并做标识: ...

  4. vsCode与Hubilder中自定义代码块

    平常测试vue的一些属性时总要新增代码,引入文件,麻烦,顾自定义代码块来实现快速新增测试 一.打开设置 1.1 vsCode设置 点击后选择代码块所属的文件类型,比如在html中则选择html类型配置 ...

  5. .net序列化 - Newtonsoft(Json.Net)简单应用

    Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库. Json.Net是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简 ...

  6. 基于Python3+Requests的贴吧签到助手

    因为总是忘记签到,所以尝试写了一个签到脚本,因为使用的是Python3,所以没法使用Urllib2,于是选择了Requests,事实证明,Requests比Urllib2好用.整体思路比较简单,就是模 ...

  7. Linux rpm安装指定安装路径

    可以使用prefix参数. rpm -i –prefix=/home/gpadmin    greenplum-db-6.0.0-rhel6-x86_64.rpm 将greenplum-db-6.0. ...

  8. 8-3编码器,3-8译码器的verilog实现

    在数字系统中,由于采用二进制运算处理数据,因此通常将信息变成若干位二进制代码.在逻辑电路中,信号都是以高,低电平的形式输出.编码器:实现编码的数字电路,把输入的每个高低电平信号编成一组对应的二进制代码 ...

  9. 关灯问题II 状压DP

    关灯问题II 状压DP \(n\)个灯,\(m\)个按钮,每个按钮都会对每个灯有不同影响,问最少多少次使灯熄完. \(n\le 10,m\le 100\) 状压DP的好题,体现了状压的基本套路与二进制 ...

  10. 洛谷 P1083 借教室 题解

    P1083 借教室 题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借 ...