从同事那里学到一种方便的注解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
版权声明:本文为博主原创文章,转载请附上博文链接!

EJB Remote/Local 绑定和JNDI Lookup的更多相关文章

  1. Ejb: remote调用

    用的是wildfly 9.0.2 一:在myeclipse中新建wildfly 9.0.2的server(如何新建去网上搜) 二:修改wildfly server的argument(在run conf ...

  2. 绑定的jndi获得connection时,出的错,java.io.NotSerializableException

    求助:java.io.NotSerializableException 最近系统频繁出现Lookup error: java.io.WriteAbortedException: Writing abo ...

  3. Class loading in JBoss AS 7--官方文档

    Class loading in AS7 is considerably different to previous versions of JBoss AS. Class loading is ba ...

  4. java集群技术(转)

    来源:http://blog.csdn.net/cdh1213/article/details/21443239 序言 越来越多的关键应用运行在J2EE(Java2, Enterprise Editi ...

  5. 2015第44周五Java集群技术(转)

    从http://blog.csdn.net/cdh1213/article/details/21443239上看到这篇文章,感觉很不错,找好久没找到中文出处,最早看是从http://www.these ...

  6. 深入了解java集群技术

    原文源自:http://blog.csdn.net/happyangelling/article/details/6413584 序言 越来越多的关键应用运行在J2EE(Java 2, Enterpr ...

  7. java集群

    java集群 分类: java学习2011-05-12 09:12 7531人阅读 评论(9) 收藏 举报 java服务器负载均衡ejb集群数据库 序言 越来越多的关键应用运行在J2EE(Java 2 ...

  8. java集群技术

    序言 越来越多的关键应用运行在J2EE(Java 2, Enterprise Edition)中,这些诸如银行系统和账单处理系统需要高的可用性(High Availability, HA),同时像Go ...

  9. java集群技术(转)

    序言 越来越多的关键应用运行在J2EE(Java 2, Enterprise Edition)中,这些诸如银行系统和账单处理系统需要高的可用性(High Availability, HA),同时像Go ...

随机推荐

  1. 选择 Python3.6 还是 Python 3.7

    转自:白月黑羽在线教程:http://www.python3.vip/doc/blog/python/home/ 选择 Python3.6 还是 Python 3.7 Python 3.7 已经发布了 ...

  2. typedef在C和C++的区别?

    一.struct定义结构体1.先声明结构体类型再定义变量名struct name{ member ..};name A;... 如:struct student{ int a;};student st ...

  3. JDK7与JDK8中HashMap的实现

    JDK7中的HashMap HashMap底层维护一个数组,数组中的每一项都是一个Entry transient Entry<K,V>[] table; 我们向 HashMap 中所放置的 ...

  4. GOROOT、GOPATH和project目录说明

    go env环境查看 用go env 可查看当前go环境变量. $ go env GOARCH="amd64" GOBIN="" GOEXE="&qu ...

  5. 第一次项目上Linux服务器(七:——Tomcat+ngnix+域名的简单配置)

    1.准备工作 安装好jdk+tomcat+nginx相关配置,请参考历史博客 2.修改Nginx配置文件 修改配置文件如下: 3.修改Tomcat配置文件 修改配置文件如下: 配置文件连接: ngni ...

  6. (转)第十一篇:springboot集成swagger2,构建优雅的Restful API

    声明:本部分内容均转自于方志明博友的博客,因为本人很喜欢他的博客,所以一直在学习,转载仅是记录和分享,若也有喜欢的人的话,可以去他的博客首页看:http://blog.csdn.net/forezp/ ...

  7. PHP filter_input() 函数

    以往,对于常见的SQL注入等漏洞,采取的方式一般都是对数据进行过滤,而对$_GET/$_POST/$_COOKIE/$_SERVER等全局数组变量的直接使用是不够安全的,故PHP 5.2.0版本以后, ...

  8. 乐字节-Java8新特性之方法引用

    上一篇小乐介绍了<Java8新特性-函数式接口>,大家可以点击回顾.这篇文章将接着介绍Java8新特性之方法引用. Java8 中引入方法引用新特性,用于简化应用对象方法的调用, 方法引用 ...

  9. 你真的了解 Unicode 和 UTF-8 吗?

    目录 引言 ASCII 码 什么是 ASCII 码? ASCII 码都包含哪些字符? ASCII 码的局限在哪里? Unicode 什么是 Unicode ? Unicode 的实现方式有几种? Un ...

  10. 最小公倍数(BNUOJ30195)

    最小公倍数 Time Limit: 0 ms Case Time Limit: 0 ms Memory Limit: 0 KBSubmit: 17 Accepted: 1 This problem w ...