最近学习EJB的基本使用,在搭建基本配置上遇下了不少坑。Google/Baidu搜索下的基本都是使用Eclipse + JBoss,使用Intellij的配置的也是使用JBoss7。因此记录下简单的配置过程,以供学习参考使用。
逻辑服务搭建:
1. 所需文件
- wildly 11.0 Filnal 即JBoss8+ http://wildfly.org/downloads/
- javax.ejb-api-3.2.jar EJB的支持 http://mvnrepository.com/artifact/javax.ejb/javax.ejb-api
- tomcat
后端构建
1. 创建项目
由于wildfly使用war部署,创建普通的web项目即可。(创建时加上EJB也是可以的,在功能栏会有EJB管理模块)
将EJB所需要的支持库加入(ProjectStructure->Library)
2. 编写SessionBean
3. 启动配置
我们使用JBoss运行项目,将原有的Tomcat配置删除,选择创建JBoss Server / Local
此时我们需要将artifacts放置到JBoss上进行以部署。直接点击Fix即可
4. 运行
以下输出标记Bean的路径
java:global/Hello_war_exploded/HelloEJB!daoservice.HelloService
java:app/Hello_war_exploded/HelloEJB!daoservice.HelloService
java:module/HelloEJB!daoservice.HelloService
java:jboss/exported/Hello_war_exploded/HelloEJB!daoservice.HelloService
java:global/Hello_war_exploded/HelloEJB
java:app/Hello_war_exploded/HelloEJB
java:module/HelloEJB
在浏览器中输入 http://localhost:8080/ 可以看到wildfly界面
此时JBoss即运行成功了
前端搭建
项目创建
前端使用Servlet + EJB,创建过程同上
项目配置
JNDI Remote Client 需要 jboss-client.jar , 此jar包在{$WILDFLY_HOME}/bin/client下
将上面的 javax.ejb-api-3.2.jar与jboss-client.jar添加到HelloUI的library中(要使用ProjectStructure加入库中或者右键:Add As Library)
Servlet编写
将Hello工程中的EJB接口拷贝至HelloUI工程。(最好包名不要修改)
jndiPath 编写: 运行JBoss后的输出中含有app:/----
参考 http://share.zhbor.com/article/18176.html
jndiPath = "ejb:" +
appName + "/" +
moduleName + "/" + /*服务器上.war包或.jar包的名字*/
distinctName + "/" +
beanName + "!" + viewClassName + "?stateful" /*Bean Name*/
EJB配置文件编写
在 src 文件夹下创建 jboss-ejb-client.properties
endpoint.name=client-endpoint
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port=8080
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.connection.default.username=JBOSS账号
remote.connection.default.password=JBOSS密码
此处,port 是 8080, 如果是 JBoss7 则为4447
至于Jboss账号密码设置:
使用命令行进入wildfly 安装目录下的 bin 文件夹
执行 ./add-user.sh (Win下是.bat)
运行
注意:tomcat 默认端口也是8080,我将其改成了8888