InitialContext ctx = new InitialContext();
String dataSourceName = (String) ctx.lookup("DATASOURCE");then to actually get the DataSource,
DataSource dataSource = (DataSource) ctx.lookup(dataSourceName);
It must be a weblogic specific thing that the datasource is just made available to the context of the components that are in the server the datasource is deployed to. We're certainly learning lots about spec compliance (like it's not a good idea to call business methods on other beans in your ejbCreate :o ).
Thanks again! ~mark
David Blevins wrote:
On Thu, Aug 26, 2004 at 01:38:51AM +0200, Jacek Laskowski wrote:
Mark Lybarger wrote:
is it possible for me to configure openejb to make available aYou don't have to use resource-ref. You can declare InitialContextFactory as the Local or Remote one of OpenEJB and use the stuff bound to it. Resource-refs are the way to abstract a code from the real container of these refs. Using resource-ref allows you to make changes to resource configuration outside of your code (no recompilation necessary then).
datasource outside of using a resource-ref?
Just attach itself to OpenEJB JNDI via the Local or Remote InitialContext (see http://www.openejb.org/embedded.html or http://www.openejb.org/remote-server.html) and lookup what's available casting where required to the appropriate type, e.g. javax.sql.DataSource.
A couple corrections: using resourc-refs is the only J2EE or EJB compliant way to get a DataSource from an enterprise bean; datasources aren't available through either the Local or Remote InitialContext implementations.
The compliant way is to do this:
<resource-ref> <res-ref-name>my/favorite/datasource/foo</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
These are all valid ways to get that datasource.
----------------- InitialContext ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("java:comp/env/my/favorite/datasource/foo"); ----------------- Context ctx = new InitialContext(); ctx = (Context) ctx.lookup("java:comp/env"); // ... DataSource ds = (DataSource) ctx.lookup("my/favorite/datasource/foo"); ----------------- Context ctx = new InitialContext(); ctx = (Context) ctx.lookup("java:comp/env"); // ... ctx = (Context) ctx.lookup("my/favorite"); // ... DataSource ds = (DataSource) ctx.lookup("datasource/foo"); -----------------
Everything the bean looks up from JNDI must be relative to "java:comp/env" in one way or another.
-David
