专栏首页Danny的专栏【EJB学习笔记】——建立一个简单的EJB应用

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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/50965177

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

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

建立EJB项目—EJB_DEMO


  New—EJB Project

  核心代码:

  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

  客户端既然调用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并且输出信息了呢?


【 转载请注明出处——胡玉洋《EJB——建立一个简单的EJB应用》】

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL安装图解

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

    DannyHoo
  • 服务器又一次被恶意攻击,MongoDB被删库

    前几天在自己个人的一台腾讯云服务器上安装了MongoDB,当时着急用,就用的默认配置(端口是默认端口,也没设置密码),后来就把这事抛到脑后了,也因为经常用无线网...

    DannyHoo
  • 【Redis】——Redis简单介绍及Redis安装详细过程

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

    DannyHoo
  • 实战:将POJO类转换为EJB | 从开发角度看应用架构6

    魏新宇
  • 本地&远程访问一个EJB | 从开发角度看应用架构4

    魏新宇
  • 前段:可能是最全的 “文本溢出截断省略” 方案合集

    在我们的日常开发工作中,文本溢出截断省略是很常见的一种需考虑的业务场景细节。看上去 “稀松平常” ,但在实现上却有不同的区分,是单行截断还是多行截断?多行的截断...

    用户4962466
  • 前段:可能是最全的 “文本溢出截断省略” 方案合集

    在我们的日常开发工作中,文本溢出截断省略是很常见的一种需考虑的业务场景细节。看上去 “稀松平常” ,但在实现上却有不同的区分,是单行截断还是多行截断?多行的截断...

    用户4962466
  • 可能是最全的 “文本溢出截断省略” 方案合集

    在我们的日常开发工作中,文本溢出截断省略是很常见的一种需考虑的业务场景细节。看上去 “稀松平常” ,但在实现上却有不同的区分,是单行截断还是多行截断?多行的截断...

    政采云前端团队
  • 可能是最全的 “文本溢出截断省略” 方案合集

    在我们的日常开发工作中,文本溢出截断省略是很常见的一种需考虑的业务场景细节。看上去 “稀松平常” ,但在实现上却有不同的区分,是单行截断还是多行截断?多行的截断...

    Nealyang
  • Swift 环形链表- LeetCode

    可以转化为一个追击问题 前后双指针,slow走一步,fast走两步,如果有环存在,一定会相遇的。

    韦弦zhy

扫码关注云+社区

领取腾讯云代金券