2015-06-05 9:02 GMT+02:00 Alex Soto <[email protected]>: > > wonder if it couldnt reuse ImportSql class and just use a well know file > > Sure, but this is just only an example. In fact in our production > environment it won't be as easier as this. Probably there will be a person > who pushes the button of "create the schema". > > > I'd add few more things like the name of the id of theresource > > Sure this is only a basic class. > > > why not using a request scope bean > > Don't catch you about this hehehe. You mean NewTenantListener scope, or add > a @RequestScope for TenantId instead of setting it? > > if you can use a request scope cause you are fully web then you can get rid of the threadlocal using a Database {get; set ; } requet scoped bean injected in the router.
> > Note that the thread local should be clean up > > So true I have implemented it. > > > provide your own API and hide internals behind something > > Had this on mind, but to not complicate now the example I decided to reuse > existing classes. > > > replace CDI by an extension > > When you say replace CDI you mean only for registration or also the CDI > annotations used like @Inject or Observers? > > i mean dont suppose the jar will get scanned. On tomee 7 it mean just calling createAnnotatedType on beans in an extension, on tomee 1 few more work (implementing few Bean<> but nothing super hard) > Alex. > > El dj., 4 juny 2015 a les 16:45, Romain Manni-Bucau (< > [email protected]>) > va escriure: > > > Hi > > > > few notes but this looks a super great start: > > - > > > > > https://github.com/lordofthejars/multi/blob/master/src/main/java/com/scytl/multi/CreateDatabaseSchemaListener.java > > : > > wonder if it couldnt reuse ImportSql class and just use a well know file > > - > > > > > https://github.com/lordofthejars/multi/blob/master/src/main/java/com/scytl/multi/CreatedDataSourceEvent.java > > : > > I'd add few more things like the name of the id of theresource > > (logging/audit purpose) > > - > > > > > https://github.com/lordofthejars/multi/blob/master/src/main/java/com/scytl/multi/MultitenancyRouter.java > > : > > why not using a request scope bean? would make the code simpler for > webapps > > (but wouldnt support batches/async). Note that the thread local should be > > clean up otherwise it will leak or can have side effect if you reuse an > old > > value (better to fail if you forget to set it than using previous > customer > > datasource) > > - I would probably get rid of org.apache.openejb imports in events > (provide > > your own API and hide internals behind something) > > > > Now the issues to bring it in tomee would surely be to: > > - have a flag in application.properties to switch it on > > - replace CDI by an extension (with the META-INF/service registration but > > the flag will add it or not) to ensure it works even if the container jar > > is not scanned > > > > Nothing blocking but a small rework to do > > > > wdyt? > > > > > > > > > > Romain Manni-Bucau > > @rmannibucau <https://twitter.com/rmannibucau> | Blog > > <http://rmannibucau.wordpress.com> | Github < > > https://github.com/rmannibucau> | > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber > > <http://www.tomitribe.com> > > > > 2015-06-04 16:32 GMT+02:00 Alex Soto <[email protected]>: > > > > > Hi guys, as I mention on the twitter, currently I am developing a PoC > for > > > solving the problem of multi-tenancy with schema-based approach. This > > means > > > that for each tenant has its own schema inside database. Moreover the > > same > > > approach can be used just in case of database-based approach. > > > > > > Another of the requirements we are having in my company is that a > tenant > > > should any tenant should be able to be added dynamically, without > having > > to > > > stop the server. > > > > > > To implement this in TomEE I have implemented my own Router. Of course > it > > > is a PoC so some parts needs more validations and/or some refactor, > but I > > > think that as first approach to see the idea is enough. > > > You can see the code here: https://github.com/lordofthejars/multi > > > > > > I think that TomEE could provide this feature out of the box, it is > > really > > > not so hard and with the inclusion of CDI you will see that it is > pretty > > > simple. > > > This email is only to open the discussion about if it is interesting to > > add > > > it in TomEE or not. > > > > > > My next steps will be present the solution to my teams, and after some > > > discussions, implement it as final solution (which I am sure we will be > > > able if you agree to implement it as module inside TomEE). > > > > > > And that's all, for any question about the PoC feel free to ask it. > > > > > > Alex. > > > > > >
