学习EJB中遇到了几个很困惑我的问题,诚心向高手请教!

kenees 2003-10-12 08:51:03
我在学习EJB中遇见了几个问题不太清楚,请大家帮我解释解释好吗,先谢谢了
1,在编写BMP的一个简单例子中,在ejb-jar.xml文件中有这样一段描述
<resource-ref>
<res-ref-name>jdbc/ejbPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
这里面有些问题我想请教一下,<res-ref-name>jdbc/ejbPool</res-refname> 这个元素设置了JDBC Driver并且使它在可用的合适的位置,我不太明白是否只是一个这样的描述便可以是便可以找到JDBC Driver?还需要作以别的什么工作吗,比如说指定你所需要的具体的JDBC驱动程序,因为在<res-ref-name>这个元素中,我实在看不出有什么东西可以明确地去指定你所需要的JDBC驱动程序!

2, 如果我只是为了测试简单地建立了一个MS Access数据库,具体应该怎样在ejb-jar.xml文件中获得JDBC驱动程序呢?比如说,我以前是这样调用我的数据库的,在数据源里面先注册我的数据库,然后通过Class.forName(JDBC驱动程序),可是现在在EJB里面我是否还需要先在数据源注册驱动程序呢?

3,请问weblogic-ejb-jar.xml文件,中的
<reference-descriptor>
<resource-description>
<res-ref-name>jdbc/ejbPool</res-ref-name>
<jndi-name>ejbPool</jndi-name>
</resource-description>
</reference-descriptor>
这个元素是为了帮助Weblogic定位JDBC Driver的吗?具体是怎样实施的呢?

我的问题有些低级,不过这些已经困惑了我一天了,还是希望高手能够给我指点指点,谢谢!!!!
...全文
12 点赞 收藏 17
写回复
17 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
kenees 2003-10-13
"楼主是不是没学JSP,直接就上EJB了?"
JSP我大致看了些,因为看到里面有很多地方要用到EJB所以就赶着看EJB了,刚才我看了EJB的specification现在对EJB又有了些了解

谢谢 chjoke(cherish)和wangchq(阿宝) 的解释,我现在有了些了解了,一会再去看看Weblogic的DOC,希望能弄明白
回复
kenees 2003-10-13
我是按以下步骤来连接一个用Microsoft Access建立的数据库DBAccount的:
1,在控制面板里面的数据源注册一个名为Account的数据源,驱动程序为Microsoft Access Driver(*.mdb),这个数据源是连接到数据库DBAccount的
2,启动WebLogic,在左边的控制面板选择Services->JDBC->DataSource Factories,然后选择Configur a new data source factory
3,在Configuration里面我是这样填写的
Name:DS(我随便添写了一个)
User Name: 数据库使用者用户名
Password:Password
URL:jdbc:odbc:Account
Driver Class Name:sun.jdbc.odbc.JdbcOdbcDriver
Factory Name:jdbc/ejbPool(我在ejb-jar.xml里面这样写的
<resource-ref>
<res-ref-name>jdbc/ejbPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>)
Properties:没添(我实在不知道这是什么意思,请高手指点)

以上就是我的做法,请帮我执正错误,因为在运行客户端程序examples.AccountClient时,有如下异常:
examples.AccountException: javax.naming.LinkException: [Root exception is javax
.naming.NameNotFoundException: Unable to resolve 'ejbPool' Resolved ; remaining
name 'ejbPool']; Link Remaining Name: 'ejbPool'

我实在是没办法了

回复
naxin 2003-10-13


http://www.cjsdn.com/post/view?bid=2&id=53912&sty=1&tpg=1&age=0
回复
kenees 2003-10-13
我使用的是weblogic8.1麻烦各位高手帮我解释一下出现在Data Source Factories -> Configure a new JDBC Data Source Factory... 中出现的选项的填写方法
第一项是Name: (注释:The name of this JDBC data source factory)

第四项是URL: (注释:The URL of the database to connect to. The format of the URL varies by JDBC driver.在我的这个例子里面我试着添成jdbc:odbc:Account)

第五项是Driver Class Name: (注释:The full package name of JDBC driver class used to create the physical database connections in the connection pool. 在我的这个例子里面我试着添成sun.jdbc.odbc.JdbcOdbcDriver)


