在上一篇文章中,已经说了怎么配置wildfly数据源,接下来开始搭建基于idea+maven的ejb开发环境,并且实现代码的maven的wildfly插件自动部署
一、准备工作
安装jdk,idea,这些基础的,在此就不具体讲解了,不清楚请自行百度
笔者开发环境:idea2019.1+jdk1.8+maven3
代码例子 https://gitee.com/liuyouzhang/wildfly11_ejb_demo
二、代码模块说明
ejbcommon模块,为基础模块,因为ejbserver模块直接需要使用此模块的类,所以ejbserver项目中,使用maven-shade-plugin插件,将ejbcommon模块的类打包时,打包到一起。
ejbserver模块,为ejb的server模块,运行在wildfly容器中,提供ejb的bean服务,这里使用的是staless session bean(无状态的会话bean)。
ejb的此概念,不清楚可以百度自行了解。
这里可以参考 Spring的有状态bean 无状态bean来理解,有状态会话bean意味着需要与调用者一一绑定,是有上下文状态的,一个调用者session,就会产生一个服务端的bean,可想而知资源消耗很大,服务端要为每个会话的每个调用,都维护一个专属的bean为之服务。假如有1000个调用,则就有1000个bean。
无状态的会话bean,就是这个服务端的bean,是不保存相关调用者的上下文数据的,所以可以做池化处理,针对所有的调用请求,所有的bean都可以拿来使用。假如有1000个调用,则可能只有20个bean,作为一个bean池,拿来直接重复使用(bean 的内部数据会覆盖,栈数据会不同,这里的重复使用主要是指bean容器管理的bean的实例会被重复使用,所以bean 的全局字段不要存在共享数据)。
由于服务端编程的特点,是要从高可用高并发的角度去设计的,所以服务肯定是会设计为无状态的,基本上有状态的会话bean使用场景很少,可能一些跟前端的会话紧密交互的、处理C/S架构的前端交互数据的,这里要使用有状态的会话bean。比如一些采用C/S架构的erp系统,直接处理用户client的数据的服务端bean。
ejbclinet模块,为ejb的client,可以在任意的java环境中调用(不一定需要运行在jboss容器中),也可以在spring应用中调用,或者像示例代码中的,直接在普通java类的main方法中调用。
三、运行例子
代码导入之后,配置ejbserver模块中,wildfly服务器的配置信息,这里使用的是本地安装的wildfly服务器。也可以使用临时的由maven插件下载的wildfly服务器。
使用maven名称 mvn wildfly:deploy,将ejbserver模块部署到wildfly服务器中,idea右键运行ejbclient中的main方法,即可看到输出结果。
四、注意事项
可能有几个jar包,maven引用时,是不在中央仓库的,因此需要自己到网上找并下载下来,自行导入到本机的本地仓库中。
安装命令:
mvn install:install-file -DgroupId=imsdriver(jar包的groupId) -DartifactId=imsdriver(jar包的artifactId) -Dversion=1.0(jar的版本号) -Dpackaging=jar -Dfile=D:\jar\imsdriver.jar(jar包的具体路径)
参考文章:
https://blog.csdn.net/qq_17058993/article/details/83027234
https://blog.csdn.net/weixin_39590977/article/details/86102758