如果bmp的话,程序里用DataSource的jndi逻辑名,在ejb-jar.xml里配 jndi物理名。
如果cmp,找container的帮助。
EJB中如何设置Datasourse ?
一
实体bean,不管是BMP还是CMP都可以使用本地的JNDI来连接,
以JB和weblogic为例。
具体如下:
1 配置容器的DataSource,weblogic里面需要添加pool和TXDataSource
与数据库的连接以及驱动在pool中配置。
2 在CMP实体bean中通过配置data-source-name为对应的JNDI名(一般是系统生成的)
3 对于BMP的bean,在一个jar中需要有一个bean定义JNDI名的本地引用,来与容器的对应
bean的Resource References中添加相应的内容即可。
我是这样配置的:本地Name为jdbc/dsProvider (这个说法很容易混淆,weblogic中的物理JNDI名是在weblogic-ejb-jar.xml中设置的,而你的例子中“java://comp/jdbc/dsProvider之类的是逻辑名,需要映射为物理名这些都是由ejb-jar.xml和weblogic-ejb-jar.xml两个部署描述符指定的,而Entity Bean的RDBMS的映射则在weblogic-cmp-rdbms-jar.xml中指明)
Type为javax.sql.DataSource
采用容器管理
Deployment Settings for jdbc/dsProvider为weblogic的datasource
的JNDI名。
在程序中通过查找对应的本地的JNDI
dsProvider = (DataSource) context.lookup("java:comp/env/jdbc/dsProvider");
便可以获得weblogic中对应的DataSource,conncection便可以
通过conn = dsProvider.getConnection();获得。
这样CMP和BMP的连接配置都只需在pool中维护即可。
我是这么配置的,不知道是否说的正确。
二
依据EntityBean的性质而定。
如果是BMP的话就需要编码实现与数据库的连接,并实现存储和加载数据。
这和一般通过jdbc操作数据没有太大区别。
如果是CMP,可以通过配置文件实现EntityBean中数据的存储和加载,程序员不用
去关心数据库的实现。就是需要在部署人员指定连接的数据库。然而现在的数据源设置
多和ejb container相关。并没有在规范中指定数据源。
所以如果你使用cmp就需要知道你使用的ejb container和数据库了。