介绍:在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命令——modprobe

    参考:5 UNIX / Linux modprobe Command Examples Linux modprobe command 简介 modprobe用于向Linux Kernel添加 或 移除 ...

  2. sudo权限

    sudo授权 给普通用户赋予部分管理员权限 /sbin/ 在此目录下的命令只有超级用户可以执行 /usr/sbin/ root身份 visudo 赋予普通用户权限命令,命令执行后和vi一样使用 用户名 ...

  3. XSLT知识点【一】

    XSL 指扩展样式表语言(EXtensible Stylesheet Language). 它起始于 XSL,结束于 XSLT.XPath 以及 XSL-FO. 起始于 XSL------CSS = ...

  4. springboot集成redis 附redis基本操作类

    1 pom.xml添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifac ...

  5. 如何通过cmd获取到域名下的ip地址?例如获取百度的域名

    百度首页的IP地址为[119.75.217.109] 你可以通过电脑本机进行查询,查询步骤如下: 1.点击[开始]--->>[运行],输入[cmd]: 按键盘上的[Win键]+[R键],调 ...

  6. Flask - 四剑客 | templates | 配置文件 | 路由系统 | CBV

    Flask框架简介 说明:flask是一个轻量级的web框架,被称为微型框架.只提供了一个高效稳定的核心,其它全部通过扩展来实现.意思就是你可以根据项目需要进行量身定制,也意味着你需要不断学习相关的扩 ...

  7. Spring框架 IOC注解

    Spring框架的IOC之注解方式的快速入门        1. 步骤一:导入注解开发所有需要的jar包        * 引入IOC容器必须的6个jar包        * 多引入一个:Spring ...

  8. Djiango权限组件

    一. login中注册 权限url def login(request): if request.method == "POST": username = request.POST ...

  9. HDU - 3709 - Balanced Number(数位DP)

    链接: https://vjudge.net/problem/HDU-3709 题意: A balanced number is a non-negative integer that can be ...

  10. jumpserver 安装

    # CentOS 7 安装jumpserver $ setenforce 0 # 可以设置配置文件永久关闭$ systemctl stop iptables.service$ systemctl st ...