-1

查找如何:

Context envContext = (Context)initContext.lookup("java:comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/MyDatasource");

继续 ?

我的意思是说如何搜索名称 MyDataSource以及最终返回什么?

添加了两个条目以连接到数据库。其中之一WEB-INF/web.xml是:

<resource-ref>
<description>my connection</description>
<res-ref-name>jdbc/MyDatasource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>

另一个添加在META-INF/context.xml其中的是:

<Resource name="jdbc/MyDatasource" auth="Container" type="javax.sql.DataSource"
 driverClassName="org.apache.derby.jdbc.ClientDriver"
 url="jdbc:derby://localhost:1527/My Database;create=true"
 username="me" password="me"
 maxActive="20" maxIdle="10" maxWait="-1" />

这两个条目如何帮助查找?

首先看什么:web.xmlcontext.xml

请在查找中解释整个过程。

4

2 回答 2

1

资源按以下优先顺序排列:(通过web.xml元素<resource-ref>,,context.xmlserver.xml通过<GlobalNamingResources>)。请注意,在您定义的资源<Context>实际上并不需要<resource-ref>在您的web.xml. .org/tomcat-7.0-doc/jndi-resources-howto.html

于 2012-07-22T13:47:27.750 回答
0

以下是进行查找的步骤:
第 1 步:

 Context context = new InitialContext(): 

初始上下文是对 JNDI 查找服务的引用。它就像 JNDI 虚拟目录树的入口。

第2步:

Object o = context.lookup("mejb"): 

在查找中,我们需要给出部署在服务器中的任何 bean 的名称,以获取对该 bean 的 home 接口的引用。然后我们获取 java.lang.Object 类型的对象,我们需要强制转换它对我们进行查找的任何 bean 的 Home 接口的对象。

第 3 步:

Home home = (Home) PortableRemoteObject.narrow(o,Home.class):

我们实际上需要将对象转换为我们认为它是类型的类型。然而,由于这是基于 IIOP 的 RMI,我们似乎需要使用 PortableRemoteObject.narrow 方法,这似乎将对象类型过滤为实际对象类型并检查错误。

于 2012-07-19T04:47:31.463 回答