开发者社区 问答 正文

怎样配置Druid监控并实现权限控制 :报错

怎样在JavaEE项目中配置Druid监控及实现对它的权限控制,类似官方文档中的示例: http://110.76.43.235:8080/mini-web/druid/index.html ?Spring或非Spring皆可~

展开
收起
kun坤 2020-06-07 09:56:25 1013 分享 版权
阿里云 AI 助理回答

要在JavaEE项目中配置Druid监控并实现对其的权限控制,可以按照以下步骤操作。无论是Spring项目还是非Spring项目,都可以通过类似的方式完成配置。


1. 引入Druid依赖

首先,在项目的pom.xml文件中添加Druid相关的依赖项。如果使用的是Spring Boot项目,可以通过druid-spring-boot-starter简化配置:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.19</version>
</dependency>

如果是非Spring项目,则直接引入Druid核心库:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.19</version>
</dependency>

2. 配置Druid连接池参数

在项目的src/main/resources目录下创建druid.properties文件,并配置连接池的基本参数。例如:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://rm-bp**************.mysql.rds.aliyuncs.com:3306/database
username=****
password=****

initialSize=20
minIdle=20
maxActive=100
maxWait=5000
connectTimeout=20000
socketTimeout=60000

这些参数包括数据库驱动、连接地址、用户名和密码,以及连接池的核心配置(如初始连接数、最大连接数等)。


3. 启用Druid监控页面

为了启用Druid的内置监控页面,需要在项目中注册一个StatViewServlet,用于展示监控数据。以下是具体配置方法:

3.1 Spring项目配置

在Spring项目中,可以通过@Bean注解注册StatViewServletWebStatFilter

import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class DruidConfig {

    @Bean
    public ServletRegistrationBean statViewServlet() {
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        // 设置允许访问的IP白名单(可选)
        bean.addInitParameter("allow", "127.0.0.1");
        // 设置登录用户名和密码
        bean.addInitParameter("loginUsername", "admin");
        bean.addInitParameter("loginPassword", "password");
        return bean;
    }

    @Bean
    public FilterRegistrationBean webStatFilter() {
        FilterRegistrationBean bean = new FilterRegistrationBean(new WebStatFilter());
        // 排除静态资源的监控
        bean.addUrlPatterns("/*");
        bean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return bean;
    }
}

3.2 非Spring项目配置

在非Spring项目中,可以在web.xml中手动配置StatViewServletWebStatFilter

<servlet>
    <servlet-name>DruidStatView</servlet-name>
    <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
    <init-param>
        <param-name>loginUsername</param-name>
        <param-value>admin</param-value>
    </init-param>
    <init-param>
        <param-name>loginPassword</param-value>
        <param-value>password</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>DruidStatView</servlet-name>
    <url-pattern>/druid/*</url-pattern>
</servlet-mapping>

<filter>
    <filter-name>DruidWebStatFilter</filter-name>
    <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
    <init-param>
        <param-name>exclusions</param-name>
        <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>DruidWebStatFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

4. 权限控制

Druid监控页面支持简单的权限控制,可以通过设置loginUsernameloginPassword来限制访问。此外,还可以通过allowdeny参数配置IP白名单或黑名单。例如:

  • 允许特定IP访问
    allow=127.0.0.1,192.168.1.100
    
  • 拒绝特定IP访问
    deny=192.168.1.200
    

注意:如果未设置allowdeny,则默认允许所有IP访问。


5. 访问监控页面

完成上述配置后,启动项目并通过浏览器访问Druid监控页面。假设项目运行在本地,端口为8080,则访问地址为:

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

输入配置的用户名和密码(如admin/password),即可查看连接池的监控信息,包括SQL执行情况、连接池状态等。


6. 常见问题及注意事项

  • 确保Druid版本兼容性:不同版本的Druid可能对某些功能的支持有所不同,请根据实际需求选择合适的版本。
  • 安全性:生产环境中建议将Druid监控页面的访问权限严格限制,避免敏感信息泄露。
  • 性能影响:开启Druid监控会增加一定的性能开销,建议仅在开发或测试环境中使用,生产环境需谨慎启用。

通过以上步骤,您可以在JavaEE项目中成功配置Druid监控并实现对其的权限控制。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答