今年是2022年了,现在用到EJB架构的项目已经不多了,多是遗留的老项目,这不,手头就遇到一个。找了一些资料,自己也手动练习一下基础的搭建。
在开始,介绍一下搭建环境使用的工具及版本:
- JDK版本:jdk1.7.0_64
- JBOSS版本:jboss-as-7.1.1.Final
- 开发工具:IDEA 2018.3
关于JBoss安装搭建参考:jboss-as-7.1.1.Final安装及控制台登录(windows环境)
下面正式开始环境搭建工作。
1.创建一个Java项目
(1)File -> New -> Project -> Java
(2)Jdk选择1.7的版本,next ->
(3)直接 next ->
(4)编辑 Project Name(项目名称 )、Project location(项目路径),点击 Finish 完成项目创建。
(5)如果出现下面弹窗,选择 “OK”.
现在创建的只是一个空的java项目,下面开始增加模块。
2.在EJBDemo下创建一个服务 Module,名称EJBServer
(1)选择刚才创建的项目,右键 -> New -> Module
(2)按照如下步骤选择配置项:最后点击 Next。
(3)编辑项目模块名称, 点击 Finish 完成模块创建。
(4)创建完成后的文件目录如下:
3.编写服务代码
(1)创建接口文件 HelloWorld.java
package com.ejb.server;
import javax.ejb.Remote;
@Remote
public interface HelloWorld {
public String hello(String word);
}
(2)创建无状态bean文件 HelloWorldBean.java
这个可以根据接口来创建无状态的Bean类,如下截图操作步骤:
命名只用输入接口类名称就行:
代码如下:
package com.ejb.server;
import javax.ejb.Stateless;
@Stateless(name = "HelloWorldEJB")
public class HelloWorldBean implements HelloWorld{
public HelloWorldBean() {
}
@Override
public String hello(String word) {
return "hello " + word;
}
}
创建完成后的目录结构如下:
4.启动服务
(1)配置JBoss服务
选择JBoss服务,创建 Local 服务,重新命名 EJBServer
“Server”页签的配置:
“Deployment”页签的配置:
(2)启动项目:
打印如下日志则表示成功:
=======================================================================
如果出现如下报错:
那是因为IDEA环境中有JDK版本未设置,修改以下两个地方:
第一个:File -> Project Structure
第二个:File -> settings -> Build,Execution,Deployment -> Compiler -> Java Compiler
=======================================================================
(3)控制台验证
浏览器输入 http://localhost:8080 打开控制台页面:
点击“Adminstrator Console” 出现下面输入账号密码页面,输入JBoss设置的管理员账号密码
看到发布的服务已经在列表中:
5.在EJBDemo下创建一个客户端 Module,名称EJBClient
(1)创建项目
注意:这里创建 Java 项目就可以了。
(2)在项目下创建目录 lib
在lib目录引入jar包,一个是EJBServer项目lib目录下的 javax.ejb-api.jar, 另一个是在Jboss中,目录是 C:\Java\JBoss\jboss-as-7.1.1.Final\bin\client\jboss-client.jar
(3)将EJBServer项目src下的文件拷贝到EJBClient 下
(4)在EJBClient 项目src下创建客户端测试类
测试类com.ejb.client.HelloWorldClient.java
package com.ejb.client;
import com.ejb.server.HelloWorld;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.util.Properties;
public class HelloWorldClient {
public static void main(String[] args) throws NamingException {
Properties props = new Properties();
props.put(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming");
props.put("jboss.naming.client.ejb.context",true);
try {
InitialContext ctx = new InitialContext(props);
String appName = "";
String moduleName = "EJBServer_war_exploded";
String distinctName = "";
String beanName = "HelloWorldEJB";
String viewClassName = HelloWorld.class.getName();
String namespace = "ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName;
//String namespace = "ejb:/EJBServer_war_exploded/HelloWorldEJB!com.ejb.server.HelloWorld";
HelloWorld helloworld = (HelloWorld) ctx.lookup(namespace);
System.out.println(helloworld.hello("New World"));
} catch (NamingException e) {
e.printStackTrace();
}
}
}
上述参namespace就是EJBserver启动时,控制台打印项“java:jboss/exported”后的内容:
(5)在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=4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.connection.default.username=admin
remote.connection.default.password=123456
(6)文件目录如下:
(7)执行main方法
(完)
测试代码下载:1.1.EJBDemo源代码7
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/62168.html