从同事那里学到一种方便的注解SessionBean的方式。代码我放到github去了 https://github.com/EdisonXu/Test/commit/703d49123dca9e666269771b08cc45dea6bff616 或者直接看路径 https://github.com/EdisonXu/Test/tree/master/remote-bean-test其中test-local虽然打成了可执行jar包,但是依然无法直接通过Java -jar去执行。因为缺乏jboss相关依赖的包。我在网上没找到dependency,所以懒得搞了。直接把本地JBoss的包配到buildPath了,直接在eclipse中运行。关键有两点:1. 定义一个interface文件:public interface RemoteTest {    public static final String NAME = "Test/RemoteTest";    public static final String JNDI_NAME = "Test/RemoteTest/remote";    public String getTest();    /**     * Local interface for session bean     */    public static interface Local extends RemoteTest{}    /**     * Remote interface for session bean     */    public static interface Remote extends RemoteTest{}}这样在注入的时候直接@EJBRemoteTest.Local localRemoteTest;或者@EJBRemoteTest.Remote RemoteTest;值得注意的是,如果这里直接用 RemoteTest 去作为类型,在加载这个包时会报错,会提示定义的RemoteTest.NAME的值,即Test/RemoteTest不唯一。导致部署失败。2. 方便的JNDI Lookupejb3.1支持的几种JNDI LOOKUP:java:global/Get EJB instance by lookup global in java: Namespace. Syntax:         java:global/<ear-name>/<jar-name>/<bean-name>[!<fully-qualified-interface-name>]  Sample: SampleBean implements SampleBeanRemote interface  SampleBeanRemote {    JNDI_NAME="SampleBean";}sampleBeanInstance =  (SampleBeanRemote)lookupByGlobal(SampleBeanLocal.JNDI_NAME);java:app/Get EJB instance by lookup app in java: Namespace. Note: Only effect when  the expect bean is in the same ear file with the POJO calling this method.  Syntax:         java:app/<jar-name>/<bean-name>[!<fully-qualified-interface-name>]  Sample: SampleBean implements SampleBeanLocal interface  SampleBeanLocal {    NAME="SampleBean";}sampleBeanInstance = (SampleBeanLocal)lookupByApp(SampleBeanLocal.NAME);java:module/Get EJB instance by lookup module in java: Namespace. Note: Only effect  when the expect bean is in the same jar file with the POJO calling this method.  Syntax:         java:module/<bean-name>[!<fully-qualified-interface-name>]  Sample: SampleBean implements SampleBeanLocal SampleBeanLocal  {    NAME="SampleBean";}sampleBeanInstance =  (SampleBeanLocal)lookupByModule(SampleBeanLocal.NAME);其中global, app 需要提供包名,但有时候我们会在包名里面包含版本号,这样每次修改都要去改源代码,很不方便。而用上面提供的REMOTE/LOCAL绑定方式,现在直接用RemoteTest rt = (RemoteTest)ctx.lookup(RemoteTest.JNDI_NAME);方便快捷。另外,还有一种方式是在jar包里面添加ejb-jar.xml。里面显示的把去掉版本后的包名或别名写到 <moduleName>中去。这样用包名或别名替换掉原来带版本号的包名就行了。
---------------------
作者:Edison徐
来源:CSDN
原文:https://blog.csdn.net/xeseo/article/details/9467173
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/firstdream/p/9809471.html

