All,
I've done some extended research and have played around with the configuration. I have taken the liberty to add my findings in a section on Multitenant Configuraiton at: https://cwiki.apache.org/confluence/display/OFBIZ/Multitenancy+support Please review and let me know your comments if there are any. I guess with this we can close the issue and make life easier for the next multitenant users. Regards Carsten 2010/10/21 Scott Gray <[email protected]> > I really don't know much about the multi tenant functionality, it's new and > I haven't used it. But yeah you do need that tenant group mapped to a > datasource, it contains a set of tables that are needed in addition to the > separate tenant databases (I think). > > Regards > Scott > > On 21/10/2010, at 11:57 PM, Carsten Schinzer wrote: > > > Well, so possibly a mistake in the documents as the multitenant > datasources > > would be defined in the config file placed on data/... (as mentioned > above). > > Using your aproach, I would be using the entityengine.xml to define any > > datasource required? > > > > Then for data loading: How do I address a certain datasource? > > > > I had the idea to use defined readers like e.g. > > <entity-data-reader name="ext-tenant1"/> > > > > and define those readers only for the respective data sources. > > > > Does that make sense? > > Thanks for the tip! > > I'll play around a little with this idea. > > > > Just one last question: What is the dedicated TenantDatasources.xml file > > then used for at all? To map the datasource to the respective tenant > logins? > > Because irritatingly, this file also references jdbcUri, jdbcUsername and > > jdbcPassword. But all that I would have specified in entityengine.xml as > > well. > > > > Well, it looks like I'd update some documents once I found my way through > > this. Stay tuned :) > > > > Regards > > > > > > Carsten > > > > > > 2010/10/21 Scott Gray <[email protected]> > > > >> OOTB in 10.04 the delegator definition looks like this: > >> <delegator name="default" entity-model-reader="main" > >> entity-group-reader="main" entity-eca-reader="main" > >> distributed-cache-clear-enabled="false"> > >> <group-map group-name="org.ofbiz" datasource-name="localderby"/> > >> <group-map group-name="org.ofbiz.olap" > >> datasource-name="localderbyolap"/> > >> <group-map group-name="org.ofbiz.tenant" > >> datasource-name="localderbytenant"/> > >> </delegator> > >> > >> Your one appears to be missing the last group-map for org.ofbiz.tenant > and > >> I'm guessing that is the problem. I have no idea why you and BJ were > >> missing that entry though, it was there before 10.04 existed. > >> > >> Regards > >> Scott > >> > >> HotWax Media > >> http://www.hotwaxmedia.com > >> > >> On 21/10/2010, at 9:42 PM, Carsten Schinzer wrote: > >> > >>> Hi Scott, > >>> > >>> > >>> well, I digged out this old thread as the very same seemed happening to > >> BJ > >>> as well. Here's a little context: > >>> > >>> I am aiming at multitenant along with PostGreSQL database, i.e. I have > >>> created the DB for each tenant. > >>> > >>> I changed entityengine.xml to use the localpostnew DataSource in the > >> default > >>> delegator: > >>> <delegator name="default" entity-model-reader="main" > >>> entity-group-reader="main" entity-eca-reader="main" > >>> distributed-cache-clear-enabled="false"> > >>> <group-map group-name="org.ofbiz" > datasource-name="localpostnew"/> > >>> <group-map group-name="org.ofbiz.olap" > >>> datasource-name="localderbyolap"/> > >>> </delegator> > >>> > >>> of course localpostnew is updated with connection string info as usual > >> and > >>> the respective postgres drivers are placed in > >>> > >>> {ofbiz-home}\framework\entity\lib\jdbc > >>> > >>> Now the multitenant info, i.e. the datasource setup for each Tenant's > >>> database, went to the xml file in > >>> {ofbiz-home}\framework\entity\data\TenantDataSources.xml > >>> (the filename is different and is updated accordingly in > >>> {ofbiz-home}\framework\entity\ofbiz-component.xml > >>> > >>> If I choose the localderby datasource, everything goes just nice and > the > >>> databases are generated, data loaded etc. > >>> > >>> If I change to the above configuration, i.e. using localpostnew, ofbiz > >>> throws an exception as follows > >>> * > >>> COMMAND ISSUED:* > >>> D:\__eclipse\ofbiz-multitenant>java -Xmx512m -XX:MaxPermSize=128m -jar > >>> ofbiz.jar -install -readers=seed-initial -delegator=default > >>> > >>> *CONSOLE OUTPUT:* > >>> Set OFBIZ_HOME to - D:/__eclipse/ofbiz-multitenant > >>> (...) > >>> 2010-10-20 18:28:34,283 (main) [ ModelReader.java:389:INFO ] > >> FINISHED > >>> LOADING ENTITIES - ALL FILES; #Entities=849 #ViewEntities=267 > >> #Fields=8870 > >>> #Relationships=2925 #AutoRelationships=2157 > >>> 2010-10-20 18:28:34,392 (main) [ GenericDelegator.java:244:INFO ] > Doing > >>> entity definition check... > >>> 2010-10-20 18:28:34,408 (main) [ ModelEntityChecker.java:502:INFO ] > >>> [initReservedWords] array length=1023 > >>> Exception in thread "main" java.lang.NullPointerException > >>> at > >>> > >> > org.ofbiz.entity.GenericDelegator.getEntityFieldType(GenericDelegator.java:555) > >>> at > >>> > >> > org.ofbiz.entity.model.ModelEntityChecker.checkEntities(ModelEntityChecker.java:101) > >>> at > >>> org.ofbiz.entity.GenericDelegator.<init>(GenericDelegator.java:245) > >>> at > >>> > >> > org.ofbiz.entity.DelegatorFactoryImpl.getInstance(DelegatorFactoryImpl.java:33) > >>> at > >>> > >> > org.ofbiz.entity.DelegatorFactoryImpl.getInstance(DelegatorFactoryImpl.java:25) > >>> at > >>> > org.ofbiz.base.util.UtilObject.getObjectFromFactory(UtilObject.java:202) > >>> at > >>> > org.ofbiz.entity.DelegatorFactory.getDelegator(DelegatorFactory.java:47) > >>> at > >>> > >> > org.ofbiz.entityext.data.EntityDataLoadContainer.start(EntityDataLoadContainer.java:230) > >>> at > >>> > org.ofbiz.base.container.ContainerLoader.start(ContainerLoader.java:100) > >>> at org.ofbiz.base.start.Start.startStartLoaders(Start.java:272) > >>> at org.ofbiz.base.start.Start.startServer(Start.java:322) > >>> at org.ofbiz.base.start.Start.start(Start.java:326) > >>> at org.ofbiz.base.start.Start.main(Start.java:411) > >>> 2010-10-20 18:28:34,627 (OFBiz_Shutdown_Hook) [ > >>> ContainerLoader.java:113:INFO ] Shutting down containers > >>> > >>> > >>> I would like to understand the following: > >>> > >>> - what is going wrong? OFBIZ seems to have issues with the > >>> entityfieldtypes for postnew. This is not observed for single tenant > >> OFBIZ > >>> setups -- or no-one out there is using single instances on postgres > >> with > >>> release 10.04 or later. > >>> - how can I dig deeper into the issue? Reviewing the classes I do see > >>> sporadic log statement which I do not find back on the console, hence: > >> where > >>> can I switch log levels for a component or the entire ofbiz instance? > >>> > >>> Hint for any of these two are much appreciated. > >>> And thanks for focussing back on the topic :-) > >>> > >>> Regards > >>> > >>> > >>> Carsten > >>> > >>> > >>> > >>> 2010/10/21 Scott Gray <[email protected]> > >>> > >>>> Sorry my bad. > >>>> > >>>> Could you explain what changes you've made to the entityengine.xml > that > >> got > >>>> you to the point of something not working? > >>>> > >>>> Thanks > >>>> Scott > >>>> > >>>> HotWax Media > >>>> http://www.hotwaxmedia.com > >>>> > >>>> On 21/10/2010, at 6:04 PM, Carsten Schinzer wrote: > >>>> > >>>>> Hmmm. Again this has gone off towards debugging/logging (just like > the > >>>> older > >>>>> thread from June). > >>>>> > >>>>> Anyone with proposals on how to include the Tenant datasources into > >>>>> entityengine.xml as BJ indicated he had found a workaround for this > >> issue > >>>>> that involves this? BJ? > >>>>> > >>>>> Thanks > >>>>> > >>>>> > >>>>> Carsten > >>>>> > >>>>> 2010/10/21 David E Jones <[email protected]> > >>>>> > >>>>>> > >>>>>> On Oct 20, 2010, at 4:39 PM, Scott Gray wrote: > >>>>>> > >>>>>>> On 21/10/2010, at 10:39 AM, James McGill wrote: > >>>>>>> > >>>>>>>> On Mon, Jun 14, 2010 at 11:08 AM, BJ Freeman <[email protected] > > > >>>>>> wrote: > >>>>>>>> > >>>>>>>>> Not sure why it worked in derby mode but not in postgresql. > >>>>>>>>> but it hung up on the tenant entity. > >>>>>>>>> but adding the tenant stuff into the entityengine.xml it no > longer > >>>>>> errors. > >>>>>>>>> I am such a slouch I used one line of debug.loginfo to find the > >>>>>> problem. > >>>>>>>>> someday I will put energy into the remote debugging. > >>>>>>>>> :D > >>>>>>>>> > >>>>>>>> > >>>>>>>> I find remote debugging is extremely easy, using Eclipse. If only > >>>> there > >>>>>> was > >>>>>>>> a way to step into minilang services -- they make remote debugging > >>>>>> pretty > >>>>>>>> frustrating, especially if you want to breakpoint an ECA. > >>>>>>> > >>>>>>> You can cheat a little sometimes with that. I regularly drop in > >> this: > >>>>>>> <log level="always" message="${someVar}"/> > >>>>>>> <transaction-rollback/> > >>>>>>> > >>>>>>> Obviously not as good as breakpoints but you can move it around and > >>>> just > >>>>>> keep refreshing the browser to continually execute the method and > >> never > >>>>>> commit the changes. > >>>>>> > >>>>>> Actually, IMO, when you don't have to worry about compile/run cycles > I > >>>> like > >>>>>> logging better than break points and variable inspection. It > requires > >> a > >>>>>> little more typing, but a LOT less clicking and watching and > browsing > >>>>>> through data. In fact, IMO logging is faster when you don't have to > >>>> worry > >>>>>> about compilation making things intolerably slow. It's kind of like > >>>>>> command-line versus a purely graphical way of doing things. > >>>>>> > >>>>>> Of course, to each their own... most programmers can't seem to > handle > >>>>>> something that they aren't used and/or wasn't their idea... ;) > >>>>>> > >>>>>> -David > >>>>>> > >>>>>> > >>>>> > >>>>> > >>>>> -- > >>>>> > >>>>> Best > >>>>> > >>>>> Carsten Schinzer > >>>>> > >>>>> Waisenhausstr. 53a > >>>>> 80637 München > >>>>> Germany > >>>> > >>>> > >>> > >>> > >>> -- > >>> > >>> Best > >>> > >>> Carsten Schinzer > >>> > >>> Waisenhausstr. 53a > >>> 80637 München > >>> Germany > >> > >> > > > > > > -- > > > > Best > > > > Carsten Schinzer > > > > Waisenhausstr. 53a > > 80637 München > > Germany > > -- Best Carsten Schinzer Waisenhausstr. 53a 80637 München Germany
