`
jff
  • 浏览: 94530 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

EJB client调用EJB3

阅读更多

http://hi.baidu.com/yecell/blog/item/5d9169037516d7ea08fa9386.html
当你的EJB3是deploy to jboss的情况下,ejb client调用EJB3分两种情况:
1) 发布在jboss的web app作为client来调用EJB
EJB和调用EJB的WEB 应用都发布在Jboss 集成环境下。在Jboss下发布WEB 应用,需要把WEB 应用打包成war 文件。另外在此环境下调用EJB 不需要把EJB 的接口类放入/WEB-INF/classes/目录中,否则在调用Stateful Bean 就会发生类型冲突,引发下面的例外

java.lang.ClassCastException: $Proxy84
org.apache.jsp.StatefulBeanTest_jsp._jspService(org.apache.jsp.StatefulBeanTest_jsp:55)

如果EJB和调用EJB的WEB 应用都发布在Jboss 集成环境下,那么EJB的Local或Remote接口都可以被调用
发布在Jboss 下的客户端不需要明确设置JNDI 访问的上下文环境,可以直接通过


查看复制到剪切板打印
InitialContext ctx = new InitialContext() 
InitialContext ctx = new InitialContext()

获得上下文环境,容器会自动赋给InitialContext 正确的环境,例如:


查看复制到剪切板打印
InitialContext ctx = new InitialContext();//客户端和jboss运行在同一个jvm,不需要传入props   
HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote"); 
InitialContext ctx = new InitialContext();//客户端和jboss运行在同一个jvm,不需要传入props
HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");

如果硬给InitialContext 设置了访问属性,反而会带来不可移植的问题,因为你的应用有可能部署在weblogic 等应用服务器。(本教程考虑到部分同学可能需要在独立的J2se 中调用EJB,为了教学的方便,把访问属性都设上了,这样不管在jboss、j2se 或独立tomcat,都能获得正确的InitialContext)

2) 在单独的Tomcat或J2SE(如junit test)中调用EJB
在正式的生产环境下,大部分调用EJB 的客户端可能是单独的Tomcat 或Resin。下面介绍如何在单独的Tomcat服务器中调用EJB。在单独的Tomcat 服务器中调用EJB 需要有以下步骤:
A) 把调用EJB 所依赖的Jar 包拷贝到tomcat 下的/shared/lib 目录或WEB 应用的WEB-INF/lib下,所依赖的Jar在jboss 安装目录的client目录下。你可以在eclipse里设置一个自定义的library “ejb3 library”,把这些jars都添加到该library里,然后在你的EJB project里把“ejb3 library” add to classpath
B) 把EJB 接口拷贝到应用的/WEB-INF/classes/目录下
C) 客户端访问EJB 时必须明确设置InitialContext 环境属性,代码如下:


查看复制到剪切板打印
Properties props = new Properties();   
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");   
props.setProperty("java.naming.provider.url", "localhost:1099");   
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");   
InitialContext ctx = new InitialContext(props);//客户端和jboss运行在同一个jvm,不需要传入props   
HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote"); 
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "localhost:1099");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
InitialContext ctx = new InitialContext(props);//客户端和jboss运行在同一个jvm,不需要传入props
HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");

Tip: 除了上面通过硬编码设置环境属性的方式外,还可以在应用的classpath 下放置一个jndi.properties 文件
注意:在单独的tomcat和J2SE里不能调用EJB 的Local 接口,因为他与JBOSS 不在同一个VM 中。J2se中调用EJB3 同样需要把上述jar 及EJB 接口放置在应用的类路径下。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lcj8/archive/2008/10/29/3173598.aspx

分享到:
评论

相关推荐

    EJB client调用EJB3 .doc

    本文将详细探讨EJB3客户端调用EJB的两种情况。 1. **在JBoss集成环境下调用EJB** 当EJB3应用部署在JBoss服务器上,且调用者也在同一个环境中时,调用EJB相对简单。在这种情况下,Web应用可以作为客户端直接调用...

    EJB分布式远程调用的小例子的简单实现

    本示例将探讨如何实现EJB的分布式远程调用,这是一种让不同网络节点上的软件组件能够相互通信的技术。 在Java EE中,EJB允许开发者创建业务逻辑组件,这些组件可以被其他应用或服务远程调用。EJB分为三种类型:会话...

    EJB_Client.rar_ejb

    标题中的"EJB_Client.rar_ejb"暗示了这是一个关于EJB客户端的示例项目,它可能包含了调用EJB实例所需的配置和代码。EJB客户端是与EJB服务器通信的应用程序部分,用于发起请求并接收响应。 **EJB组件类型** EJB技术...

    CORBA Client/Server调用EJB开发说明,带有例子学习

    总结来说,这个教程提供了使用C++通过CORBA调用EJB的详细步骤,包括生成IDL文件、创建C++ Stub、初始化ORB、解析和调用EJB方法。理解这个过程对于开发者来说是至关重要的,因为它涉及到多个中间件技术的集成,包括...

    远程调用EJB方法

    ### 远程调用EJB方法详解 #### 一、引言 企业JavaBeans (EJB) 是一种基于Java的应用程序开发模型,主要用于构建大型分布式应用程序。EJB提供了丰富的服务来支持事务处理、安全性和并发控制等关键业务逻辑。EJB组件...

    各种EJB之间的调用示例

    - `Client.java`: 客户端代码,通过JNDI查找并调用EJB。 ```java import javax.naming.InitialContext; import javax.naming.NamingException; public class Client { public static void main(String[] args) { ...

    EJB例子包含client以及jndi配置

    `EjbTest.jar`很可能是这个例子中的客户端代码,包含了调用EJB Bean的方法。客户端通常通过JNDI查找服务,然后创建并使用Bean的代理来执行业务操作。 **JNDI配置** 是EJB客户端与服务器端通信的关键步骤。在EJB应用...

    EJB_TEST自己编写的EJB例子

    客户端通过JNDI(Java Naming and Directory Interface)查找并调用EJB。而`EJB_Romte.zip`可能包含了远程接口和实现,这是EJB允许远程访问的关键。EJB组件通常被打包成JAR文件,并在应用服务器(如JBOSS、WebLogic...

    EJB集群EJB集群资料

    在这个例子中,JBOSS 4.0.5 GA被安装在两个不同的IP地址(192.168.1.88和192.168.1.99)上,并且在安装时选择了ejb3-clustered配置。在高级设置中,名称设置为all,以启用集群功能。启动JBOSS服务器时,需要指定 `-c...

    ejb3课堂笔记,适合初学者

    - 通过远程或本地接口调用EJB。 - **EJB3.0 编程模型**: - **注解的广泛使用**: 例如`@Stateless`、`@Stateful`、`@Singleton`等注解用于定义EJB类型。 - **生命周期管理**: 容器管理EJB实例的创建、销毁等生命...

    使用eclipse通过jboss开发简单的ejb应用(jboss7.x & ejb3.x)

    在本文中,我们将深入探讨如何使用Eclipse IDE与JBoss应用程序服务器(版本7.x)来开发和部署一个基于EJB 3.x的简单企业级Java应用程序。EJB(Enterprise JavaBeans)是Java平台上的核心组件,它提供了一种标准的...

    在PowerBuilder中呼叫EJB元件-以mail EJB為例

    标题和描述中提及的知识点主要集中在如何在PowerBuilder环境中调用EJB(Enterprise Java Beans)组件,特别地,以一个邮件服务EJB作为实例进行说明。以下是根据标题、描述、标签以及部分内容详细展开的知识点: ###...

    Eclipse开发EJB_3.0

    在本例中,我们创建了一个名为 TestClient 的客户端,该客户端使用 JNDI 查找 EJB,并调用 SayHello 方法。 EJB 3.0 中的 JNDI 查找 在 EJB 3.0 中,JNDI 查找 EJB 通过 EJB 中的 Bean 的名称中的 Remote 注释所...

    Jboss下开发ejb应用之一会话bean的应用

    通过对ejbclient的源码研究,可以了解客户端如何查找和调用EJB,以及如何处理异常和连接管理。 7. **工具支持**: - Maven或Gradle可以用来管理和构建EJB项目,确保依赖项的正确引入。 - IDE中的EJB插件提供代码...

    EJB计算个人所得税

    4. 导航到JBOSS安装目录下的“lib”文件夹,选择所有必要的jar包,通常包括ejb3-persistence.jar、jboss-all-client.jar等。 5. 确认添加完成后,点击“Apply”和“OK”。 完成上述配置后,EJB组件可以在MyEclipse...

    EJB API中文版

    5. **客户端(Client)**:EJB客户端可以是Servlet、JSP页面、应用程序或其他Bean。客户端通过JNDI查找EJB Home接口,进而创建或查找EJB实例,最终使用EJB实例完成具体的业务操作。 #### 三、EJB组件类型 EJB组件...

    eclipse-ejb项目.zip

    "ejb-project1-client"可能是客户端模块,包含了远程接口的引用和调用EJB服务所需的配置。在Java EE环境中,客户端可以通过JNDI(Java Naming and Directory Interface)查找并调用远程的EJB服务。 "ejb-project1-...

    ejb代码实例

    "ejb_01_client"则可能是客户端代码,它连接到JBoss服务器,查找并调用EJB提供的服务。 EJB的设计模式强调了组件化和解耦,使得开发者可以专注于业务逻辑,而将基础设施如事务管理、安全性、并发控制等交给容器处理...

    EJB3.0实例教程服务器为JBOSS

    2. **编写客户端**: 编写 Java 客户端代码,使用 JNDI 查找并调用远程 EJB。 ##### 2.4 发布在 JBoss 集成环境中的 Web 应用调用 EJB 1. **创建 Web 应用**: 使用 IDE 创建一个新的 Web 应用项目。 2. **配置上...

Global site tag (gtag.js) - Google Analytics