EJB Remote/Local 绑定和JNDI Lookup相关推荐

  1. ejb 2.1 jboss_JBoss AS7 JNDI和EJB 3.1命名更改

    ejb 2.1 jboss 由于"功能培训"继续前进,而我们又没有保持软件堆栈的最新状态,因此我们的团队发现自己处于不得不迁移的不利位置: JBoss 4.2.3到AS 7.1.x ...

  2. [EJB:011008]Unable to bind EJB Home Interface to the JNDI name: BusinessDelegateBean.

    weblogic部署应用,真的只部署了这么一个应用,其他没找到任何东东,可就是报错,aready in use   . 求高人指导  2014-08-04 控制台报错如下: <2014-8-4 ...

  3. 大型互联网架构与集群技术

    java架构必须掌握的几点技术? 关于学习架构,必须会的几点技术 1. java反射技术 2. xml文件处理 3. properties属性文件处理 4. 线程安全机制 5. annocation注 ...

  4. 大型互联网架构与集群技术(Java方向)

    java架构必须掌握的几点技术? 关于学习架构,必须会的几点技术 1. java反射技术 2. xml文件处理 3. properties属性文件处理 4. 线程安全机制 5. annocation注 ...

  5. 菜鸟学EJB(二)——在同一个SessionBean中使用@Remote和@Local

    不废话.直接进入正题: 在Jboss4及曾经的版本号中,例如以下代码能够成功部署: package com.tjb.ejb;import javax.ejb.Local; import javax.e ...

  6. JBoss AS7 JNDI和EJB 3.1命名更改

    由于"功能培训"继续前进,而我们又没有使软件堆栈保持最新,因此我们的团队发现自己处于迁移的不可行位置: JBoss 4.2.3到AS 7.1.x(当前为7.1.1) EJB 2.1 ...

  7. [JBoss] JNDI与JBossNS

    JNDI的作用 JNDI是 Java 命名与目录接口(Java Naming and Directory Interface). 随着分布式应用的发展,远程访问对象访问成为常用的方法.虽然说通过Soc ...

  8. ejb 2.0 3.0_EJB 3.0注入和查找简介

    ejb 2.0 3.0 介绍 Enterprise JavaBeans Specification v.3.0引入了简化的,基于注释的API,用于EJB注入和查找. EJB 3.0现在是POJO,可以 ...

  9. EJB 3.0注入和查找简介

    介绍 Enterprise JavaBeans Specification v.3.0引入了简化的,基于注释的API,用于EJB注入和查找. EJB 3.0现在是POJO,可以使用简单的注释将其注入其 ...

最新文章

  1. python读书笔记二、文件基本操作
  2. 【Angular】MVVM
  3. 11月份写什么,由你来决定——学堂需求调查
  4. 权限问题导致无法删除ftp文件
  5. Spring+SpringMVC+MyBatis+easyUI整合基础篇(五)讲一下maven
  6. VS:无法将“char *”转换为“const wchar_t *”/不能将参数从“const char []”转换为“const wchar_t *”
  7. python集合和字典创建通讯录_Python基础-字典和集合
  8. Shiro - RememberMe记住我功能实现
  9. ios快捷指令 python_手把手教你使用 iOS 效率神器 「快捷指令」
  10. python进程池Pool的apply与apply_async到底怎么用?
  11. 如果程序员能早知道这些该有多好!
  12. ElasticSearch之搜索词提示Sug
  13. linux 串口转网口工具,linux下串口调试工具/串口终端推荐: picocom(转)
  14. 研发项目购置的软件服务器属于无形资产吗,购买云服务器属于无形资产
  15. MMU and MPU
  16. python画螺旋状图形教程_Python实现的绘制三维双螺旋线图形功能示例
  17. 新网的虚拟主机连接mysql_虚拟主机怎么导入数据库
  18. c语言分蛋糕均匀正方形,分蛋糕(C - 二分查找)
  19. 弗洛伊德算法c语言path,Floyd算法(弗洛伊德算法)
  20. ssas脚本组织程序_SSAS系列——【01】准备知识

热门文章

  1. 公交车上应不应该给老人让座?
  2. RFID打印机有什么用
  3. 请问孩子厌学的话该怎么办?
  4. 企‮增业‬长‮两的‬种方式:内‮式生‬增长、外‮式延‬增长
  5. 赚钱有捷径吗?为什么有的人赚钱很容易
  6. 你是否遇到过职业枯竭?
  7. 线程池工作原理流程图 源码概览线程池工作原理流程图 源码概览
  8. 家里电脑是win10,但开机都要3分钟,请问怎么提快电脑速度?
  9. deepin开机未登录自动连接wifi
  10. [leetcode]36. Valid Sudoku c语言