zoukankan      html  css  js  c++  java
  • 使用阿里巴巴数据源遇到的监控页面打不开的问题

    听说阿里巴巴号称性能最强的连接池,于是用maven 往项目里增加了一个alibaba 引用包

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

    配置好后打开网页 老是出404错误。于是又去查看使用文档https://github.com/alibaba/druid/

    相关的配置都一个不漏设置好,但还是 访问 http://localhost:8080/druid/sql.html 出错404错误。难道是这个最新版本有问题,这也不大可能
    于是我又看structs 相关的配置。发现了问题。对web.xml配置做了挑战。servlet 映射 和structs action映射范围进行了 修改

    首先先alibaba数据源的druid是一个servlet ,这里servlet跟structs
    的action 如果不进行限定范围 那么
    当我们在页面在请求应用时,struts2将会截获所有请求,对于servlet请求将不能够正常响应的
    (报错信息为:HTTP Status 404 - There is no Action mapped for namespace / and action name druid,
    这是因为struts2servlet当成action了,因为servletaction都是没有后缀的.


    这里有几种处理方式
    在struts.xml中的<struts>的节点下面添加struts2处理的请求后缀 常量:
    <!--   该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts 2处理。 
    如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。 
     --> 
    <constant name="struts.action.extension" value="action" />
    这种方式比较优雅

    第二种如下:

    注释掉 urlrewritefilter  ,因为/* 会拦截所有的请求,这样druid就映射不到了,所以需要注释或限定范围

    对structs url请求映射也要进行修改,把/*的地方都要注释或限定范围



    alibaba连接池访问的 druid是一个servlet,而我配置的structs 设置了为/* 全部监控,所有的请求
    都会被认为是structs action请求

    于是 我修改了配置,再访问 监控界面出来了。还不错的。。 阿里的技术果然很强


  • 相关阅读:
    转: MySQL 赋予用户权限(grant %-远程和localhost-本地区别)
    修改Apache的最大连接数
    正向代理与反向代理的区别【Nginx读书笔记】
    mysql加单引号和不加单引号的性能比较
    mysql保存数据提示1366 Incorrect string value: ‘xF0x9Fx98x8AxF0x9F…’ 解决
    Mysql外键约束设置使用方法
    MYSQL分库分表和不停机更改表结构
    Hive SQL 常用日期
    CountDownLatch学习
    Exchanger学习
  • 原文地址:https://www.cnblogs.com/fangyuan303687320/p/4561804.html
Copyright © 2011-2022 走看看