thanks david:
I won't discuss this further here.

=========================
BJ Freeman
http://bjfreeman.elance.com
Strategic Power Office with Supplier Automation 
<http://www.businessesnetwork.com/automation/viewforum.php?f=93>
Specialtymarket.com <http://www.specialtymarket.com/>

Systems Integrator-- Glad to Assist

Chat  Y! messenger: bjfr33man
Linkedin
<http://www.linkedin.com/profile?viewProfile=&key=1237480&locale=en_US&trk=tab_pro>


David E Jones sent the following on 4/16/2010 10:07 PM:
> BJ: The point with multi-tenant stuff is that the tenant doesn't have access 
> to load data using something like "ant run-install ..." or anything else on 
> the command line. You could have hundreds of people active in other tenant 
> instances so you don't want to stop and start the server to do anything like 
> this, and hopefully you can avoid having an admin work with the tenant to get 
> custom data loaded. You want things to be self-service, and that is the point 
> of making it database driven (with a UI so the user can get stuff into the 
> relevant portions of the database).
> 
> -David
> 
> 
> On Apr 16, 2010, at 5:09 PM, BJ Freeman wrote:
> 
>> somehow I did not get marcs reply to so this is to both.
>> you say put the data in a db. is this manual or loadable by the reader.
>> that is the crux,right now of my focus.
>> I imagine at some point the default will have choices using the config
>> that hans or I have done.
>>
>> some way of creating the installs.
>> but for now like most systems , till that is implemented we still have
>> to load the tenant data.
>> which brings me back to the mechanism to do that
>> it is not some much if it is intial-seed, seed, or ext.
>> it is how to load the tenant from a command line.
>> I have not brought up how to load while one instance is running.
>> I am depeding on clustering and be able to use one of the clusters to
>> shut down and load. So that is similar to your suggestion of using a
>> seperate server. This includes a lock on the tenant so the database is
>> not being used during the update.
>> this of course would not be done by the tenant. but the SAS provider.
>> the other things you bring up are beyond the simple focus of the
>> mechanism of loading data, currently, but good to keep in mind.
>>
>>
>> =========================
>> BJ Freeman
>> http://bjfreeman.elance.com
>> Strategic Power Office with Supplier Automation 
>> <http://www.businessesnetwork.com/automation/viewforum.php?f=93>
>> Specialtymarket.com <http://www.specialtymarket.com/>
>>
>> Systems Integrator-- Glad to Assist
>>
>> Chat  Y! messenger: bjfr33man
>> Linkedin
>> <http://www.linkedin.com/profile?viewProfile=&key=1237480&locale=en_US&trk=tab_pro>
>>
>>
>> David E Jones sent the following on 4/16/2010 2:21 PM:
>>> Thanks Marc, this is a good way of looking at it. If you have files know 
>>> about tenants then you're really opening a pandora's box and it's much 
>>> better to have all of the per-tenant settings sourced through the database.
>>>
>>> I guess we could have a table in the tenant database that goes along with 
>>> the Tenant entity's table that has information about additional data to 
>>> load.
>>>
>>> However, given the general use patterns for multi-tenant stuff wouldn't you 
>>> want to load the same basic data for each tenant and then let the tenant do 
>>> the rest, including loading any data files they might want (probably 
>>> through an upload or referring to another server)?
>>>
>>> -David
>>>
>>>
>>> On Apr 16, 2010, at 4:15 PM, Marc Morin wrote:
>>>
>>>> we've deployed a multi-tenant ofbiz system (our own multi-tenant 
>>>> implementation).  Our case is simpler, since it is truly a single 
>>>> application with multiple customers, each in their own database 
>>>> (delegator).
>>>>
>>>> When faced with wanting to read different files for different tenants, 
>>>> we've generally, moved to storing the per-tenant information in their 
>>>> database instance.  This keeps management of the per-tenant information 
>>>> separate for the more static "code".
>>>>
>>>> This has meant, re-factoring the code/screens/forms, etc... putting them 
>>>> in "content" vs files. 
>>>>
>>>> As for your example of having "seed" data being tenant aware, this appears 
>>>> to expose a new more complex problem of managing the life cycle of the 
>>>> tenant (creating, seeding, terminating, evicting...) that needs to be done 
>>>> to truly make use of any multi-tenant capabilities.
>>>>
>>>> We're taking the approach of creating "data packages" and allowing tenants 
>>>> to "subscribe" to them.  This then formalizes the management of the "seed" 
>>>> data, it's life cycle, and ultimately, it's storage.
>>>>
>>>> Now, if you wanted to have a multi-tenant ofbiz, where each tenant has 
>>>> 100% flexibility on configuring their entities, services, screens, eca, 
>>>> .... then I think you'll need to provision a separate app server for 
>>>> each... 
>>>>
>>>>
>>>>
>>>> ----- "BJ Freeman" <[email protected]> wrote:
>>>>
>>>>> rephrase this.
>>>>> for SAS purposes there will be many files each tenant that are unique
>>>>> to
>>>>> that tenant and to be loaded only into that Tenants DB
>>>>> this requires entry into the ofbiz-component.xml.
>>>>>
>>>>> A change in the way the readers select files based on delegator is
>>>>> what
>>>>> I am suggesting:
>>>>>
>>>>> so the command line that has  readers=seed,ext delegator=Tenant1
>>>>> would look for files in the ofbiz-component.xml
>>>>>
>>>>>   <entity-resource type="data" reader-name="seed-initial"
>>>>> loader="main" delegator="Tentant1"
>>>>> "location="data/tenant1seedinitialData.xml"/>
>>>>>
>>>>> so added parm of delegator would further define the data selection.
>>>>> if a line did not include the delegator then default would be used.
>>>>> The above suggestion seems to follow the model setup for Multitenancy
>>>>> support.
>>>>>
>>>>>
>>>>> ========================
>>>>>
>>>>> BJ Freeman
>>>>> http://bjfreeman.elance.com
>>>>> Strategic Power Office with Supplier Automation
>>>>> <http://www.businessesnetwork.com/automation/viewforum.php?f=93>
>>>>> Specialtymarket.com <http://www.specialtymarket.com/>
>>>>>
>>>>> Systems Integrator-- Glad to Assist
>>>>>
>>>>> Chat  Y! messenger: bjfr33man
>>>>> Linkedin
>>>>> <http://www.linkedin.com/profile?viewProfile=&key=1237480&locale=en_US&trk=tab_pro>
>>>>>
>>>>>
>>>>> BJ Freeman sent the following on 4/15/2010 8:43 PM:
>>>>>> I am still going through the code trying to figure out how ext for
>>>>>> different tenants can be loaded, that is unique to that tenant.
>>>>>> one example is loading the productstore with the defaults and the
>>>>> theme
>>>>>> that has been created for that tenant.
>>>>>> or how to configure the emails of a productstore for that tenant.
>>>>>> so these get loaded in on that tenants db.
>>>>>>
>>>>>> =========================
>>>>>> BJ Freeman
>>>>>> http://bjfreeman.elance.com
>>>>>> Strategic Power Office with Supplier Automation
>>>>> <http://www.businessesnetwork.com/automation/viewforum.php?f=93>
>>>>>> Specialtymarket.com <http://www.specialtymarket.com/>
>>>>>>
>>>>>> Systems Integrator-- Glad to Assist
>>>>>>
>>>>>> Chat  Y! messenger: bjfr33man
>>>>>> Linkedin
>>>>>>
>>>>> <http://www.linkedin.com/profile?viewProfile=&key=1237480&locale=en_US&trk=tab_pro>
>>>>>> Adrian Crum sent the following on 4/15/2010 6:00 AM:
>>>>>>> That would be very helpful!
>>>>>>>
>>>>>>> -Adrian
>>>>>>>
>>>>>>> --- On Thu, 4/15/10, Scott Gray <[email protected]>
>>>>> wrote:
>>>>>>>> From: Scott Gray <[email protected]>
>>>>>>>> Subject: Re: Multitenancy support
>>>>>>>> To: [email protected]
>>>>>>>> Date: Thursday, April 15, 2010, 3:06 AM
>>>>>>>> If we want non-demo instructions then
>>>>>>>> we'd need to describe how to create some "ext" data with the
>>>>>>>> tenant info and then change the first install command to do
>>>>>>>> a readers=seed,ext.
>>>>>>>>
>>>>>>>> Regards
>>>>>>>> Scott
>>>>>>>>
>>>>>>>> On 15/04/2010, at 3:22 AM, Adrian Crum wrote:
>>>>>>>>
>>>>>>>>> That Wiki page is a work in progress - so there is
>>>>>>>> some information missing. It would be best if you followed
>>>>>>>> the instructions for loading the multi-tenancy demo data,
>>>>>>>> look at how things are set up, and then create your
>>>>>>>> multi-tenant seed data based on the demo data.
>>>>>>>>> The bottom line is, it isn't working because you
>>>>>>>> haven't set up your tenants in the seed data.
>>>>>>>>> -Adrian
>>>>>>>>>
>>>>>>>>> Mickael BRIDE wrote:
>>>>>>>>>> Hello,
>>>>>>>>>> I followed the documentation on the page
>>>>> https://cwiki.apache.org/confluence/display/OFBIZ/Multitenancy+support
>>>>>>>> to try to get multitenancy in my ofbiz installation.
>>>>>>>>>> But when running the commant :
>>>>>>>>>> java -Xmx512m -XX:MaxPermSize=128m -jar ofbiz.jar
>>>>>>>> -install
>>>>>>>>>> -readers=seed -delegator=default#DEMO1
>>>>>>>>>> I have the error in the end of this mail.
>>>>>>>>>> The same command line run fine with "default"
>>>>>>>> instead of "default#DEMO1". It seems that entries in
>>>>>>>> TenantDemoData.xml are not loaded....?
>>>>>>>>>> I am on the trunk latest version of ofbiz (updated
>>>>>>>> 2 hours ago)
>>>>>>>>>> I am using the default files and conf.
>>>>>>>>>> Any idea of the problem?
>>>>>>>>>> Thanks in advance
>>>>>>>>>> Mickael
>>>>>>>>>> 2010-04-14 16:00:38,256 (main)
>>>>>>>> [DelegatorFactoryImpl.java:35 :ERROR]
>>>>>>>>>> ---- exception report
>>>>>>>>>>
>>>>>>>> ----------------------------------------------------------
>>>>>>>>>> Error creating delegator
>>>>>>>>>> Exception:
>>>>>>>> org.ofbiz.entity.GenericEntityException
>>>>>>>>>> Message: No Tenant record found for delegator
>>>>>>>> [default#DEMO1] with
>>>>>>>>>> tenantId [DEMO1]
>>>>>>>>>> ---- stack trace
>>>>>>>>>>
>>>>>>>> ---------------------------------------------------------------
>>>>>>>>>> org.ofbiz.entity.GenericEntityException: No Tenant
>>>>>>>> record found for
>>>>>>>>>> delegator [default#DEMO1] with tenantId [DEMO1]
>>>>>>>>>>
>>>>> org.ofbiz.entity.GenericDelegator.<init>(GenericDelegator.java:233)
>>>>> org.ofbiz.entity.DelegatorFactoryImpl.getInstance(DelegatorFactoryImpl.java:33)
>>>>> org.ofbiz.entity.DelegatorFactoryImpl.getInstance(DelegatorFactoryImpl.java:25)
>>>>> org.ofbiz.base.util.UtilObject.getObjectFromFactory(UtilObject.java:202)
>>>>> org.ofbiz.entity.DelegatorFactory.getDelegator(DelegatorFactory.java:47)
>>>>> org.ofbiz.entityext.data.EntityDataLoadContainer.start(EntityDataLoadContainer.java:230)
>>>>> org.ofbiz.base.container.ContainerLoader.start(ContainerLoader.java:100)
>>>>>>>> org.ofbiz.base.start.Start.startStartLoaders(Start.java:272)
>>>>>>>> org.ofbiz.base.start.Start.startServer(Start.java:322)
>>>>>>>>>> org.ofbiz.base.start.Start.start(Start.java:326)
>>>>>>>>>> org.ofbiz.base.start.Start.main(Start.java:411)
>>>>>>>>>>
>>>>> --------------------------------------------------------------------------------
>>>>>>>> 2010-04-14 16:00:38,259 (main)
>>>>>>>> [   DelegatorFactory.java:49 :ERROR]
>>>>>>>>>> ---- exception report
>>>>>>>>>>
>>>>>>>> ----------------------------------------------------------
>>>>>>>>>> Exception: java.lang.ClassNotFoundException
>>>>>>>>>> Message: java.lang.Class
>>>>>>>>>> ---- stack trace
>>>>>>>>>>
>>>>>>>> ---------------------------------------------------------------
>>>>>>>>>> java.lang.ClassNotFoundException: java.lang.Class
>>>>>>>>>>
>>>>> org.ofbiz.base.util.UtilObject.getObjectFromFactory(UtilObject.java:207)
>>>>> org.ofbiz.entity.DelegatorFactory.getDelegator(DelegatorFactory.java:47)
>>>>> org.ofbiz.entityext.data.EntityDataLoadContainer.start(EntityDataLoadContainer.java:230)
>>>>> org.ofbiz.base.container.ContainerLoader.start(ContainerLoader.java:100)
>>>>>>>> org.ofbiz.base.start.Start.startStartLoaders(Start.java:272)
>>>>>>>> org.ofbiz.base.start.Start.startServer(Start.java:322)
>>>>>>>>>> org.ofbiz.base.start.Start.start(Start.java:326)
>>>>>>>>>> org.ofbiz.base.start.Start.main(Start.java:411)
>>>>>>>>>>
>>>>> --------------------------------------------------------------------------------
>>>>>>>> Exception in thread "main" java.lang.NullPointerException
>>>>>>>>>>        at
>>>>>>>>>>
>>>>> java.util.concurrent.ConcurrentHashMap.putIfAbsent(ConcurrentHashMap.java:895)
>>>>>
>>>>>>>>       at
>>>>>>>>
>>>>> org.ofbiz.entity.DelegatorFactory.getDelegator(DelegatorFactory.java:52)
>>>>>>>>>>        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)
>>>>>>>> .base.container.ContainerLoader.start(ContainerLoader.java:100)
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>
>>
> 
> 


Reply via email to