So I did some more detailed research on this, and my position is still that we should
improve usability without requiring modes.
Let me go through each item one by one.
1. JSP Development Mode
a. Currently does:
- Reports detailed compilation errors
- Scans for changes to JSP files
- Potentially settable *per app*
b. What I think we should be doing:
- If exploded - JDK7 file change notification service (fallback to polling)
- If connection is local[1] - display compilation errors
- Provide a global and app setting to set (local-only, always, never) for reporting
- Notify the user on a footnote of our default 500 pages how to configure this,
perhaps link into the console
2. JSF Development Stage
a. Currently does:
- Reconfigures your app
- HAS NO EFFECT ON FILE SCANNING (it's on regardless of stage)
b. What I think we should be doing:
- We should never set the JSF development stage, it's a per app setting and
should remain so.
3. JSF FACELETS_REFRESH_PERIOD
a. Currently does:
- Sets an app specific file scan interval
- Defaults to 2ms
b. What I think we should be doing:
- If exploded - JDK7 file change notification service (fallback to polling)
4. Servlet stack traces on HTTP 500 etc
a. Currently does:
logs them only
b. What I think we should be doing:
- Add a per app setting and global (local-only[1], always, never) for reporting
- Notify the user on a footnote of our default 500 pages how to configure this,
perhaps link into the console
5. Server-Based File Caching
a. Currently does:
- polling or no-polling
b. What I think we should be doing:
- If exploded/directory based - JDK7 file change notification service (fallback to
polling)
6. FS session persistence on shutdown
a. Currently does:
- AFAIK not existent
b. What I think we should be doing:
- enable it by default
- add an option to disable
7. Admin console authentication
a. Currently does:
- Requires a login, but guides user on how to create one
- Has a ridiculous password policy
b. What I think we should be doing:
- We should avoid become worm-ware again and keep the login requirement
- We should make the policy more forgiving (e.g. "this is a bad password, are
you sure?")
- In the future, we should look into a web based password creation by cutting and
pasting a random token from the log file
8. Application debug logging
a. Currently does:
- Supports a category specified logging level on the command line
- Supports logging in deployment configuration
b. What I think we should be doing
- Not much more, maybe extra tooling support to help with this.
9. Request dumping
a. Currently does:
- No dumping
b. What I think we should be doing
- No dumping, its a lot of data, users should specifically enable what they want to
dump
[1] Local detection is that the request source address matches a loopback ip address (e.g.
127.0.0.x) and does not contain a X-Forwarded-For value (indicates a proxy/lb)
On Jul 31, 2013, at 10:22 AM, David M. Lloyd <david.lloyd(a)redhat.com> wrote:
I agree with Jason on this one. I think there is some value in a
blanket "developer" profile but not enough clearly-defined universal
requirements to justify it being one flag (whose meaning will no doubt
change over time, making it even more unsuitable).
Bill has a good point that the admin isn't going to know every knob and
switch to turn for development mode. I think that we should tackle this
in two ways: first through a development profile example XML, and second
through documentation.
Also to Jason's point, many of these features absolutely should not be
developer-only, like JSP and static content change detection; if we have
failed to make these work well for production, we need to try a bit
harder. We do have some options like using a JDK 7 watch service, which
should scale reasonably well for this kind of thing, and for JDK 6 fall
back to something more basic or even disabling it.
Likewise (for the JDK 6 case) I think we can afford the performance cost
of checking cache timestamps every 10-30s or so.
I think that yes we want developers to have the convenience of enabling
developer friendly features, but the server really should be developer
friendly in the above ways by default. If someone has a real world
(non-benchmark) case that requires the extra tiny fraction of CPU that
the above changes would cost, then they can explicitly disable these
things. Otherwise they should never even know about them.
On 07/31/2013 09:22 AM, Stuart Douglas wrote:
> But the ideal behaviour for development and production is different.
>
> In development you want stack traces to be displayed, in production mode you
don't. In development mode you want changes to your files to show up straight away, in
production mode you want to cache as much as possible.
>
> You would never run a production server with debugging enabled, but it is very useful
for development, and I think this is basically the same thing.
>
> Stuart
>
> ----- Original Message -----
>> From: "Jason Greene" <jgreene(a)redhat.com>
>> To: "Tomaž Cerar" <tomaz.cerar(a)gmail.com>
>> Cc: "Stuart Douglas" <sdouglas(a)redhat.com>, "Pete Muir"
<pmuir(a)redhat.com>, "Burr Sutter" <bsutter(a)redhat.com>, "Max
>> Andersen" <manderse(a)redhat.com>, undertow-dev(a)lists.jboss.org
>> Sent: Wednesday, 31 July, 2013 4:19:26 PM
>> Subject: Re: [undertow-dev] Undertow development mode
>>
>> Yeah I get where you are coming from.
>>
>> What I am getting at is we should be producing a developer friendly
>> production application server, not two servers "development" and
>> "production" which behave completely differently
>>
>> On Jul 31, 2013, at 9:11 AM, Tomaž Cerar <tomaz.cerar(a)gmail.com> wrote:
>>
>>> What I am bit worried about is that this would introduce
"development-mode"
>>> flags for every subsystem in bit different way.
>>> And we would end up with similar confusion as with runtime statistics stuff
>>> we currently have.
>>> That would be even worse than having global switch, as people would go to
>>> production with just some dev flags disabled but forgot about others...
>>> much harder to debug / track.
>>>
>>> Also if we are making sure that recycling http sessions work then same
>>> should work for SFSB & scoped CDI beans (@ApplicationScoped)
>>>
>>>
>>>
>>>
>>>
>>> On Wed, Jul 31, 2013 at 4:04 PM, Jason Greene <jgreene(a)redhat.com>
wrote:
>>>> I am really not a fan of this big global switch idea.
>>>>
>>>> First off, a number of things that people enabled with
"development" mode
>>>> should just work. For example, jsp redeployment should work in either
>>>> case. Being able to recycle sessions is actually useful in production as
>>>> well.
>>>>
>>>> Second, development will become an excuse to stick slow performing
things
>>>> in it. You combine that with people hard coding the default, and it's
not
>>>> long before benchmarks are comparing different app server's
"development
>>>> mode".
>>>>
>>>> On the other hand I could totally see a "show stack traces
option" or even
>>>> "extra diagnostics".
>>>>
>>>>
>>>> On Jul 31, 2013, at 8:27 AM, Stuart Douglas <sdouglas(a)redhat.com>
wrote:
>>>>
>>>>> Maybe the system property thing I suggested earlier would be enough,
so
>>>>> that we can just have in various places subsystems development mode
>>>>> controlled by the jboss.development.mode system property, defaulting
to
>>>>> false.
>>>>>
>>>>> Stuart
>>>>>
>>>>>
>>>>> ----- Original Message -----
>>>>>> From: "Tomaž Cerar" <tomaz.cerar(a)gmail.com>
>>>>>> To: "Pete Muir" <pmuir(a)redhat.com>
>>>>>> Cc: undertow-dev(a)lists.jboss.org, "Max Andersen"
<manderse(a)redhat.com>,
>>>>>> "Burr Sutter" <bsutter(a)redhat.com>
>>>>>> Sent: Wednesday, 31 July, 2013 3:16:30 PM
>>>>>> Subject: Re: [undertow-dev] Undertow development mode
>>>>>>
>>>>>> We need to add this development flag on higher level then just
undertow
>>>>>> subsystem.
>>>>>>
>>>>>> It should be server-wide configuration.
>>>>>> this would enable also other subsystems to behave differently,
like the
>>>>>> jsf
>>>>>> about forcing jsf/facelets development.
>>>>>>
>>>>>> maybe we can add this to top level element of server? aka
<server
>>>>>> xmlns="urn:jboss:domain:2.0"
development-mode="true">
>>>>>>
>>>>>> Max for now this is mgmt configuration for servlet-container but
we
>>>>>> could
>>>>>> easily set default value to be passed from system property.
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, Jul 31, 2013 at 2:46 PM, Pete Muir < pmuir(a)redhat.com
> wrote:
>>>>>>
>>>>>>
>>>>>> Adding Burr.
>>>>>>
>>>>>> One idea would be to alter the logging config to log DEBUG
messages by
>>>>>> default in this mode?
>>>>>>
>>>>>> On 31 Jul 2013, at 13:12, Max Andersen < manderse(a)redhat.com
> wrote:
>>>>>>
>>>>>>> First off Stuart - can I give you a hug ? This is awesome!
>>>>>>>
>>>>>>> How is this flag set ? it should be do able via a startup
flag and not
>>>>>>> require to invoke some management operation after the startup
to be
>>>>>>> really
>>>>>>> useful.
>>>>>>> i.e. --dev command line flag.
>>>>>>>
>>>>>>>> In Wildfly upstream I am introducing a 'development
mode' flag (it is
>>>>>>>> actually in Alpha3 as well, but I am going to change how
it is
>>>>>>>> represented in the model).
>>>>>>>> Basically the idea with this is that when this flag is
set the server
>>>>>>>> behaves in a way that is much more developer friendly,
but is not
>>>>>>>> suitable for production use. So far the changes are:
>>>>>>>>
>>>>>>>> - Set JSP development mode
>>>>>>>
>>>>>>> Great - so this means Wildfly will recompile .jsp files when
changed,
>>>>>>> correct ? Anything else ?
>>>>>>>
>>>>>>>> - Display stack traces in error pages. We do not do this
by default
>>>>>>>> for
>>>>>>>> security reasons.
>>>>>>>
>>>>>>> Cool.
>>>>>>>
>>>>>>>> - Disable caching so file changes are picked up straight
away
>>>>>>>
>>>>>>> Okey - haven't really noticed caching happening in the
past though
>>>>>>> (except
>>>>>>> when VFS was put in front of seam ear's in AS5 days).
>>>>>>>
>>>>>>>> - Optionally persist session information across
redeployments (still
>>>>>>>> needs
>>>>>>>> a little bit of work), which should prevent a developer
from having
>>>>>>>> to
>>>>>>>> re-log in every time they redeploy.
>>>>>>>
>>>>>>> AWESOME x infinity!
>>>>>>>> I was wondering if anyone had any ideas for other
features we could
>>>>>>>> add to
>>>>>>>> make development easier?
>>>>>>>
>>>>>>> JSF/facelets have a development mode too if I recall? maybe
that makes
>>>>>>> sense too ?
>>>>>>>
>>>>>>> /max
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> undertow-dev mailing list
>>>>>> undertow-dev(a)lists.jboss.org
>>>>>>
https://lists.jboss.org/mailman/listinfo/undertow-dev
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> undertow-dev mailing list
>>>>>> undertow-dev(a)lists.jboss.org
>>>>>>
https://lists.jboss.org/mailman/listinfo/undertow-dev
>>>>>
>>>>> _______________________________________________
>>>>> undertow-dev mailing list
>>>>> undertow-dev(a)lists.jboss.org
>>>>>
https://lists.jboss.org/mailman/listinfo/undertow-dev
>>>
>>
>
> _______________________________________________
> undertow-dev mailing list
> undertow-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/undertow-dev
>
--
- DML
_______________________________________________
undertow-dev mailing list
undertow-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/undertow-dev
--
Jason T. Greene
WildFly Lead / JBoss EAP Platform Architect
JBoss, a division of Red Hat