alibaba / druid

阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池
https://github.com/alibaba/druid/wiki
Apache License 2.0
27.92k stars 8.57k forks source link

StatViewServlet读取不到初始参数 #2719

Open tyh97 opened 6 years ago

tyh97 commented 6 years ago

配置了StatViewServlet的初始参数,但是在ResourceServlet中读取不到配置的初始参数,一直报空指针异常。 配置StatViewServlet代码:

@WebServlet(urlPatterns = "/druid/*",
        initParams={
                @WebInitParam(name="loginUsername",value="admin"),// 用户名
                @WebInitParam(name="loginPassword",value="admin"),// 密码
                @WebInitParam(name="resetEnable",value="false")// 禁用HTML页面上的“Reset All”功能
        })
public class DruidStatViewServlet extends StatViewServlet {
    private static final long serialVersionUID = 1L;
}

报错信息:

[2018-07-20 10:07:03.632] - 10463 严重 [http-nio-8080-exec-4] --- org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/AI_BD].[statViewServlet]: Servlet.service() for servlet [statViewServlet] in context with path [/AI_BD] threw exception
java.lang.NullPointerException
    at com.alibaba.druid.support.http.ResourceServlet.service(ResourceServlet.java:206)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
        ...

debug信息: qq 20180720101553

但是将jar包直接换成druid包就能获取到初始化参数了,而不用druid-spring-boot-starter的包。 请问这是什么问题?

lihengming commented 6 years ago

druid-spring-boot-starter 的StatViewServlet参数是读取的 Spring Boot 配置文件中的配置。

WithDeer commented 6 years ago

我也遇到了同样的问题,DruidStatViewServlet里面配置的@WebInitParam参数配置的账号密码,初始化时空,你解决了吗,在线等方案

WithDeer commented 6 years ago

@lihengming 冒昧问一句,是哪个参数,我没找到啊

git-syl commented 6 years ago

@l-lionax 试试看这个。 登录密码是druid隐藏的功能,应该是没有完善有bug jsp-servlet: class-name: com.alibaba.druid.support.http.StatViewServlet init-parameters: loginUsername: druid loginPassword: druid

git-syl commented 6 years ago
stat-view-servlet:
  login-password: 

@l-lionax

726411951 commented 6 years ago

在druid-spring-boot-starter 1.1.9中yml没有找到此配置

@mmdsyl

git-syl commented 6 years ago

我是1.1.2。配置如下: @726411951 druid:
stat-view-servlet: login-username: login-password: url-pattern: /druid/ enabled: true web-stat-filter: exclusions: '.js,.gif,.jpg,.png,.css,.ico,/druid/' url-pattern: /*

hankaibo commented 5 years ago

根据各位的说明,尤其是@lihengming同学的解释。我可以这么认为吗? 如果引用方式为druid-spring-boot-starter,则StatViewServletc注解上的参数值为空,因为它会读取相应的配置文件参数,而我没有设置;这时可以把这个servelet作为一个bean注入,通过读取配置参数解决。 第二种就是保持代码不变,pom中引入由druid-spring-boot-starter变为druid。这咱普通引入。