中间件
Application Server
最初撰稿时间:2004 年 11 月 1 日
最后更新时间:2006 年 1 月 16 日
作者:Frances Zhao
该演示将向您介绍两种在 J2EE 应用程序客户端中创建初始上下文的方法,以及在 OC4J 中的基本 JNDI 查找:
当应用程序客户端必须查找在 J2EE 服务器应用程序中可用的资源时,客户端将使用 com.evermind.server 程序包中的 ApplicationClientInitialContextFactory 来构造初始上下文。
ApplicationClientInitialContextFactory 将需要一些环境属性。这些属性可在客户代码中或 jndi.properties 文件中进行指定,后者是应用程序的 JAR 文件(包含在 EAR 文件中)的一部分。
本演示要求安装并正确配置以下软件组件:
就本方法文档而言,创建了一个要从应用程序客户端查找的简单会话 Bean。该会话 Bean 将实施一个非常简单的堆栈,以提供 3 个外部操作:将堆栈内容作为字符串进行推入、弹出以及显示。实施只是围绕一个 java.util.Stack 对象展开。代码位于: %HOWTO_HOME%/src/ejb/bean 之下。
创建初始上下文的第一种方法是使用参数化构造函数 InitialContext(Hashtable)。在本方法文档的客户端代码中,我们使用了:
Hashtable env = new Hashtable();
env.put("java.naming.factory.initial",
"com.evermind.server.ApplicationClientInitialContextFactory");
env.put("java.naming.provider.url","ormi://localhost/jndidemo");
env.put("java.naming.security.principal","SCOTT");
env.put("java.naming.security.credentials","TIGER");
Context initial = new InitialContext(env);
或者,可以根据名为“jndi.properties”的文件创建初始上下文,该文件与 J2EE 应用程序的 EAR 文件捆绑在一起。对于本方法文档,该文件如下所示:
java.naming.factory.initial=com.evermind.server.ApplicationClientInitialContextFactory
java.naming.provider.url=ormi://localhost/jndidemo
java.naming.security.principal=SCOTT
java.naming.security.credentials=TIGER
注意:对于这两种创建初始上下文的方法,如果您打算在 OracleAS 环境内运行该方法文档(而不是使用独立的 OC4J),则需要将“java.naming.provider.url”修改为使用“opmn:ormi:”协议前缀,而不仅仅是“ormi:”。应对 jndi.properties 和 DemoClient.java 均进行修改。这样,客户端无需硬编码 ORMI 端口信息(默认为 23791)即可尝试进行查找。OC4J JNDI 将联系 OPMN 进程以确定用于 OracleAS 环境的正确的 ORMI 端口。例如,使用“java.naming.provider.url=opmn:ormi://hostname/jndidemo”而非“java.naming.provider.url=ormi://hostname/jndidemo”。
创建了初始上下文后,您就可以查找类似如下所示的所需对象了。这是一个 EJB 主目录对象。查找名称在 application-client.xml 中进行指定,引用将从应用程序-本地上下文(即 java:comp/env)中检索。
Object homeObject =
context.lookup("java:comp/env/SimpleStackBean");
以下是定义了查找名称的 application-client.xml 部分:
<ejb-ref>
<ejb-ref-name>SimpleStackBean</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>jndidemo.SimpleStackHome</home>
<remote>jndidemo.SimpleStack</remote>
</ejb-ref>
在本方法文档中,我们针对该堆栈 Bean 使用了 JNDI 位置“jndidemo/SimpleStackBean”,如 orion-ejb-jar.xml 中定义的。因此,我们还需要一个 orion-application-client.xml 文件来定义从上述名称“SimpleStackBean”到这个真正 JNDI 位置的映射。如下所示:
<orion-application-client>
<ejb-ref-mapping name="SimpleStackBean" location="jndidemo/SimpleStackBean" />
</orion-application-client>
以下说明适用于在 Oracle Containers for J2EE 10g (10.1.3) 的独立实例上运行本演示。
请检查以确保 ant-oracle.properties 文件(位于该示例分发的根目录下)中的以下属性配置正确(注意:其中某些属性将是下述环境变量的默认值。如果您在环境中设置这些变量,可能不必改变文件中的值)。如果必要,则针对您的环境将这些变量修改为适当的值:
独立安装: %ORACLE_HOME%/bin/oc4j start
注意,该 oc4j 命令期望 JAVA_HOME 环境变量指向一个完整的 JDK 安装。
受 OracleAS 管理的安装: %ORACLE_HOME%/opmn/bin/opmnctl startall
在顶层 %HOWTO_HOME% 目录中,键入命令:
%HOWTO_HOME%/dist 目录中现在应具有新建的 servlet_demo.ear。
如果构建成功,此命令还将尝试部署此应用程序。它将首先测试 OC4J 是否正在运行。
还可以使用以下命令分别部署应用程序。确保定义了 %ORACLE_HOME% 环境变量。在顶层 %HOWTO_HOME% 目录中,键入命令:
build.xml 中还存在另一个目标,称为“run”。确保成功构建和部署了应用程序,在顶级 %HOWTO_HOME% 目录中,只需键入命令:
您应当能够看见 两个成功创建和查找的初始上下文,其后是作为输出的连续堆栈内容转储。
在本文档中,您学习了:
热门下载 | ||