【EJB学习笔记】——建立一个简单的EJB应用

简介:  这里创建一个简单的EJB应用,结构如下:

 这里创建一个简单的EJB应用,结构如下:


18.png


  EJB_DEMO项目类型为EJB Project,是需要部署到JBoss上的EJB应用。EJB_DEMO_CLIENT项目类型为普通的Java Project,是用来模仿调用EJB的远程客户端。

建立EJB项目—EJB_DEMO



  New—EJB Project


19.png


  核心代码:


  EJB接口FirstEjb.java

public interface FirstEjb {
  public String saySomething(String name);
}

  实现类FirstEjbBean.java


@Stateless
@Remote
public class FirstEjbBean implements FirstEjb {
  public String saySomething(String name) {
    return "恭喜您:"+name+",您的EJB应用创建成功了!";
  }
}


 这不就是个普通的 类吗?EJB就是JavaBean,只不过它是企业级的(JavaBeanEnterprise JavaBean),EJB分为三种Bean,即会话Bean(Session Bean)、实体Bean(Entity Bean)、消息驱动Bean(Message Driven Bean),会话Bean又分为有状态的会话Bean和无状态的会话Bean,这里不再多说,后面会一一介绍。


 这个Demo中,起键作用的就是类头那两个注解:@Stateless定义这个EJB是无状态的会话Bean;@Remote定义这个EJB所实现的接口是用来被远程调用的。


 至此,服务端的EJB应用就建立好了,跟部署普通的java web项目一样,可以把它部署到JBoss上了。



建立客户端—EJB_DEMO_CLIENT



 New—Java Project

20.png


 客户端既然调用EJB,肯定需要它的接口,所以EJB_DEMO_CLIENT需要引用由FirstEjb.java所打的jar包,为了开发简便,也可以直接让EJB_DEMO_CLIENT引用EJB_DEMO项目,如果客户端不是运行在EJB容器中(如JBoss),则需要引用JBoss下的相关jar包(如果用的服务器是JBoss5或JBoss6的话,则引用JBoss安装目录下client中的jar包),此外,客户端还必须引用jnp-client.jar。


 建立客户端测试类FirstEjbClient.java



public class FirstEjbClient {
  public static void main(String[] args) throws Exception {
    InitialContext ctx = new InitialContext();
    FirstEjb ejb = (FirstEjb)ctx.lookup("FirstEjbBean/remote");
    String s = ejb.saySomething("Danny");
    System.out.println(s);
  }
}


  InitialContext是javax.naming包下的一个类,可以看做是一个工厂或是Spring中的BeanFactory,用来实现JNDI,所以,客户端还需要一个配置文件jndi.properties,用来配置jndi的信息。

  jndi.properties

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost


  这时,一个简单的EJB应用+EJB客户端就完成了。在JBoss启动的情况下,运行一下客户端,是不是成功调用EJB并且输出信息了呢?


21.png



相关文章
|
Java 应用服务中间件
SpringBoot:修改上传文件大小的限制+tomcat
SpringBoot:修改上传文件大小的限制+tomcat
1092 1
|
SQL 分布式计算 DataWorks
通过DataWorks使用PyODPS
PyODPS为MaxCompute的Python版SDK,支持在DataWorks中开发运行PyODPS任务。本文为您介绍在DataWorks上使用PyODPS的使用限制、主要流程和部分简单应用示例
499 2
|
自然语言处理 分布式计算 算法
淘宝用户体验VOC标签体系
淘宝用户体验VOC标签体系
812 0
|
SQL 开发框架 JSON
honeycomb使用|学习笔记
快速学习honeycomb使用
881 0
honeycomb使用|学习笔记
|
7月前
|
缓存 Linux UED
Yum与Dnf软件包管理器使用指南
Yum是RedHat、CentOS等Linux发行版中广泛使用的软件包管理器,它为用户提供了便捷的软件包安装、更新、管理等功能。然而,随着技术的发展,Red Hat已经开始将其软件包管理逐渐转移到dnf上。Dnf是yum的增强版,不仅继承了yum的核心功能,还在性能、用户体验等方面进行了诸多优化。在使用上,dnf与yum非常相似,两者在命令层面基本相同,只是名字有所区别。本文将详细介绍yum和dnf的常用命令及其使用方法,帮助用户更好地管理和维护系统中的软件包。
329 3
|
传感器 机器学习/深度学习 人工智能
|
存储 SQL 安全
应用案例|开源 PolarDB-X 在互联网安全场景的应用实践
中盾集团采用PolarDB-X云原生分布式数据库开源版本,有效解决了大数据量处理、复杂查询以及历史数据维护等难题,实现了业务的高效扩展与优化。
|
9月前
|
人工智能 自然语言处理 搜索推荐
AI在教育中的潜力与挑战:开启智慧教育的新时代
AI在教育中的潜力与挑战:开启智慧教育的新时代
1047 19
|
自然语言处理 前端开发 搜索推荐
一套成熟的CMS需要具备的优势
在互联网发达的时代,网站搭建已经不再是一个高门槛的事情,内容管理系统(CMS)使您能够在不触及任何底层代码的情况下控制网站的内容、设计和功能。它是一个全能的助手,可以让用户轻松管理和发布内容,定制网站外观,扩展功能,以及追踪关键指标。 互联网上有数百种内容管理系统,每种系统都提供独特的功能以满足不同的业务需求。要选择最适合您业务的CMS,您需要确保其功能与您的需求和目标相匹配。
164 16
|
11月前
|
运维 持续交付 开发工具
基础设施即代码(IaC):自动化基础设施管理的未来
基础设施即代码(IaC):自动化基础设施管理的未来
375 0