• 使用阿里巴巴数据源遇到的监控页面打不开的问题


    听说阿里巴巴号称性能最强的连接池,于是用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请求

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


  • 相关阅读:
    Git使用笔记
    javascript获取表单值的7种方式
    javascript里阻止事件冒泡
    PHP面向对象04_串行化
    MySQL数据库锁定机制
    SAP R3和JAVA交换数据之JCO
    @XStreamAlias使用
    JCO 自定义DestinationDataProvider
    IBM websphere MQ 消息发送与获取
    WebSphere MQ 入门指南
  • 原文地址:https://www.cnblogs.com/fangyuan303687320/p/4561804.html
Copyright © 2020-2023  润新知