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

Reply via email to