Skip navigation
Currently Being Moderated

Configuring the application to use multiple data sources

Sep 20, 2012 10:44 PM

 
Replies
  • Currently Being Moderated
    Sep 20, 2012 10:46 PM   in reply to Community Help

    It appears that the datasource attribute of <cfcomponent> cannot be a variable and must be a static string.  For instance, datasource="#session.myDSN#" will not work.  It's too bad, as this would have been a good feature.  Is there a way around this?

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 21, 2012 4:52 AM   in reply to Abram Adams

    I have functions inside components that take the datasource as an argument.  However, I don't use session variables inside components.

     

    What are the details of, "will not work"?

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 21, 2012 9:09 AM   in reply to Dan Bracuk

    Sorry I was so vague, I hate it when people do that.  I also didn't realize this created a forum post in the adobe forums, so for context I am stating that the datasource attribute on a persistent component cannot be dynamic. If you try to set the datasource attribute using a variable or method it will fail with the error:

     

     

    Message: Could not initialize class cfArt2ecfc384392074

    StackTrace: java.lang.ClassCastException: java.lang.NoClassDefFoundError: Could not initialize class cfArt2ecfc384392074 at sun.misc.Unsafe.ensureClassInitialized(Native Method) at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAc cessorFactory.java:25) at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java :122) at java.lang.reflect.Field.acquireFieldAccessor(Field.java:918) at java.lang.reflect.Field.getFieldAccessor(Field.java:899) at java.lang.reflect.Field.get(Field.java:358) at coldfusion.runtime.MetadataUtils.getBasicComponentMetadata(MetadataUt ils.java:169) at coldfusion.orm.mapping.CFPropertyBinder.<init>(CFPropertyBinder.java: 114) at coldfusion.orm.hibernate.HibernateConfiguration.generateHbmDocFromCFC s(HibernateConfiguration.java:974) at coldfusion.orm.hibernate.HibernateConfiguration.generateAndLoadHBMFil esFromCFCs(HibernateConfiguration.java:637) at coldfusion.orm.hibernate.HibernateConfiguration.buildConfiguration(Hi bernateConfiguration.java:530) at coldfusion.orm.hibernate.HibernateConfiguration.initHibernateConfigur ation(HibernateConfiguration.java:179) at coldfusion.orm.hibernate.HibernateConfiguration.<init>(HibernateConfi guration.java:152) at coldfusion.orm.hibernate.ConfigurationManager.initConfiguration(Confi gurationManager.java:67) at coldfusion.orm.hibernate.HibernateProvider.InitializeORMForApplicatio n(HibernateProvider.java:176) at coldfusion.orm.hibernate.HibernateProvider.beforeApplicationStart(Hib ernateProvider.java:79) at coldfusion.filter.ApplicationFilter.fireBeforeAppStartEvent(Applicati onFilter.java:504) at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:239 ) at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.ja va:48) at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) at coldfusion.filter.PathFilter.invoke(PathFilter.java:94) at coldfusion.filter.LicenseFilter.invoke(LicenseFilter.java:27) at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70) at coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:7 9) at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePers istenceFilter.java:28) at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46) at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62) at coldfusion.CfmServlet.service(CfmServlet.java:200) at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:8 9) at jrun.servlet.FilterChain.doFilter(FilterChain.java:86) at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringS ervletFilter.java:42) at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46 ) at jrun.servlet.FilterChain.doFilter(FilterChain.java:94) at jrun.servlet.FilterChain.service(FilterChain.java:101) at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106) at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42) at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java: 286) at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java: 543) at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.ja va:203) at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPoo l.java:320) at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.j ava:428) at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool. java:266) at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)

     

     

    So for example, in your Application.cfc you set:

     

     

    this.datasource = "SOME_DSN";

    application.myDSN = "SOME_OTHER_DSN";

    this.ormEnabled = "true";

    ....

     

     

    Then, in Art.cfc (using the example in the docs):

    <cfcomponent persistent="true" datasource="#application.myDSN#" table="Art">

      ...

    </cfcomponent>

     

     

    This will result in said error.  If I set the datasource to static text it works:

    <cfcomponent persistent="true" datasource="SOME_OTHER_DSN" table="Art">

      ...

    </cfcomponent>

     
    |
    Mark as:

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points