问题一大堆,请逐一回答,关于DATASOURCE,JNDI……

04-01-12 henry.t

我用的是WEBLOGIC8.1 用JBUILDERX写代码编译。现在有一些关于DATASOURCE得问题问大家,我整理在下面,请大家回答每一个问题。~~~~~

为了学习,我写了一个CMP,有写了一个同样功能的BMP

大家知道,在一开始写的时候,JBUILDERX要求你新建一个DATASOURCE,并填表完成它的配置,内容是关于使用的数据库的DRIVER的信息,密码,用户,数据库名称,URL……

配置完了我就开始写EJB代码了。我发现在写CMP的时候,并没有显式的用到这个DATASOURCE,当然,我知道数据库访问代码由WEBLOGIC生成,那么我的第一个问题:

1 这些生成的代码是不是一定是通过先查找这个我配置的DATASOURCE,然后通过它来连接数据库的???如果不是,怎么样使EJB通过这个我的DATASOURCE连接数据库???

我看过了MASTER EJB2.0这本书,书上的BMP例子中,专门写了一个叫GETCONNECTION()的方法,来查找一个指定的DATASOURCE,然后通过它返回一个CONNECTION来供其他方法比如EJBCREATE()等调用,很方便,所以我也照着做,但是,我只知道这个DATASOURCE的JNDI名字,不知道它在JNDI的地方阿。

比如,书上的例子是这样查找的:ctx.lookup("java:comp/env/jdbc/ejbpool");(ejbpool是DATASOURCE名字)。

我不知道这前面一大堆啊

我的第二个问题:

2 要知道,我在WEBLOGIC里面部署DATASOURCE的时候,只定义了名字,没有定义它在JNDI中的路径,怎么知道这前面的具体路径??我可以明确定义DATASOURCE在JNDI里面的路径吗??如果可以怎么定义????

第三个问题:

3 无论是数据源还是EJBHOME,在客户端通过JNDI查找的时候,我发现有两种(网上的例子)

1) ctx.lookup("java:comp/env/jdbc/ejbpool");

2) ctx.lookup("ejbpool");

也就是说,一个是把路径和名字都写全,一个是只写名字。

请问,第二种可行吗???????他们的区别???有什么条件???????

第四个问题:

4 我找不到在用JBUILDERX写EJB之前,定义的那个DATASOURCE的意义(在JBUILDERX里面定义的那个),按理说,既然在WEBLOGIC里面都定义了,只要你在代码里面引用就可以了啊?????????我到已经成功编译的CMP里面看了一下部署描述文件,发现

EJB-JAR.XML这个每个EJB都必须有的文件中,没有关于DATASOURCE的描述,反而是在包容器关联的XML里面看到了这个DATASOURCE的所有信息,DRIVER 密码,用户,URL……是不是我在前面的定义就体现在这里???必须吗?????

第五个问题:

5 在MASTER EJB2.0里面的这个BMP的例子中,在EJB-JAR.XML里面有如下关于DATASOURCE的描述:

<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是呢称,避免和已经存在同名的数据源混淆,请简单解释一下你们对上面描述的看法,不知道就算了,关键是,这堆东西的存在与否,影不影响我引用数据源?如果没有(就像我自己那个CMP,在EJB-JAR.XML里面就没有找到),那会有什么影响????????顺便问一下,你们在使用JBUILDER的时候,会不会有时候必须到部署文件里面去,手动的改动或者添加某些属性?????我个人觉得不应该,因为JBUILDER应该为我们全权生成这些文件的,可是问题是,上面的一大堆引用我就找不到,那岂不是非要我手动添加????????

第六个问题:

6 我在写BMP的时候,前面照样定义了一个DATASOURCE,1)这个定义是不是在写EJB之前必须???我不定义呢??(我是说在用JBUILDERX时,在JBUILDERX里面定义的那个)

BMP里面有一个方法,正如最开头我说的那个GETCONNECTION(),那么如果我在里面查找的DATASOURCE不是我定义的那一个呢》????会不会有问题??????

好,就问这一些了,问了一大堆,不好意思,有点头大,不过还请高手们耐心解决,一个问号一个问号的回答,谢大家了!!!!!!!!!!

henry.t
2004-01-15 03:06

哈~~咯~~~~?????哈~~咯~~~~?????

sprsong
2004-01-15 19:28

lookup的时候

在weblogic里直接写名字就可以了

在Tomcat里要加上java:comp/

henry.t
2004-01-15 19:49

但是,网上很多人说:本地调用用LOOKUP("BEAN名字"),

远程调用用LOOKUP("JAVA:COMP/ENV/BEAN名字")

怎么大家说得都不一致?还有人说得,都一样,没有区别???到底那个才对?

sprsong
2004-01-15 19:58

我说的都是本地调用的情况。

2Go 1 2 下一页