tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Quintin Beukes <quin...@skywalk.co.za>
Subject Re: custom resource factory
Date Fri, 06 Nov 2009 18:01:12 GMT
Hey,

This is off topic. I'm just curious to learn new things. Why do you need to
create data sources dynamically?

Quintin Beukes


On Fri, Nov 6, 2009 at 5:20 PM, rtselvan <rtselvan@gmail.com> wrote:

>
> Thanks Andy.
>
> your solution would work great, I was thinking to create the data sources
> on
> demand with JNDI interception but this should work as well. I will test it
> out later today.
>
> As long as we use openEJB then, we should be good with this solution. For
> other app servers, we might have to look into different options.
>
> Thanks
> /selvan
>
>
>
> Andy Gumbrecht wrote:
> >
> > Selvan,
> >
> > This is what I am currently doing - you will have to extract what you
> > need from the example. If the OpenEJB instance is not already running
> > then I seed the Properties '_env' for use in the InitialContext, or
> > provide 'null' to configure a Resource for the running embedded instance
> > (see 'SystemInstance'). If you need to do this in a stand alone instance
> > then just create a deploy bean to perform this action.
> >
> > I call the method twice - for managed and unmanaged (and keep track of
> > what is already configured).
> >
> > addDataSourceConfig(_env, true, f, deployment);
> > addDataSourceConfig(_env, false, f, deployment);
> >
> > /**
> >       * Creates a DataSource resource for OpenEJB.
> >       *
> >       * @param env     If not null the properties are seeded with
> > parameters to create the DataSource .
> >       * @param managed Is this a JTA managed or unmanaged DataSource.
> >       * @param f       Root File location for the database - Is specific
> > for file based databases such as Derby, etc.
> >       * @param name    DataSource name - Will prepend to either
> > [name]Managed or [name]Unmanaged.
> >       * @throws StateException If anything goes wrong.
> >       */
> >      private static void addDataSourceConfig(Properties env, final
> > boolean managed, final File f, final String name) throws StateException {
> >
> >          final String m = (managed ? "Managed" : "Unmanaged");
> >
> >          if (_dataSources.contains(String.format("%1$s%2$s", name, m))) {
> >              //Already configured for OpenEJB
> >              return;
> >          }
> >
> >          final Resource resource = (null == env ? new
> > Resource(String.format("%1$s%2$s", name, m), "DataSource") : null);
> >          final String dsname;
> >
> >          if (null != resource) {
> >              env = resource.getProperties();
> >              dsname = "";
> >          } else {
> >              env.put(String.format("%1$s%2$s", name, m),
> > "new://Resource?type=DataSource");
> >              dsname = String.format("%1$s%2$s.", name, m);
> >          }
> >
> >          env.put(String.format("%1$sJtaManaged", dsname), (managed ?
> > "true" : "false"));
> >          env.put(String.format("%1$sUserName", dsname), "SA");
> >
> >          if (isHSQL()) {
> >              env.put(String.format("%1$sJdbcDriver", dsname),
> > "org.hsqldb.jdbc.JDBCDriver");
> >              env.put(String.format("%1$sJdbcUrl", dsname),
> > String.format("jdbc:hsqldb:file:%1$s/%2$s", f.getPath().replace("\\",
> > "/"), m.toLowerCase()));
> >          } else {
> >              env.put(String.format("%1$sJdbcDriver", dsname),
> > "org.apache.derby.jdbc.EmbeddedDriver");
> >              env.put(String.format("%1$sJdbcUrl", dsname),
> > String.format("jdbc:derby:%1$s/%2$s;create=true",
> > f.getPath().replace("\\", "/"), m.toLowerCase()));
> >          }
> >
> >          if (null != resource) {
> >
> >              try {
> >
> > SystemInstance.get().getComponent(Assembler.class).createResource(new
> > ConfigurationFactory().configureService(resource, ResourceInfo.class));
> >                  Thread.yield();
> >              } catch (OpenEJBException e) {
> >                  log.error("error:", e);
> >                  throw new StateException(String.format("Failed to add
> > DataSource %1$s%2$s", name, m), e);
> >              }
> >          }
> >
> >          _dataSources.add(String.format("%1$s%2$s", name, m));
> >      }
> >
> > On 05.11.2009 07:45, rtselvan wrote:
> >> I am trying to implement a multi-tenant application using openEJB
> >> container,
> >> I need to be able to create the datasource dynamically for the JPA
> >> (hibernate JPA). so I wrote a custom jndi object factory but it never
> get
> >> called.
> >>
> >> Is the custom resource factory supported in openEJB? or any hidden
> >> documentation available out there for it?
> >>
> >> Thanks
> >> /selvan
> >>
> >
> >
>
> --
> View this message in context:
> http://old.nabble.com/custom-resource-factory-tp26208589p26230797.html
> Sent from the OpenEJB User mailing list archive at Nabble.com.
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message