EJB客户端访问

本文介绍了如何进行EJB客户端访问,重点在于远程EJB,包括HTTP、HTTPS等访问协议。内容涵盖EJB调用库的选择,如jboss实现,远程EJB客户端接口的创建与同步,以及配置文件`jboss-ejb-client.properties`的设置,最后讲解了客户端通过JNDI查找EJB的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EJB客户端访问
因为EJB是一个重量级的框架,拿常用的会话EJB来说,本地EJB还不如J2EE的CDI,所以只有远程EJB才是EJB的核心内容。远程EJB的访问协议有很多种,有HTTP协议、HTTPS协议、netty等等。
要写一个完整的EJB客户端,项目中必须有这么几个东西:
1 EJB客户端调用库
2远程EJB的客户端接口
3 配置
4 访问代码(这个有点画蛇添足,哈哈)
一 首先看第一个,EJB调用库。EJB调用库,网上有很多,各个厂商都有实现,我选择的是jboss的实现。其maven项目信息如下:

<dependency>
    <groupId>org.jboss</groupId>
    <artifactId>jboss-ejb-client</artifactId>
    <version>2.1.8.Final</version>
    </dependency>

二 远程EJB的客户端接口
这就需要远程EJB写成接口+实现的方式。如果自己在家里写着玩,可以直接把远程EJB的interface的Java文件拷贝进客户端项目。但是如果是生产项目,这样肯定不行,因为生成项目EJB太多了,靠手动拷贝,费时费力,如果服务端接口有变动的话,拷贝过去的代码不会跟着变动,这样就埋下了隐藏的bug。
如果是maven项目,在服务端可以生成EJB客户端。
服务端的maven配置需要动一动

<plugin>
    <artifactId>maven-ejb-plugin</artifactId>
    <configuration>
        <ejbVersion>3.0</ejbVersion>
        <generateClient>true</generateClient>
    </configuration>
</plugin>

加上这个maven插件,在每次的maven打包之后就会生成客户端jar。Maven ejb插件会默认把以Bean,CMP,Session结尾的类从客户端中删除。
三 配置
在classpath的根目录下放入这个文件,这个文件是jboss ejb客户端的默认配置文件
jboss-ejb-client.properties
对于一般的ejb,配置文件写下面的内容就可以了

remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port = 8081
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false

四 客户端代码
Ejb客户端是通过JNDI查找的,使用的是代理模式。
具体的代码是这个样子的,就是简单的jndi查找。

Hashtable<String,String> table = new Hashtable<String, String>();
table.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
InitialContext initialContext = new InitialContext(table);
HelloService lookup = (HelloService) initialContext.lookup("ejb:/ejb//HelloServiceBean!com.cjxnfs.ejbdemo.HelloService");
String greeting = lookup.greeting();

第一个ejb是协议名,第二个ejb是项目名。格式是什么呢?
ejb:[EAR名称]/[jar或者war名称]/
[显式bean名称]/[实现类]![接口完整类名]
如果是空的就可以不写哈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值