EJB学习心得

EJB学习心得注意:在EJB中对Bean的定位是通过JNDI的名称来确定的一:当EJB发布到JBOSS时,如果我们没有为它指定全局JNDI名称或修改其默认的EJB名称, JBOSS就会按照默认的命名规则为EJB生成全局JNDI名称。默认的命名规则如下: 如果把EJB作为模块打包进后缀*.ear的JAVAEE企业应用文件,默认的全局JNDI名称是  本地接口:EAR-FILE-BASE-NAME/EJB-C…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

注意:在EJB中对Bean的定位是通过JNDI的名称来确定的

一:当EJB发布到JBOSS时,如果我们没有为它指定全局JNDI名称或修改其默认的EJB名称,
 JBOSS就会按照默认的命名规则为EJB生成全局JNDI名称。默认的命名规则如下:
 如果把EJB作为模块打包进后缀*.ear的JAVA EE企业应用文件,默认的全局JNDI名称是
  本地接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local
  远程接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/remote
 如果把EJB应用打包成后缀为*.jar的模块文件,默认的全局JNDI名称是
  本地接口:EJB-CLASS-NAME/local
  远程接口:EJB-CLASS-NAME/remote
二:通过远程接口调用EJB的过程
 首先客户端需要和EJB服务器建立Socket通信,在通信管道上他们需要来回发送IIOP协议消息。
 因为数据要在网络进行传输,存放数据的JAVA对象必须要序列化。
三:通过本地接口调用EJB的过程
 通过本地接口调用EJB,直接在内存中进行交互,这样可以避免网络开销、协议解析的开销和对象序列化的开销。
 但是大家必须要注意,只有客户端与EJB应用在同一个JVM内运行的时候,我们才能调用本地接口 。
四:如何通过使用注解方式注入并使用其他的EJB和服务
 注入和使用其他EJB的方式如下:
 @EJB EJB的接口 EJB的变量
 通过注解”@EJB”可以注入并使用其他的EJB,如果有多个EJB的类实现了同一个接口,那么在使用”@EJB”的时候
 需要明确指定是注入和使用哪一个EJB的Bean。指定方式如下:
 @EJB(beanName=”EJB类的名称”) EJB的接口 EJB的变量
 注入和使用其他服务的方式如下:
 @Resource 服务名称 服务变量
 注意在指定数据源的使用需要配置mappedName的属性值,例如:
 @Resource(mappedName=”数据库的JNDI名称”) DataSource dataSource
五:JMS中的消息
 消息传递系统的中心是消息,一条消息有三部分组成
 头(Header),属性(property),主体(body)
 消息有以下几种类型,他们都是派生自Message接口
 StreamMessage:一种主体中包含JAVA基原值流的消息,如填充和读取均按顺序进行。
 MapMessage:一种主体中包含一组名-值对的消息,没有定义条目顺序
 TextMessage:一种主体中包含JAVA字符串的消息(例如:XML消息)
 ObjectMessage:一种主体中包含序列化的JAVA对象的消息
 BytesMessage:一种主体中包含连续字节流的消息
 消息的传递模型为以下两种:
 点对点(point-to-point:PTP):该消息传递模型规定,一条消息只能传递给一个接收方,可以接受过时的消息。采用javax.jms.Queue表示。
 发布/订阅(publish/subscribe):该消息传递模型规定,一条消息可以传递给多个接收方,只能接受实时的消息。采用javax.jms.Topic表示。
六:如何发送消息(以Queue为例,如果是Topic则应把所有的Queue改为Topic)
 1.得到一个JNDI的初始化上下文(Context)
  InitialContext ctx = new InitialContext();
 2.根据上下文查找一个连接工厂QueueConnectionFactory。该连接工厂是用JMS提供的,不需要我们自己创建,
      每个工厂都绑定一个全局的JNDI,我们通过全局的JNDI来获取它
     QueueConnectionFactory factory = (QueueConnectionFactory)ctx.lookup(“QueueConnectionFactory”);
 3.通过连接工厂得到一个连接QueueConnection
  QueueConnection conn = factory.createQueueConnection();
 4.通过连接来建立一个会话(Session)
  QueueSession session = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
  建立一个不需要事物的并且能启动确认消息已接受的会话
 5.查找目标地址
  Destination destination = (Destination)ctx.lookup(配置文件的JNDI名称);
 6.根据会话和目标地址来建立消息生产者MessageProducer
  MessageProducer producer = session.createProducer(destination);
  TextMessage msg = session.createTextMessage(“hello world”);
  producer.send(msg);
