Multitenancy support

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
20 messages Options
Reply | Threaded
Open this post in threaded view
|

Multitenancy support

Mickael BRIDE
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 | Threaded
Open this post in threaded view
|

Re: Multitenancy support

Adrian Crum
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 | Threaded
Open this post in threaded view
|

Re: Multitenancy support

BJ Freeman
In reply to this post by Mickael BRIDE
use
 To load the multi-tenant demo, run
ant run-install-multitenant.
the demo uses derby so look at the entityengine.xml for how to configure
other database servers.
the second one is for when you have developed your own seed data.


=========================
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>


Mickael BRIDE sent the following on 4/14/2010 7:33 AM:

> 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 | Threaded
Open this post in threaded view
|

Re: Multitenancy support

Scott Gray-2
In reply to this post by Adrian Crum
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)


smime.p7s (3K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Multitenancy support

Adrian Crum-2
That would be very helpful!

-Adrian

--- On Thu, 4/15/10, Scott Gray <[hidden email]> wrote:

> From: Scott Gray <[hidden email]>
> Subject: Re: Multitenancy support
> To: [hidden email]
> 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 | Threaded
Open this post in threaded view
|

Re: Multitenancy support

BJ Freeman
In reply to this post by Mickael BRIDE
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 <[hidden email]> wrote:
>
>> From: Scott Gray <[hidden email]>
>> Subject: Re: Multitenancy support
>> To: [hidden email]
>> 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 | Threaded
Open this post in threaded view
|

Re: Multitenancy support

Adrian Crum-2
Maybe break things down into smaller pieces. For example, I would like to have two data instances running where I work - a sandbox instance and a live-data instance (for a manufacturing company with no eCommerce). Those two instances have nothing to do with a product store.

Then go from there to map data-instances to product stores.

-Adrian


--- On Thu, 4/15/10, BJ Freeman <[hidden email]> wrote:

> From: BJ Freeman <[hidden email]>
> Subject: Re: Multitenancy support
> To: [hidden email]
> Date: Thursday, April 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 <[hidden email]>
> wrote:
> >
> >> From: Scott Gray <[hidden email]>
> >> Subject: Re: Multitenancy support
> >> To: [hidden email]
> >> 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 | Threaded
Open this post in threaded view
|

Re: Multitenancy support

BJ Freeman
In reply to this post by Mickael BRIDE

I used productstore as an example where a company that is providing
eccommerce would need such a ability.
However you also have the Products to load, Company name to change, the
list goes on.

could you expand on
"Then go from there to map data-instances to product stores."
are you talking about having to change the component-load.xml and the
ext data for every time you want to load a tenant? When there might be
10-100 a day that gets very laborious, as well as error prone. compared
to editing the component-load.xml once with ext-delegatorID.

I think it would be easier to change the code to add the delegatorid to
the ext filename so you just have to put in the component-load.xml,
everytime.

this lets you run the install from ant and a script, as well as not
having to change component-load.xml, but once for all 10-100

=========================
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 11:10 PM:

> Maybe break things down into smaller pieces. For example, I would like to have two data instances running where I work - a sandbox instance and a live-data instance (for a manufacturing company with no eCommerce). Those two instances have nothing to do with a product store.
>
> Then go from there to map data-instances to product stores.
>
> -Adrian
>
>
> --- On Thu, 4/15/10, BJ Freeman <[hidden email]> wrote:
>
>> From: BJ Freeman <[hidden email]>
>> Subject: Re: Multitenancy support
>> To: [hidden email]
>> Date: Thursday, April 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 <[hidden email]>
>> wrote:
>>>> From: Scott Gray <[hidden email]>
>>>> Subject: Re: Multitenancy support
>>>> To: [hidden email]
>>>> 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 | Threaded
Open this post in threaded view
|

Re: Multitenancy support

Adrian Crum-2
I'm talking about something I mentioned a while ago - the ability to have back office applications have a sandbox company to try out ideas with.

Set aside eCommerce for a minute and imagine you're a large enterprise using OFBiz for ERP only. How do you get users to learn OFBiz? By having them use live data? Of course not! You want to give them a sandbox to try things out. So, they log into another data instance (a tenant) so they can play around with data all they want without affecting the live data. In other words, they have a practice company to experiment with.

Does that make sense?

-Adrian

--- On Fri, 4/16/10, BJ Freeman <[hidden email]> wrote:

> From: BJ Freeman <[hidden email]>
> Subject: Re: Multitenancy support
> To: [hidden email]
> Date: Friday, April 16, 2010, 12:09 AM
>
> I used productstore as an example where a company that is
> providing
> eccommerce would need such a ability.
> However you also have the Products to load, Company name to
> change, the
> list goes on.
>
> could you expand on
> "Then go from there to map data-instances to product
> stores."
> are you talking about having to change the
> component-load.xml and the
> ext data for every time you want to load a tenant? When
> there might be
> 10-100 a day that gets very laborious, as well as error
> prone. compared
> to editing the component-load.xml once with
> ext-delegatorID.
>
> I think it would be easier to change the code to add the
> delegatorid to
> the ext filename so you just have to put in the
> component-load.xml,
> everytime.
>
> this lets you run the install from ant and a script, as
> well as not
> having to change component-load.xml, but once for all
> 10-100
>
> =========================
> 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 11:10 PM:
> > Maybe break things down into smaller pieces. For
> example, I would like to have two data instances running
> where I work - a sandbox instance and a live-data instance
> (for a manufacturing company with no eCommerce). Those two
> instances have nothing to do with a product store.
> >
> > Then go from there to map data-instances to product
> stores.
> >
> > -Adrian
> >
> >
> > --- On Thu, 4/15/10, BJ Freeman <[hidden email]>
> wrote:
> >
> >> From: BJ Freeman <[hidden email]>
> >> Subject: Re: Multitenancy support
> >> To: [hidden email]
> >> Date: Thursday, April 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 <[hidden email]>
> >> wrote:
> >>>> From: Scott Gray <[hidden email]>
> >>>> Subject: Re: Multitenancy support
> >>>> To: [hidden email]
> >>>> 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 | Threaded
Open this post in threaded view
|

Re: Multitenancy support

BJ Freeman
In reply to this post by Mickael BRIDE
yes it makes sense but for that why not just run another instance.
yes tenant is good for that as well but it seems tenant was more for SAS
 companies.

=========================
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/16/2010 1:12 AM:

> I'm talking about something I mentioned a while ago - the ability to have back office applications have a sandbox company to try out ideas with.
>
> Set aside eCommerce for a minute and imagine you're a large enterprise using OFBiz for ERP only. How do you get users to learn OFBiz? By having them use live data? Of course not! You want to give them a sandbox to try things out. So, they log into another data instance (a tenant) so they can play around with data all they want without affecting the live data. In other words, they have a practice company to experiment with.
>
> Does that make sense?
>
> -Adrian
>
> --- On Fri, 4/16/10, BJ Freeman <[hidden email]> wrote:
>
>> From: BJ Freeman <[hidden email]>
>> Subject: Re: Multitenancy support
>> To: [hidden email]
>> Date: Friday, April 16, 2010, 12:09 AM
>>
>> I used productstore as an example where a company that is
>> providing
>> eccommerce would need such a ability.
>> However you also have the Products to load, Company name to
>> change, the
>> list goes on.
>>
>> could you expand on
>> "Then go from there to map data-instances to product
>> stores."
>> are you talking about having to change the
>> component-load.xml and the
>> ext data for every time you want to load a tenant? When
>> there might be
>> 10-100 a day that gets very laborious, as well as error
>> prone. compared
>> to editing the component-load.xml once with
>> ext-delegatorID.
>>
>> I think it would be easier to change the code to add the
>> delegatorid to
>> the ext filename so you just have to put in the
>> component-load.xml,
>> everytime.
>>
>> this lets you run the install from ant and a script, as
>> well as not
>> having to change component-load.xml, but once for all
>> 10-100
>>
>> =========================
>> 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 11:10 PM:
>>> Maybe break things down into smaller pieces. For
>> example, I would like to have two data instances running
>> where I work - a sandbox instance and a live-data instance
>> (for a manufacturing company with no eCommerce). Those two
>> instances have nothing to do with a product store.
>>> Then go from there to map data-instances to product
>> stores.
>>> -Adrian
>>>
>>>
>>> --- On Thu, 4/15/10, BJ Freeman <[hidden email]>
>> wrote:
>>>> From: BJ Freeman <[hidden email]>
>>>> Subject: Re: Multitenancy support
>>>> To: [hidden email]
>>>> Date: Thursday, April 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 <[hidden email]>
>>>> wrote:
>>>>>> From: Scott Gray <[hidden email]>
>>>>>> Subject: Re: Multitenancy support
>>>>>> To: [hidden email]
>>>>>> 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 | Threaded
Open this post in threaded view
|

Re: Multitenancy support

Adrian Crum-2
Why would I want to go through the nightmare of trying to run multiple copies of OFBiz (with the myriad of issues that come with it) when I can just create a second database for users to experiment with?

I have been selling, supporting, and modifying accounting applications for decades. They all have a practice company for new users to learn on. Only in OFBiz have I been told to run multiple copies of the *application* (not the data) to support that. Finally, after six years of using OFBiz, that capability is possible.

So, yeah - I'm not going to set up complicated Unix boxes running VMs to get a sandbox set up for my users. I'd rather have a separate database on a single instance of OFBiz. That's what I expect from an enterprise-class ERP product.

So, let's get the documentation set up so that it isn't so eCommerce-centric and it considers enterprises that aren't eCommerce-driven. That's all I'm suggesting. It's not that big of a deal. In other words, stop treating the ERP side of OFBiz as the red-headed stepchild.

-Adrian


--- On Fri, 4/16/10, BJ Freeman <[hidden email]> wrote:

> From: BJ Freeman <[hidden email]>
> Subject: Re: Multitenancy support
> To: [hidden email]
> Date: Friday, April 16, 2010, 1:19 AM
> yes it makes sense but for that why
> not just run another instance.
> yes tenant is good for that as well but it seems tenant was
> more for SAS
>  companies.
>
> =========================
> 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/16/2010 1:12 AM:
> > I'm talking about something I mentioned a while ago -
> the ability to have back office applications have a sandbox
> company to try out ideas with.
> >
> > Set aside eCommerce for a minute and imagine you're a
> large enterprise using OFBiz for ERP only. How do you get
> users to learn OFBiz? By having them use live data? Of
> course not! You want to give them a sandbox to try things
> out. So, they log into another data instance (a tenant) so
> they can play around with data all they want without
> affecting the live data. In other words, they have a
> practice company to experiment with.
> >
> > Does that make sense?
> >
> > -Adrian
> >
> > --- On Fri, 4/16/10, BJ Freeman <[hidden email]>
> wrote:
> >
> >> From: BJ Freeman <[hidden email]>
> >> Subject: Re: Multitenancy support
> >> To: [hidden email]
> >> Date: Friday, April 16, 2010, 12:09 AM
> >>
> >> I used productstore as an example where a company
> that is
> >> providing
> >> eccommerce would need such a ability.
> >> However you also have the Products to load,
> Company name to
> >> change, the
> >> list goes on.
> >>
> >> could you expand on
> >> "Then go from there to map data-instances to
> product
> >> stores."
> >> are you talking about having to change the
> >> component-load.xml and the
> >> ext data for every time you want to load a tenant?
> When
> >> there might be
> >> 10-100 a day that gets very laborious, as well as
> error
> >> prone. compared
> >> to editing the component-load.xml once with
> >> ext-delegatorID.
> >>
> >> I think it would be easier to change the code to
> add the
> >> delegatorid to
> >> the ext filename so you just have to put in the
> >> component-load.xml,
> >> everytime.
> >>
> >> this lets you run the install from ant and a
> script, as
> >> well as not
> >> having to change component-load.xml, but once for
> all
> >> 10-100
> >>
> >> =========================
> >> 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 11:10
> PM:
> >>> Maybe break things down into smaller pieces.
> For
> >> example, I would like to have two data instances
> running
> >> where I work - a sandbox instance and a live-data
> instance
> >> (for a manufacturing company with no eCommerce).
> Those two
> >> instances have nothing to do with a product
> store.
> >>> Then go from there to map data-instances to
> product
> >> stores.
> >>> -Adrian
> >>>
> >>>
> >>> --- On Thu, 4/15/10, BJ Freeman <[hidden email]>
> >> wrote:
> >>>> From: BJ Freeman <[hidden email]>
> >>>> Subject: Re: Multitenancy support
> >>>> To: [hidden email]
> >>>> Date: Thursday, April 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 <[hidden email]>
> >>>> wrote:
> >>>>>> From: Scott Gray <[hidden email]>
> >>>>>> Subject: Re: Multitenancy support
> >>>>>> To: [hidden email]
> >>>>>> 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 | Threaded
Open this post in threaded view
|

Re: Multitenancy support

BJ Freeman
In reply to this post by Mickael BRIDE
Adam, I agreed that tenant works for you situation.
however my focus is not your situation, which tenant as it is now works,
but for SAS type companies.
so can we focus on how ofbiz multitnacy can work for SAS type situations.
Resource Planning should be at the core of all businesses, not only
manufacturing.
thanks.

=========================
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/16/2010 1:33 AM:

> Why would I want to go through the nightmare of trying to run multiple copies of OFBiz (with the myriad of issues that come with it) when I can just create a second database for users to experiment with?
>
> I have been selling, supporting, and modifying accounting applications for decades. They all have a practice company for new users to learn on. Only in OFBiz have I been told to run multiple copies of the *application* (not the data) to support that. Finally, after six years of using OFBiz, that capability is possible.
>
> So, yeah - I'm not going to set up complicated Unix boxes running VMs to get a sandbox set up for my users. I'd rather have a separate database on a single instance of OFBiz. That's what I expect from an enterprise-class ERP product.
>
> So, let's get the documentation set up so that it isn't so eCommerce-centric and it considers enterprises that aren't eCommerce-driven. That's all I'm suggesting. It's not that big of a deal. In other words, stop treating the ERP side of OFBiz as the red-headed stepchild.
>
> -Adrian
>
>
> --- On Fri, 4/16/10, BJ Freeman <[hidden email]> wrote:
>
>> From: BJ Freeman <[hidden email]>
>> Subject: Re: Multitenancy support
>> To: [hidden email]
>> Date: Friday, April 16, 2010, 1:19 AM
>> yes it makes sense but for that why
>> not just run another instance.
>> yes tenant is good for that as well but it seems tenant was
>> more for SAS
>>  companies.
>>
>> =========================
>> 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/16/2010 1:12 AM:
>>> I'm talking about something I mentioned a while ago -
>> the ability to have back office applications have a sandbox
>> company to try out ideas with.
>>> Set aside eCommerce for a minute and imagine you're a
>> large enterprise using OFBiz for ERP only. How do you get
>> users to learn OFBiz? By having them use live data? Of
>> course not! You want to give them a sandbox to try things
>> out. So, they log into another data instance (a tenant) so
>> they can play around with data all they want without
>> affecting the live data. In other words, they have a
>> practice company to experiment with.
>>> Does that make sense?
>>>
>>> -Adrian
>>>
>>> --- On Fri, 4/16/10, BJ Freeman <[hidden email]>
>> wrote:
>>>> From: BJ Freeman <[hidden email]>
>>>> Subject: Re: Multitenancy support
>>>> To: [hidden email]
>>>> Date: Friday, April 16, 2010, 12:09 AM
>>>>
>>>> I used productstore as an example where a company
>> that is
>>>> providing
>>>> eccommerce would need such a ability.
>>>> However you also have the Products to load,
>> Company name to
>>>> change, the
>>>> list goes on.
>>>>
>>>> could you expand on
>>>> "Then go from there to map data-instances to
>> product
>>>> stores."
>>>> are you talking about having to change the
>>>> component-load.xml and the
>>>> ext data for every time you want to load a tenant?
>> When
>>>> there might be
>>>> 10-100 a day that gets very laborious, as well as
>> error
>>>> prone. compared
>>>> to editing the component-load.xml once with
>>>> ext-delegatorID.
>>>>
>>>> I think it would be easier to change the code to
>> add the
>>>> delegatorid to
>>>> the ext filename so you just have to put in the
>>>> component-load.xml,
>>>> everytime.
>>>>
>>>> this lets you run the install from ant and a
>> script, as
>>>> well as not
>>>> having to change component-load.xml, but once for
>> all
>>>> 10-100
>>>>
>>>> =========================
>>>> 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 11:10
>> PM:
>>>>> Maybe break things down into smaller pieces.
>> For
>>>> example, I would like to have two data instances
>> running
>>>> where I work - a sandbox instance and a live-data
>> instance
>>>> (for a manufacturing company with no eCommerce).
>> Those two
>>>> instances have nothing to do with a product
>> store.
>>>>> Then go from there to map data-instances to
>> product
>>>> stores.
>>>>> -Adrian
>>>>>
>>>>>
>>>>> --- On Thu, 4/15/10, BJ Freeman <[hidden email]>
>>>> wrote:
>>>>>> From: BJ Freeman <[hidden email]>
>>>>>> Subject: Re: Multitenancy support
>>>>>> To: [hidden email]
>>>>>> Date: Thursday, April 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 <[hidden email]>
>>>>>> wrote:
>>>>>>>> From: Scott Gray <[hidden email]>
>>>>>>>> Subject: Re: Multitenancy support
>>>>>>>> To: [hidden email]
>>>>>>>> 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 | Threaded
Open this post in threaded view
|

Re: Multitenancy support

Adrian Crum-2
In reply to this post by Adrian Crum-2
That reply was harsh. I apologize.

-Adrian

--- On Fri, 4/16/10, Adrian Crum <[hidden email]> wrote:

> From: Adrian Crum <[hidden email]>
> Subject: Re: Multitenancy support
> To: [hidden email]
> Date: Friday, April 16, 2010, 1:33 AM
> Why would I want to go through the
> nightmare of trying to run multiple copies of OFBiz (with
> the myriad of issues that come with it) when I can just
> create a second database for users to experiment with?
>
> I have been selling, supporting, and modifying accounting
> applications for decades. They all have a practice company
> for new users to learn on. Only in OFBiz have I been told to
> run multiple copies of the *application* (not the data) to
> support that. Finally, after six years of using OFBiz, that
> capability is possible.
>
> So, yeah - I'm not going to set up complicated Unix boxes
> running VMs to get a sandbox set up for my users. I'd rather
> have a separate database on a single instance of OFBiz.
> That's what I expect from an enterprise-class ERP product.
>
> So, let's get the documentation set up so that it isn't so
> eCommerce-centric and it considers enterprises that aren't
> eCommerce-driven. That's all I'm suggesting. It's not that
> big of a deal. In other words, stop treating the ERP side of
> OFBiz as the red-headed stepchild.
>
> -Adrian
>
>
> --- On Fri, 4/16/10, BJ Freeman <[hidden email]>
> wrote:
>
> > From: BJ Freeman <[hidden email]>
> > Subject: Re: Multitenancy support
> > To: [hidden email]
> > Date: Friday, April 16, 2010, 1:19 AM
> > yes it makes sense but for that why
> > not just run another instance.
> > yes tenant is good for that as well but it seems
> tenant was
> > more for SAS
> >  companies.
> >
> > =========================
> > 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/16/2010 1:12 AM:
> > > I'm talking about something I mentioned a while
> ago -
> > the ability to have back office applications have a
> sandbox
> > company to try out ideas with.
> > >
> > > Set aside eCommerce for a minute and imagine
> you're a
> > large enterprise using OFBiz for ERP only. How do you
> get
> > users to learn OFBiz? By having them use live data?
> Of
> > course not! You want to give them a sandbox to try
> things
> > out. So, they log into another data instance (a
> tenant) so
> > they can play around with data all they want without
> > affecting the live data. In other words, they have a
> > practice company to experiment with.
> > >
> > > Does that make sense?
> > >
> > > -Adrian
> > >
> > > --- On Fri, 4/16/10, BJ Freeman <[hidden email]>
> > wrote:
> > >
> > >> From: BJ Freeman <[hidden email]>
> > >> Subject: Re: Multitenancy support
> > >> To: [hidden email]
> > >> Date: Friday, April 16, 2010, 12:09 AM
> > >>
> > >> I used productstore as an example where a
> company
> > that is
> > >> providing
> > >> eccommerce would need such a ability.
> > >> However you also have the Products to load,
> > Company name to
> > >> change, the
> > >> list goes on.
> > >>
> > >> could you expand on
> > >> "Then go from there to map data-instances to
> > product
> > >> stores."
> > >> are you talking about having to change the
> > >> component-load.xml and the
> > >> ext data for every time you want to load a
> tenant?
> > When
> > >> there might be
> > >> 10-100 a day that gets very laborious, as
> well as
> > error
> > >> prone. compared
> > >> to editing the component-load.xml once with
> > >> ext-delegatorID.
> > >>
> > >> I think it would be easier to change the code
> to
> > add the
> > >> delegatorid to
> > >> the ext filename so you just have to put in
> the
> > >> component-load.xml,
> > >> everytime.
> > >>
> > >> this lets you run the install from ant and a
> > script, as
> > >> well as not
> > >> having to change component-load.xml, but once
> for
> > all
> > >> 10-100
> > >>
> > >> =========================
> > >> 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
> 11:10
> > PM:
> > >>> Maybe break things down into smaller
> pieces.
> > For
> > >> example, I would like to have two data
> instances
> > running
> > >> where I work - a sandbox instance and a
> live-data
> > instance
> > >> (for a manufacturing company with no
> eCommerce).
> > Those two
> > >> instances have nothing to do with a product
> > store.
> > >>> Then go from there to map data-instances
> to
> > product
> > >> stores.
> > >>> -Adrian
> > >>>
> > >>>
> > >>> --- On Thu, 4/15/10, BJ Freeman <[hidden email]>
> > >> wrote:
> > >>>> From: BJ Freeman <[hidden email]>
> > >>>> Subject: Re: Multitenancy support
> > >>>> To: [hidden email]
> > >>>> Date: Thursday, April 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
> <[hidden email]>
> > >>>> wrote:
> > >>>>>> From: Scott Gray <[hidden email]>
> > >>>>>> Subject: Re: Multitenancy
> support
> > >>>>>> To: [hidden email]
> > >>>>>> 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 | Threaded
Open this post in threaded view
|

Re: Multitenancy support

BJ Freeman
In reply to this post by Mickael BRIDE
no problem. I did not take it has harsh just not answering my concerns.

=========================
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/16/2010 7:11 AM:

> That reply was harsh. I apologize.
>
> -Adrian
>
> --- On Fri, 4/16/10, Adrian Crum <[hidden email]> wrote:
>
>> From: Adrian Crum <[hidden email]>
>> Subject: Re: Multitenancy support
>> To: [hidden email]
>> Date: Friday, April 16, 2010, 1:33 AM
>> Why would I want to go through the
>> nightmare of trying to run multiple copies of OFBiz (with
>> the myriad of issues that come with it) when I can just
>> create a second database for users to experiment with?
>>
>> I have been selling, supporting, and modifying accounting
>> applications for decades. They all have a practice company
>> for new users to learn on. Only in OFBiz have I been told to
>> run multiple copies of the *application* (not the data) to
>> support that. Finally, after six years of using OFBiz, that
>> capability is possible.
>>
>> So, yeah - I'm not going to set up complicated Unix boxes
>> running VMs to get a sandbox set up for my users. I'd rather
>> have a separate database on a single instance of OFBiz.
>> That's what I expect from an enterprise-class ERP product.
>>
>> So, let's get the documentation set up so that it isn't so
>> eCommerce-centric and it considers enterprises that aren't
>> eCommerce-driven. That's all I'm suggesting. It's not that
>> big of a deal. In other words, stop treating the ERP side of
>> OFBiz as the red-headed stepchild.
>>
>> -Adrian
>>
>>
>> --- On Fri, 4/16/10, BJ Freeman <[hidden email]>
>> wrote:
>>
>>> From: BJ Freeman <[hidden email]>
>>> Subject: Re: Multitenancy support
>>> To: [hidden email]
>>> Date: Friday, April 16, 2010, 1:19 AM
>>> yes it makes sense but for that why
>>> not just run another instance.
>>> yes tenant is good for that as well but it seems
>> tenant was
>>> more for SAS
>>>   companies.
>>>
>>> =========================
>>> 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/16/2010 1:12 AM:
>>>> I'm talking about something I mentioned a while
>> ago -
>>> the ability to have back office applications have a
>> sandbox
>>> company to try out ideas with.
>>>> Set aside eCommerce for a minute and imagine
>> you're a
>>> large enterprise using OFBiz for ERP only. How do you
>> get
>>> users to learn OFBiz? By having them use live data?
>> Of
>>> course not! You want to give them a sandbox to try
>> things
>>> out. So, they log into another data instance (a
>> tenant) so
>>> they can play around with data all they want without
>>> affecting the live data. In other words, they have a
>>> practice company to experiment with.
>>>> Does that make sense?
>>>>
>>>> -Adrian
>>>>
>>>> --- On Fri, 4/16/10, BJ Freeman <[hidden email]>
>>> wrote:
>>>>> From: BJ Freeman <[hidden email]>
>>>>> Subject: Re: Multitenancy support
>>>>> To: [hidden email]
>>>>> Date: Friday, April 16, 2010, 12:09 AM
>>>>>
>>>>> I used productstore as an example where a
>> company
>>> that is
>>>>> providing
>>>>> eccommerce would need such a ability.
>>>>> However you also have the Products to load,
>>> Company name to
>>>>> change, the
>>>>> list goes on.
>>>>>
>>>>> could you expand on
>>>>> "Then go from there to map data-instances to
>>> product
>>>>> stores."
>>>>> are you talking about having to change the
>>>>> component-load.xml and the
>>>>> ext data for every time you want to load a
>> tenant?
>>> When
>>>>> there might be
>>>>> 10-100 a day that gets very laborious, as
>> well as
>>> error
>>>>> prone. compared
>>>>> to editing the component-load.xml once with
>>>>> ext-delegatorID.
>>>>>
>>>>> I think it would be easier to change the code
>> to
>>> add the
>>>>> delegatorid to
>>>>> the ext filename so you just have to put in
>> the
>>>>> component-load.xml,
>>>>> everytime.
>>>>>
>>>>> this lets you run the install from ant and a
>>> script, as
>>>>> well as not
>>>>> having to change component-load.xml, but once
>> for
>>> all
>>>>> 10-100
>>>>>
>>>>> =========================
>>>>> 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
>> 11:10
>>> PM:
>>>>>> Maybe break things down into smaller
>> pieces.
>>> For
>>>>> example, I would like to have two data
>> instances
>>> running
>>>>> where I work - a sandbox instance and a
>> live-data
>>> instance
>>>>> (for a manufacturing company with no
>> eCommerce).
>>> Those two
>>>>> instances have nothing to do with a product
>>> store.
>>>>>> Then go from there to map data-instances
>> to
>>> product
>>>>> stores.
>>>>>> -Adrian
>>>>>>
>>>>>>
>>>>>> --- On Thu, 4/15/10, BJ Freeman <[hidden email]>
>>>>> wrote:
>>>>>>> From: BJ Freeman <[hidden email]>
>>>>>>> Subject: Re: Multitenancy support
>>>>>>> To: [hidden email]
>>>>>>> Date: Thursday, April 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
>> <[hidden email]>
>>>>>>> wrote:
>>>>>>>>> From: Scott Gray <[hidden email]>
>>>>>>>>> Subject: Re: Multitenancy
>> support
>>>>>>>>> To: [hidden email]
>>>>>>>>> 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 | Threaded
Open this post in threaded view
|

Re: Multitenancy support

BJ Freeman
In reply to this post by Mickael BRIDE
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 <[hidden email]> wrote:
>>
>>> From: Scott Gray <[hidden email]>
>>> Subject: Re: Multitenancy support
>>> To: [hidden email]
>>> 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 | Threaded
Open this post in threaded view
|

Re: Multitenancy support

Marc Morin
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" <[hidden email]> 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 <[hidden email]>
> wrote:
> >>
> >>> From: Scott Gray <[hidden email]>
> >>> Subject: Re: Multitenancy support
> >>> To: [hidden email]
> >>> 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 | Threaded
Open this post in threaded view
|

Re: Multitenancy support

David E. Jones-2

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" <[hidden email]> 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 <[hidden email]>
>> wrote:
>>>>
>>>>> From: Scott Gray <[hidden email]>
>>>>> Subject: Re: Multitenancy support
>>>>> To: [hidden email]
>>>>> 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 | Threaded
Open this post in threaded view
|

Re: Multitenancy support

BJ Freeman
In reply to this post by Marc Morin
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" <[hidden email]> 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 <[hidden email]>
>>> wrote:
>>>>>> From: Scott Gray <[hidden email]>
>>>>>> Subject: Re: Multitenancy support
>>>>>> To: [hidden email]
>>>>>> 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 | Threaded
Open this post in threaded view
|

Re: Multitenancy support

David E. Jones-2

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" <[hidden email]> 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 <[hidden email]>
>>>> wrote:
>>>>>>> From: Scott Gray <[hidden email]>
>>>>>>> Subject: Re: Multitenancy support
>>>>>>> To: [hidden email]
>>>>>>> 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 | Threaded
Open this post in threaded view
|

Re: Multitenancy support

BJ Freeman
In reply to this post by BJ Freeman
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" <[hidden email]> 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 <[hidden email]>
>>>>> wrote:
>>>>>>>> From: Scott Gray <[hidden email]>
>>>>>>>> Subject: Re: Multitenancy support
>>>>>>>> To: [hidden email]
>>>>>>>> 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)
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>
>>
>
>