On Tue, 24 Sep 2013 16:53:09 -0300, Daniel Jue <teamp...@gmail.com> wrote:

Thanks Thiago!!  Good to hear from you.

Hello, Daniel! Nice to see you back at the mailing list. :)

One of my little concerns with the location of html and js files is that
the developer who's writing those doesn't want to have anything to do with Tapestry. He's a bit challenging to work with (in an old school, hand crafted servlet kind of way), and I'm trying to make this the least painful for him. So hopefully all the static js and html files he's writing can be served up out of an Assets directory without T5 touching them, and it'll
look like it coming out of a WEB-INF directory (where they are now).

Looking at just Tapestry, if you want to add assets to a web app from a separate JAR, the best way of doing it is to put it in the classpath and use the ${classpath:xxx/yyy} way of including them. Looking at the code and services side, the best way of dealing with that is defining services with distributed configurations and having the JARs contribute to them.

Looking at Maven, you can actually have a WAR project (x) depend on another (y), with the x WAR files created with y as a starting point and files from x overriding the ones from y when both x and y have the same file in the same path. This is called an WAR overlay. Fortunately, a Google search comes up with a lot of results, so you'll probably won't have problem in finding good articles or tutorials on it. :)



On Tue, Sep 24, 2013 at 3:41 PM, Daniel Jue <teamp...@gmail.com> wrote:

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.






--
Thiago H. de Paula Figueiredo

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to