七:建立一个Message Driver Bean(以Queue为例,如果是Topic则应把所有的Queue改为Topic)
 1.实现javax.jms.MessageListener
 2.通过注解指定监听设置
  @MessageDriven(activationConfig ={

  @ActivationConfigProperty(propertyName=”destinationType”,propertyValue=”javax.jms.Queue”),//监听消息传递的类型
  @ActivationConfigProperty(propertyName=”destination”,propertyValue=”queue/studiozeroQueue”),//设置消息接收方
  @ActivationConfigProperty(propertyName=”acknowledgeMode”,propertyValue=”Auto-acknowledge”) //设置传递模型
  })
八:WEB服务

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187708.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 国内比较好的OJ平台[通俗易懂]

    国内比较好的OJ平台[通俗易懂]OnlineJudge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。北京大学POJhttp://poj.org/中国最受欢迎OJ之一,各式各样各种难度的题目都有。杭州电子科技大学HDUOJhttp://acm.hdu.edu.cn/中国最受欢迎OJ之一,题目数量多,来源广。UVAht…

    2022年6月15日
    61
  • dnf自己搭建服务器_dnf搭建教程

    dnf自己搭建服务器_dnf搭建教程DNF游戏私服搭建过程准备资源:1.黑岩客户端2.服务器启动所需资源3.1核2G服务器一台(版本centos5.8)(记得开放全部端口)服务端配置:步骤一:切换源为163的源:wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.163.com//.help/CentOS5-Base-163.repo上传资源到服务器的根目录cd/上传文件步骤二:安装glibc.i386,xulrunner.i386,libXt

    2022年10月5日
    2
  • idea2021mac激活码[免费获取]「建议收藏」

    (idea2021mac激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~MLZPB5EL5Q-eyJsaWNlbnNlSWQiOi…

    2022年3月21日
    157
  • tasklist命令参数应用详细图解

    tasklist命令参数应用详细图解一操作实例不带参数;/svc参数;/SVC 显示每个进程中的服务信息,当/fo参数设置为table时有效。列出调用了某个dll的进程;列出系统中正在运行的非“SYSTEM“状态的所有进程。查看远程主机进程列表;需要远程主机的RPC服务支持;/v列出

    2022年6月5日
    31
  • windows系统如何cmd查看端口被占用、杀进程「建议收藏」

    windows系统如何cmd查看端口被占用、杀进程「建议收藏」首先是启动windows的命令窗口,按键盘上的windows+R,然后在输入框中输入cmd,既可以启动命令窗口 进入windows命令窗口之后,输入命令,输入netstat-ano然后回车,就可以看到系统当前所有的端口使用情况。 通过命令查找某一特定端口,在命令窗口中输入命令中输入netstat-ano|findstr”端口号”,然后回车就可以看到这个端口被哪个应用占用。 查看到对应的进程id之后,就可以通过id查找对应的进程名称,使用命令tasklist|findstr”进程id..

    2022年5月18日
    46
  • JavaScript中prototype用法

    JavaScript中prototype用法1概述大部分面向对象的编程语言,都是以类class作为对象的基础语法,js语言不是如此,它的面向对象编程基于‘原型对象’。首先说说构造函数的缺点:js通过构造函数生成新的对象,因此构造函数可以视为独享的模版。实例对象的属性和方法,可以定义在构造函数内部概述构造函数的缺点JavaScript通过构造函数生成新对象,因此构造函数可以视为对象的模板。实例对象的属性和方法,可以定

    2022年7月22日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号