第六项也是我最糊涂的一项Factory Name: (注释为:The name used in deployment descriptor files to reference this JDBC data source factory.谁能告诉我它和第一项
Name:的区分呀,我都快晕了)

最后一项:Properties: (注释为:The list of properties passed to the JDBC driver that are used to create physical database connections. For example: server=dbserver1. List each property=value pair on a separate line. 这一项我实在不知道是什么意思,因为我觉得该添的东西应该已经都添过了,高手帮我指点指点好吗)

我的ejb-jar.xml关于数据库是这样引用的
<resource-ref>
<res-ref-name>jdbc/ejbPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
代码中是这样引用的
Context ctx = new InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup("java:comp/env/jdbc/ejbPool");
return ds.getConnection();

写得有点多,如果分不够的话,还可以再加,只要解决问题,你开口。
谢谢!!!!
回复
kenees 2003-10-13
naxin兄,你能简单告诉我JDBC的驱动放在哪里吗?
回复
naxin 2003-10-13
我的意思是说,如学了JSP,就会理解JDBC驱动放在哪的问题.

回复
RobertDeNiro 2003-10-13
是bmp
ejb-jar.xml
<resource-ref>
<res-ref-name>jdbc/DS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
weblogic-ejb-jar.xml
<reference-descriptor>
<resource-description>
<res-ref-name>jdbc/DS</res-ref-name>
<jndi-name>DS</jndi-name>
</resource-description>
</reference-descriptor>
回复
kenees 2003-10-13
请问 RobertDeNiro()兄,这个文件weblogic-cmp-rdbms-jar.xml,是要自己在创建一个吗?我的META-INF里面只有ejb-jar.xml和weblogic-ejb-jar.xml这两个文件呀
回复
RobertDeNiro 2003-10-13
在weblogic-cmp-rdbms-jar.xml中加入
<data-source-name>DS</data-source-name>
回复
RobertDeNiro 2003-10-13
jdbc/ejbPool 应该是 数据源的jndi名称 也就是 DS
回复
naxin 2003-10-13
建议如用 jb + weblogic开发,一定要先看看人家自带的帮助,才有收获.

:-O

回复
naxin 2003-10-13
我为了省事都是扔到JAVA_HOME/jre/lib/ext目录中,这样可以不用特别地指出类路径.
或是bea/jdk/jre/lib/ext.

看来楼主看的是<<精通EJB 2>>,那些XML文件只是配置数据源,我觉得书中讲得很详细啊,书中附录中有关于jndi知识点的介绍.

weblogic中,在console窗口中,1)配置一个pool,2)再配置一个数据源.就OK了.

你的程序找数据源,就是通过xml文件中的内容.
回复
wangchq 2003-10-12
<resource-ref>
<res-ref-name>jdbc/ejbPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
以上这一点描述,是告诉ejb的发布程序,这个ejb需要引用一个外部的对象,这个对象的类型是javax.sql.DataSource,这个对象由容器提供(Container),引用的名称为jdbc/ejbPool。而具体的这个对象的其他信息,比如jdbc的驱动信息等,是依据不同的ejb容器(例如weblogic, websphere, jboss等)在各自的服务器中定义的数据源对象,不同的服务器有不同的配置方法,具体参看服务器的使用手册。
回复
JavaNight 2003-10-12
up
回复
chjoke 2003-10-12
我也感到你的问题的严重性了。
对于“<res-ref-name>jdbc/ejbPool</res-refname> 这个元素设置了JDBC Driver并且使它在可用的合适的位置,我不太明白是否只是一个这样的描述便可以是便可以找到JDBC Driver?还需要作以别的什么工作吗?”
如果你用的是weblogic 的话,那么你肯定要首先要在weblogic中建立这个数据源(在管理控制台里有),并且将这个数据源的jndi名设为jdbc/ejbPool。
回复
naxin 2003-10-12
楼主是不是没学JSP,直接就上EJB了?
回复
kenees 2003-10-12
急呀~~~
回复
相关推荐
发帖
Java EE
创建于2007-09-28

6.6w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
帖子事件
创建了帖子
2003-10-12 08:51
社区公告
暂无公告