This week's giveaway is in the Android forum.
We're giving away four copies of Android Security Essentials Live Lessons and have Godfrey Nolan on-line!
See this thread for details.
The moose likes BEA/Weblogic and the fly likes DataSource in ejb-jar.xml Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Products » BEA/Weblogic
Bookmark "DataSource in ejb-jar.xml" Watch "DataSource in ejb-jar.xml" New topic
Author

DataSource in ejb-jar.xml

peter brews
Ranch Hand

Joined: Jan 25, 2002
Posts: 59
I reposting my question :
Chris Thanks for all your help .
Could you please suggest me where to specify this datasource in ejb-jar.xml & jndi name with datasource in ejb-weblogic-jar.xml
Following is my ejb-jar.xml:
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN' 'http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd'>
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>statelessSession</ejb-name>
<home> myapp.MYAPPWebServiceHome</home>
<remote> myapp.MYAPPWebService</remote>
<ejb-class> myapp.MYAPPWebServiceBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>statelessSession</ejb-name>
<method-intf>Remote</method-intf>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
<container-transaction>
</assembly-descriptor>
</ejb-jar>
following is my ejb-weblogic-jar.xml :
<?xml version="1.0"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic 5.1.0 EJB//EN' 'http://www.bea.com/servers/wls510/dtd/weblogic-ejb-jar.dtd'>
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>statelessSession</ejb-name>
<caching-descriptor>
<max-beans-in-free-pool>100</max-beans-in-free-pool>
</caching-descriptor>
<jndi-name>stateless.MYAPPWebServiceHome</jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>

Following is my code in the ejb method:
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL,
"t3://hostName:7001");
// Get a context for the JNDI look up
ctx = new InitialContext(ht);
javax.sql.DataSource ds
= (javax.sql.DataSource) ctx.lookup ("mydataSource-OracleThinDriverPool");
conn = ds.getConnection();
Thanks,
smita
Chris Mathews
Ranch Hand

Joined: Jul 18, 2001
Posts: 2712
You don't NEED to specify the datasource in your ejb descriptors. It is just a way to avoid hardcoding the datasource's JNDI name in your code. If all of your EJBs use the same datasource and there is no immediate need to use separate datasource that I would put the JNDI name directly in code. Create a helper class for retrieving the connection and have it coded there in one place. I have created a class to this in my projects.
Here is a simple class for this purpose. It uses another class to get an initial context went is not shown:

Usage looks like this:

The thing that I like is that I now have strong compile-time checking on my connection pool usage. If you use the DD and you make a typo in 1 of your 10 ejbs, then you won't know until the first time you access that bean. This way you have one central place to change all your connection pool configuration and if it works for one, it will work for all.
The other benefit is that if you want to know where a connection pool is being used, comment out one line and let the compiler find all the dangling references.
Of course, this means that a change in configuration means a change in code... but I can live with that. If it turns out to be a bad idea in the future than I will just refactor it out!

Imports, comments, and additional code has been left out to protect the innoccent.
Chris Mathews
Ranch Hand

Joined: Jul 18, 2001
Posts: 2712
Of course this doesn't work with CMP. In that case you have to specify the datasource in your deployment descriptor.
peter brews
Ranch Hand

Joined: Jan 25, 2002
Posts: 59
Thank you very much.
If you don't mind could you please advise
what is the diffrence between Txdatasource and datasource.

I have diffrent databases on diffrent machines. All i need to do is to pass the url,sid etc
for each of the machine/database and get the data.
for ex>
one is
url :jdbc racle:thin:@mydevelopmentmc:1521 EMO
user: abc
password:abc
my another url is
url :jdbc racle:thin:@mytestmc:1521:TEST
user: abctest
password:abctest
I am planning to create two connection pools one for each
also two corresponding data sources.
Is there any better solution.please advise
Thanks again
smita
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: DataSource in ejb-jar.xml
 
Similar Threads
using connection pool in EJb
Problem deploying ejbs in weblogic
unable to laod a class specifeid in ejb-jar.xml
Problem with CMT on Stateless Session beans
ejb deployment on weblogic 6.0