Struts 2
  1. Struts 2
  2. WW-3546

Add ability to control devMode per request

    Details

      Description

      I have found it useful to be able to control "debugging mode" on a per-request basis. It makes it easier to track down problems reported in production that are hard to reproduce in a development environment.

      The places that I have found where it would be useful to control devMode are: Dispatcher.sendError(), JSONInterceptor, and DebuggingInterceptor. (Other uses of devMode are related to logging and config reloading, and that shouldn't be adjustable.)

      I've currently patched my copy of Struts 2.2.1 so each of the the above-mentioned code chunks checks an extra, static ThreadLocal variable that I added (in addition to the devMode member variable).

      1) Is this the best solution?
      2) Is this something that should be merged into the Struts 2 distribution?

        Activity

        Hide
        Maurizio Cucchiara added a comment -

        So, I guess you can enable debug mode by passing an extra parameter to the request, don't you?

        Show
        Maurizio Cucchiara added a comment - So, I guess you can enable debug mode by passing an extra parameter to the request, don't you?
        Hide
        John Lindal added a comment -

        Yes, that's one way, but it's not secure. I use a signed cookie so external users cannot access the debugging features.

        Show
        John Lindal added a comment - Yes, that's one way, but it's not secure. I use a signed cookie so external users cannot access the debugging features.
        Hide
        Maurizio Cucchiara added a comment -

        request parameters were my first security concern.
        On the other hand implementing a robust signed cookie's generator could be more time-consuming task then the ability to enable dev mode per-request itself

        Show
        Maurizio Cucchiara added a comment - request parameters were my first security concern. On the other hand implementing a robust signed cookie's generator could be more time-consuming task then the ability to enable dev mode per-request itself
        Hide
        John Lindal added a comment -

        I don't think Struts should implement the method for setting the flag. The signed cookie that I'm using is actually generated by a corp-wide login service. I just use a corp library to check that it's valid.

        I was only suggesting that Struts could provide the flag, so if it is set, it modifies (some uses of) devMode for that request.

        Show
        John Lindal added a comment - I don't think Struts should implement the method for setting the flag. The signed cookie that I'm using is actually generated by a corp-wide login service. I just use a corp library to check that it's valid. I was only suggesting that Struts could provide the flag, so if it is set, it modifies (some uses of) devMode for that request.
        Hide
        John Lindal added a comment -

        I put the InheritableThreadLocal object in my copy of FilterDispatcher. That is the entry point to the Struts2 code in the request's thread. If anybody has a better suggestion for its location, please let me know!

        Show
        John Lindal added a comment - I put the InheritableThreadLocal object in my copy of FilterDispatcher. That is the entry point to the Struts2 code in the request's thread. If anybody has a better suggestion for its location, please let me know!

          People

          • Assignee:
            John Lindal
            Reporter:
            John Lindal
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development