EJB Remote/Local 绑定和JNDI Lookup
从同事那里学到一种方便的注解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相关推荐
- ejb 2.1 jboss_JBoss AS7 JNDI和EJB 3.1命名更改
ejb 2.1 jboss 由于"功能培训"继续前进,而我们又没有保持软件堆栈的最新状态,因此我们的团队发现自己处于不得不迁移的不利位置: JBoss 4.2.3到AS 7.1.x ...
- [EJB:011008]Unable to bind EJB Home Interface to the JNDI name: BusinessDelegateBean.
weblogic部署应用,真的只部署了这么一个应用,其他没找到任何东东,可就是报错,aready in use . 求高人指导 2014-08-04 控制台报错如下: <2014-8-4 ...
- 大型互联网架构与集群技术
java架构必须掌握的几点技术? 关于学习架构,必须会的几点技术 1. java反射技术 2. xml文件处理 3. properties属性文件处理 4. 线程安全机制 5. annocation注 ...
- 大型互联网架构与集群技术(Java方向)
java架构必须掌握的几点技术? 关于学习架构,必须会的几点技术 1. java反射技术 2. xml文件处理 3. properties属性文件处理 4. 线程安全机制 5. annocation注 ...
- 菜鸟学EJB(二)——在同一个SessionBean中使用@Remote和@Local
不废话.直接进入正题: 在Jboss4及曾经的版本号中,例如以下代码能够成功部署: package com.tjb.ejb;import javax.ejb.Local; import javax.e ...
- JBoss AS7 JNDI和EJB 3.1命名更改
由于"功能培训"继续前进,而我们又没有使软件堆栈保持最新,因此我们的团队发现自己处于迁移的不可行位置: JBoss 4.2.3到AS 7.1.x(当前为7.1.1) EJB 2.1 ...
- [JBoss] JNDI与JBossNS
JNDI的作用 JNDI是 Java 命名与目录接口(Java Naming and Directory Interface). 随着分布式应用的发展,远程访问对象访问成为常用的方法.虽然说通过Soc ...
- 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,可以 ...
- EJB 3.0注入和查找简介
介绍 Enterprise JavaBeans Specification v.3.0引入了简化的,基于注释的API,用于EJB注入和查找. EJB 3.0现在是POJO,可以使用简单的注释将其注入其 ...
最新文章
- python读书笔记二、文件基本操作
- 【Angular】MVVM
- 11月份写什么,由你来决定——学堂需求调查
- 权限问题导致无法删除ftp文件
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(五)讲一下maven
- VS:无法将“char *”转换为“const wchar_t *”/不能将参数从“const char []”转换为“const wchar_t *”
- python集合和字典创建通讯录_Python基础-字典和集合
- Shiro - RememberMe记住我功能实现
- ios快捷指令 python_手把手教你使用 iOS 效率神器 「快捷指令」
- python进程池Pool的apply与apply_async到底怎么用?
- 如果程序员能早知道这些该有多好!
- ElasticSearch之搜索词提示Sug
- linux 串口转网口工具,linux下串口调试工具/串口终端推荐: picocom(转)
- 研发项目购置的软件服务器属于无形资产吗,购买云服务器属于无形资产
- MMU and MPU
- python画螺旋状图形教程_Python实现的绘制三维双螺旋线图形功能示例
- 新网的虚拟主机连接mysql_虚拟主机怎么导入数据库
- c语言分蛋糕均匀正方形,分蛋糕(C - 二分查找)
- 弗洛伊德算法c语言path,Floyd算法(弗洛伊德算法)
- ssas脚本组织程序_SSAS系列——【01】准备知识