Ok, I made some progress in the meantime, preparing the code to be split
up for different and future customers. To me it looks like whatever I
want
to be in the root of the web app, I just stick under
/src/main/resources/com/customer/app/ , based on how I see it being done
with tapestry bootstrap (for example)
https://github.com/trsvax/tapestry-bootstrap/tree/master/src/main/resources/com/trsvax/bootstrap
My intended goal is to cobble together a customer specific web app, with
the customer specific pieces being in a jar file. (just as in Igor's
blog
post) This is the inverse of how a T5 library is usually used, to my
knowledge.
*Usually (for me anyway) I'm writing a web app and include pieces from
3rd
party modules, like pre built components. In this case I'm setting up
the
main web app as a core of basic functionality, that has the ability to
find
other pages in other modules and add them to menus, etc. The core web
app
has the web.xml and filter definition, and the customer jar file should
just contribute extra pages and services.
*I'm using the term 'customers' here because it translates well. In
reality these add on modules are more closely tied to specific
datasets. A
com.company may have one, two or ten datasets, and that would mean
dataset1.jar .... dataset10.jar
would be packaged in an app's war file. Each datasetX.jar has it's
supporting pages and services (DAOs, etc) Many customers have just one
dataset at the moment, but more could be added.
My next question is more of a maven one: What's a good way to set up
the
pom? I want the core module (com.mycompany.web) to have the web.xml
servlet filter definition, AppModule.class etc. I want each module
(com.othercompany.datasetX) to be a jar. But in the end I want to build
individual war files for each customer.
Edit: looks like this may help me, when i get to that point:
http://stackoverflow.com/questions/7897114/how-to-assemble-multimodule-maven-project-into-one-war
I guess it's really no different than what I was doing before, except:
For the core module, that can be spit out as a war file that does stuff
(just no customer specifc stuff)
For each customer module, it will spit out a war file using the core
plus
a jar for each dataset that customer has.
Sometimes it just helps to type things out. If anyone has any
suggestions, or has had to do this sort of setup, please, please drop
your
$0.02 here!
Thanks
On Mon, Sep 23, 2013 at 11:17 PM, Daniel Jue <teamp...@gmail.com> wrote:
Hi, I was reading over this older blog link
http://blog.tapestry5.de/index.php/2010/01/19/tapestry-ioc-modularization-of-web-applications-without-osgi/
now that I have to architect our app to work for other customers. We
want to keep the core parts together and refactor out the customer
specific
parts to their own JARs, which can then be added into a WAR file.
I'm still in the middle of changing the code, but...
1) I'm assuming this is still the way to roll out customer specific
WARs
when you have a core set of pages/services. (The customer specific
portion
becomes a JAR with a module that is discovered by the core WAR file you
launch)
2) For some of my customers I have REST resources using
Tynamo+RESTEasy,
and I also have static HTML+JS+CSS files that are customer specific,
which
talk to those REST resources. How/where should I package those in my
JAR
file, so that they'll end up in the right place in one big, exploded
WAR
file? It would be easiest if those HTML+JS+CSS files are just served
up
instead of being converted to TML files, because the developer in
charge of
those files doesn't want to adopt anything new.
Can I just lay out my customer specific maven module in the same way
as a
normal T5 App, but package it as a JAR and without any web.xml (since
it
would use the core app's T5 ServletFilter)
I'm using Tomcat, if that matters--hopefully it doesn't.