在基于J2EE的规范各个J2EE APPLICATION SERVER中,对于EJB容器的实现原理都一样,在EJB容器提供的对服务端的EJB应用的访问提供几种不同的访问方式:可以通过WEB应用访问、胖客户端、APPCLIENT访问,下面以胖客户端访问方式来简单的说明在调用服务端的 EJB应用底层SOCKET大体实现原理:
1、构造一个简单的EJB应用,下面的简单EJB应用用EJB3.0规范实现:
@Remote
public Interface Ejb3Interface{
public String invokeEjb();
}
@Stateless
public class Ejb3InterfaceImpl implements Interface{
public String invokeEjb(){
return "Successful" ;
}
}
2、客户端lookUp:
InitialContext ic = new InitialContext();
Ejb3Interfacefoo remote = (Ejb3Interface)ic.lookup("com.test.Ejb3Interface");
String returnString = remote.invokeEjb();
上面简单的写了下EJB和EJB客户端调用方式,其中lookup里面和服务端怎么返回实际上APPLICATION SERVER已经全部封装好,对客户完全是透明的。下面简单写下这个底层socket过程。
package com.test;
public interface EjbTheory {
public String returnEjbTest();
}
package com.test;
public class EjbThroeyImpl implements EjbTheory{
private String ejbThreoyString;
public EjbThroeyImpl(String ejbString){
ejbThreoyString = ejbString;
}
public String getEjbThreoyString() {
return ejbThreoyString;
}
public void setEjbThreoyString(String ejbThreoyString) {
this.ejbThreoyString = ejbThreoyString;
}
public String returnEjbTest(){
return ejbThreoyString;
}
}
package com.test;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class EjbTheoryStub implements EjbTheory{
private static final String IP_ADDRESS = "localhost";
private static final int IP_PORT = 8888;
Socket socket;
public EjbTheoryStub(){
try {
socket = new Socket("127.0.0.1", IP_PORT);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String returnEjbTest(){
ObjectOutputStream outputStream = null;
ObjectInputStream inputStream = null;
String returnString = null;
try {
outputStream = new ObjectOutputStream(socket.getOutputStream());
outputStream.writeObject("returnEjbTest");
outputStream.flush();
inputStream = new ObjectInputStream(socket.getInputStream());
returnString = (String)inputStream.readObject();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return returnString;
}
}
package com.test;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class EjbTheorySkeleton implements Runnable{
private static final int PORT = 8888;
private EjbThroeyImpl ejbThroeyImpl;
private ServerSocket serverSocket ;
private Socket socket ;
public EjbTheorySkeleton(EjbThroeyImpl ejbThroeyImpl){
this.ejbThroeyImpl = ejbThroeyImpl;
try {
serverSocket = new ServerSocket(PORT);
System.out.println("Server Waiting" );
socket = serverSocket.accept();
System.out.println("Server Accept");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void run(){
SkeletonConfirm();
}
private void SkeletonConfirm(){
ObjectInputStream objectInputStream = null;
ObjectOutputStream objectOutputStream = null;
try{
objectInputStream = new ObjectInputStream(socket.getInputStream());
System.out.println("Socket = " +socket);
String confirmMethod = (String)objectInputStream.readObject();
System.out.println("confirmMethod = " +confirmMethod);
if(confirmMethod.equals("returnEjbTest")){
String string = ejbThroeyImpl.returnEjbTest();
System.out.println("Receive From Client And Return is :" + string);
objectOutputStream = new ObjectOutputStream(socket.getOutputStream());
objectOutputStream.writeObject(string);
objectOutputStream.flush();
}
}catch (Exception e) {
// TODO: handle exception
}
}
public static void main(String args[]){
EjbThroeyImpl ejbThroey = new EjbThroeyImpl("Hello World");
new Thread(new EjbTheorySkeleton(ejbThroey)).start();
}
}
package com.test;
public class EjbTheoryTestClient {
public static void main(String args[]){
EjbTheory ejbTheory = new EjbTheoryStub();
String getString = ejbTheory.returnEjbTest();
System.out.println(getString);
}
}
未完,写的不详细 注释什么都还没有写,下次补上,写的比较简单,一看就会明白,欢迎指教哦
分享到:
相关推荐
### EJB原理图详解 #### 一、EJB工作原理概览 EJB(Enterprise JavaBeans)是Java EE平台中的一个重要组成部分,它主要用于构建企业级应用。EJB提供了一种面向服务的方式,允许开发者专注于业务逻辑,而将复杂的...
* 配置 EJB 的环境变量和依赖关系。 七、EJB 的安全性 EJB 的安全性包括: * 身份验证:确保用户身份的合法性。 * 授权:控制用户对 EJB 的访问权限。 * 加密:保护 EJB 的数据传输安全。 八、EJB 的best ...
在这个“第一个EJB简单例子”中,我们将深入探讨如何创建和理解基本的EJB组件。 1. **EJB组件类型**: - **会话Bean(Session Beans)**:代表客户端的一次交互或会话。它们可以是状态ful(维护会话状态)或状态...
EJB(Enterprise JavaBeans)是Java EE(Enterprise Edition)平台中的一个核心组件模型,它为开发者提供了一种标准的方式来创建可复用的、模块化的、跨平台的企业级服务器端应用程序。EJB的设计目标是为了简化...
本文将深入探讨EJB的工作原理,并通过一个简单的示例帮助读者更好地理解。 #### EJB的基本概念 EJB主要分为三类:会话Bean(Session Bean)、实体Bean(Entity Bean)以及消息驱动Bean(Message-Driven Bean)。...
### EJB工作原理详解 #### 一、EJB概述与工作流程 EJB(Enterprise JavaBeans)是Java EE平台的核心组件之一,专为构建大型分布式企业级应用而设计。它提供了一种在服务器端实现业务逻辑的方式,允许开发者将业务...
6. **EJB 3.0及其后续版本**:自EJB 3.0以来,EJB的使用变得更加简单和轻量级,引入了注解来减少XML配置,并且可以与其他Java Persistence API(JPA)和JSF(JavaServer Faces)等技术更好地集成。 7. **依赖注入...
EJB(Enterprise JavaBeans)3.0是Java EE(Enterprise Edition)平台中的一部分,它提供了一种用于构建可部署在服务器端的企业级应用程序的框架。EJB 3.0引入了许多改进,使得开发过程更加简洁,降低了对XML配置的...
在EJB_TEST中,我们看到的是作者自编的一个EJB实例,这通常涉及到创建、部署以及运行EJB组件,以便展示其功能和工作原理。 **EJB的组成部分**: 1. **实体Bean (Entity Bean)**:代表业务数据,通常映射到数据库中...
开发者不再需要关注复杂的EJB接口和生命周期管理,而是通过注解和简单的配置文件即可完成实体类到数据库表的映射。 #### 三、部署描述符的变化 - **EJB 2.0**:要求显式定义部署描述符(Deployment Descriptors),...
**EJB调用原理分析** Enterprise JavaBeans(EJB)是Java EE平台中用于构建分布式企业级应用的重要组件。EJB提供了服务器端的组件模型,允许开发者将业务逻辑封装在可重用的组件中,这些组件可以透明地运行在Java...
**企业级JavaBeans(EJB)技术详解** 企业级JavaBeans(Enterprise JavaBeans,简称EJB)是Java平台上用于构建可扩展、安全且事务处理能力强的企业级应用的核心技术。EJB规范由Java Community Process(JCP)制定,...
依赖注入(Dependency Injection,简称DI)是软件设计模式中的一种,它强调将对象间的依赖关系交由外部容器管理,而非由对象自身负责。EJB3.0规范引入依赖注入,大大提高了代码的可测试性和可维护性。在EJB3.0中,...
EJB(Enterprise JavaBeans)是Java EE(Enterprise Java Platform)平台的一部分,主要用于构建分布式、事务处理、多客户端支持以及安全的后端企业级应用。EJB3.0是EJB规范的一个重要版本,它引入了许多简化开发的...
**ejb与Spring框架整合详解** ejb(Enterprise JavaBeans)是Java EE平台中的核心组件,主要用于构建可扩展的企业级应用程序。它提供了服务器端的组件模型,包括会话bean(Session Beans)、实体bean(Entity Beans...
### EJB工作原理详解 #### 一、EJB概述 企业级Java Beans(EJB)是一种服务器端的组件模型,用于开发和部署可重用的企业级组件。它是Java平台的一部分,专门为开发分布式网络应用而设计。EJB允许开发者将业务逻辑...
### 实战EJB知识点解析 #### 一、企业JavaBeans (EJB) 技术概览 **什么是企业JavaBeans技术?** 企业JavaBeans (EJB) 是Java平台上的服务器端组件模型,专为构建可扩展、可靠且跨平台的企业级应用程序而设计。...
**ejb-sample-wildfly: Wildfly 8.2.0 示例EJB应用程序** 本项目是基于Wildfly 8.2.0的应用程序服务器上的一个EJB(Enterprise JavaBeans)示例应用。EJB是Java EE(Java Platform, Enterprise Edition)的一部分,...