- From: Andrea Campi <
>
- To:
- Subject: [chef] Re: rewriting my tomcat LWRP, how best to group options?
- Date: Mon, 16 Apr 2012 08:35:45 +0200
Hi Bryan and all,
On Sun, Apr 15, 2012 at 3:46 PM, Bryan Berry
<
>
wrote:
>
I am rewriting my tomcat lwrp and here is what I have in mind, partly
>
inspired by Andrea Campi's work
>
https://github.com/andreacampi/application_java
first of all, thanks for the pointer but it was Noah who came up with
the DSL; I'm "just" finish up what he started and shepherding it into
the repo.
I haven't had time to work on Java apps since we talked, but I do have
some opinions.
First of all, I like what you're doing but I think it doesn't belong
in the Tomcat cookbook.
Looking at your examples, I would say every option except perhaps the
ports would make sense for a standalone non-web-app.
And what about running on JBoss or Jetty? What about JRuby or Scala apps?
The goal of the application cookbook is to abstract away commonalities
and provide a single language to as many frameworks as reasonable,
while still allowing specific configuration.
Without getting too specific, my main point here is: let's join effort
and make sure we don't invent almost the same thing twice.
Concerning multiple database connections:
that's something I thought about for Rails and other frameworks. I
looked back at enhancement requests tickets and while there have been
requests to support apps with *no* SQL database, I couldn't find any
requesting more than one.
In the end I decided not to add any special logic, and put in an
option to specify a custom template (akin to your context_template).
When I doubt I go with the 80/20 rule: 80% or more people will be
covered by the logic for one DB connection; 80% of the remaining will
be able to get by with a custom template; the remaining setups will
probably have very specific needs anyway, and may as well implement
their custom logic by editing the cookbook.
To answer your questions:
>
tomcat "pentaho" do
...
>
jvm do
>
xms "256m"
>
xmx "512m"
>
max_perm_size "256m"
>
xx_opts { }
>
d_opts { }
>
additional_opts [ ]
>
end
>
end
>
>
the JVM has so many bloody options that this may be the more feasible
>
solution. also w/ the xx_opts, and d_opts I can use simpler options
>
hash like
>
>
node['tomcat']['xx_opts'] = { 'ParallelGCThreads':'',
>
'+UseConcMarkSweepGC':'', 'CompileThreshold' : '10000' }
>
node['tomcat']['d_opts'] = { 'user.timezone': 'UTC', 'file.encoding':
>
'UTF8'}
>
>
would convert to -XX:ParallelGCThreads -XX:+UseConcMarkSweepGC
>
-XX:CompileThreshold=10000 -Duser.timezone=UTC -Dfile.encoding=UTF8
I'd rather go this way for a simple reason: many of these settings are
not really per-app, they are more per-site or per-node.
A nice DSL is very convenient, but for stuff like file.encoding I just
want to set it on a role and be done with it.
Ditto for your last example:
>
jvm do
>
xx_opts do
>
use_conc_mark_sweep_gc true # becomes -XX:+UseConcMarkSweepGC
>
on command line
>
allow_user_signal_handlers false # becomes
>
-XX:-AllowUserSignalHandlers
>
max_heap_free_ratio 70 # becomes
>
-XX:MaxHeapFreeRatio=70
>
end
>
end
I want to be able to grep for UseConcMarkSweepGC anywhere; remembering
that I have to spell that as use_conc_mark_sweep_gc just here is extra
mental burden I frankly don't need :)
Hope this helps. I'll find you online tonight and we can talk more?
Andrea
Archive powered by MHonArc 2.6.16.