EJB 开发环境与入门实例

article/2025/9/30 1:31:41

文章目录

      • 1.环境准备
      • 2.WildFly
          • 介绍
          • 下载
          • 配置与启动
      • 3. EJB 服务创建
      • 4.客户端调用

1.环境准备

OS: Windows 8, 64 Bit
JDK: 1.8
Eclipse: Photon Release (4.8.0)
WildFly: 14.0.1.Final

2.WildFly

介绍

WildFly 是JBoss AS的新的项目的名称。
JBoss分为AS 和 EAP两个版本, AS是开源社区版本,EAP-Enterprise Application Platform是在开源版本上构建的企业版本。
JBoss AS 7.2.0是JBoss EAP 6.1 的基础上开发的,从 8版本开始, JBoss AS就换成了WildFly。

下载

下载地址:
http://wildfly.org/downloads/
目前(2018/11)最新版是 14.0.1.Final。

在这里插入图片描述

下载后解压,这里解压到 D:\install\wildfly14 目录。

配置与启动

WildFly的后台管理需要输入用户名密码登录。 所以需要使用管理员账号。使用 add-user.bat 执行交互式用户和密码设定。默认安装有admin用户, 可以通过这种方式修改密码。

  1. 命名行切换到 D:\install\wildfly14\bin, 执行 add-user.bat
  2. 设定管理员用户名/密码: admin/admin
    在这里插入图片描述
    上图中, 输入a 添加管理员账号, 后面输入admin后提示是已有账号, 修改密码即可。
  3. 设定用户完成后,在相同的目录,执行 standalone.bat, 启动服务
    在这里插入图片描述

控制台地址: http://127.0.0.1:9990/
在浏览器输入以上地址, 会要求输入用户名/密码。正确输入后,效果如下:
在这里插入图片描述

3. EJB 服务创建

  1. 在Eclipse 中建立EJB Project, Project 名字为: ejb_service
    在这里插入图片描述

2.别急着点Finish, 点击下一步之后, 在之后下一步中勾选产生部署描述的xml文件。
在这里插入图片描述
创建后的项目结构如下:
在这里插入图片描述
ejbModule里面放的就是源码文件。

  1. 将ejb的依赖包加入项目的build path
    文件路径在: D:\install\wildfly14\modules\system\layers\base\javax\ejb\api\main
    在这里插入图片描述

  2. 新建接口和服务类。
    右键单击项目,New-> Session Bean
    输入包名、类名并勾选创建远端接口。
    在这里插入图片描述
    点击Finish后, 会创建两个文件
    在这里插入图片描述

  3. 在接口和Bean的文件中添加方法。

package cn.osxm.jcodef.ejb;import javax.ejb.Remote;@Remote
public interface HelloWorldRemote {public String sayHello(String user);
}
package cn.osxm.jcodef.ejb;import javax.ejb.LocalBean;
import javax.ejb.Stateless;/*** Session Bean implementation class HelloWorld*/
@Stateless
@LocalBean
public class HelloWorld implements HelloWorldRemote {/*** Default constructor. */public HelloWorld() {// TODO Auto-generated constructor stub}@Overridepublic String sayHello(String username) {return "Hello," + username + ". This is first EJB Service.";}}

6.打包部署
右键单击项目, Export
在这里插入图片描述
默认打包的文件名是项目名.jar, 这里是 ejb_service.jar
部署只需要将这个文件复制到 D:\install\wildfly14\standalone\deployments 目录下。

Wildfly 支持热部署, 在服务开启的状况下, 将文件 拷入会自动的部署。在服务控制台可以看到部署的日志:
在这里插入图片描述

以上红色框部分就是服务的地址, 后面客户端调用的时候就是使用这个地址。

4.客户端调用

新建一个普通的Java项目进行测试。客户端调用需要:

  1. 客户端调用依赖包: jboss-client.jar
    位于JBoss安装目录: D:\install\wildfly14\bin\client
    也可以在网络直接下载或是通过Maven中央库导入。
  2. 服务端的接口, 也就是上面的: cn.osxm.jcodef.ejb.HelloWorldRemote
    这个接口文件必须和服务端的包和接口名及需要调用的接口保持一致。
    可以从服务器端直接提供,或是打包成 jar档进行导入,在客服端写的话,注意保持一致。
  3. 服务器的路径
    这个和Wildfly的管理控制页面是不一样的端口, 查找方式:
    到管理控制台以下页面
    在这里插入图片描述
    默认是8080端口, 和Tomcat的端口是一样的。
    如果同时使用Tomcat和Wildfly的话, 可以修改这个端口。
  4. 服务的路径, 上面也提到了。这里是:
    ejb_service/HelloWorld!cn.osxm.jcodef.ejb.HelloWorldRemote
    可以从Wildfly服务控制台日志看到, 也可以到管理页面中查询。
    Runtime->JNDI
    在这里插入图片描述

在这里插入图片描述
5. 调用代码:

/*** @Title: HelloWorldMain.java* @Package cn.osxm.jcodef.ejb* @Description: TODO* @author osxm:oscarxueming* @date 2018��11��24�� ����5:51:47* @version V1.0*/package cn.osxm.jcodef.func.ejb.client;import java.util.Properties;import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;/*** @ClassName: HelloWorldMain* @Description: TODO* @author osxm:oscarxueming*/public class HelloWorldMain {/*** @Title: main* @Description: TODO* @param args* @throws NamingException*/public static void main(String[] args) throws NamingException {Properties props = new Properties();props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");props.put(Context.PROVIDER_URL, "http-remoting://127.0.0.1:8080");props.put("jboss.naming.client.ejb.context", true);InitialContext context = new InitialContext(props);// JNDI·String fullEJBName = "ejb_service/HelloWorld!cn.osxm.jcodef.ejb.HelloWorldRemote";cn.osxm.jcodef.ejb.HelloWorldRemote helloWorld = (cn.osxm.jcodef.ejb.HelloWorldRemote) context.lookup(fullEJBName);System.out.println(helloWorld.sayHello("osxm"));}}

http://chatgpt.dhexx.cn/article/TMQrfWaf.shtml

相关文章

EJB开发第一期---EJB开发配置

一、EJB 3.0简介 1.1 什么是EJB Enterprise JavaBeans是一个用于分布式业务应用的标准服务端组件模型。采用Enterprise JavaBeans架构编写的应用是可伸缩的、事务性的、多用户安全的。采用ejb编写的这些应用,可以部署在任何支持Enterprise JavaBeans规范的服务器平台…

如何开发EJB?

EJB开发分为两部分:开发EJB和使用EJB 本文示例将使用EJB2.0 :1.工作需要;2.EJB3.0相对于2.0变动不大(添加注解,JPA替换实体Bean实现) 开发EJB的流程 以开发stateless SessionBean为栗. 1.编写SessionBean。需要实现SessionBean接…

数据库笔试题及答案

以下为某公司的数据库笔试题及个人整理的答案,小伙伴们有更好的答案欢迎指教! 数据表 Student(S#,Sname) 10000条记录Cource(C#,Cname,T#) 9条记录SC(S#,C#,Score) 89991条记录Teacher(T#,Tname) 3条记录 题目并没有指定表中有多少数据&am…

MySQL数据库期末考试试题及参考答案(09)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、 填空题 MySQL提供的____命令可以将数据库导出成SQL脚本,以实现数据的备份。mysqldump命令备份多个数据库时,数据库名称之间用____隔开。MySQL中…

数据库题库(一)

第一章 绪论(上) (1) (2)只要有大量数据就可以称之为数据库() (3)数据库管理系统DBMS有多种,比如PostgreSQL、Oracle等(√&#xf…

MySQL数据库期末考试试题及参考答案(07)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、 填空题 如果不想提交当前事务,可以使用_____语句回滚事务。每个事务都是完整不可分割的最小单元是事务的_____性。MySQL中,显式开启事务的语句…

数据库面试题(答案)

1、MySQL主键和唯一索引的区别? 1、主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。 2、主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。 3、唯一性索引列允许空值,而主键列不允许为空值…

MySQL数据库期末考试试题及参考答案(06)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、 填空题 普通索引使用KEY或____定义。在MySQL中,DROP VIEW语句用于____。MySQL中常见的索引大致分为普通索引、 ____ 、 ____ 、全文索引、空间索引。只有在…

数据库习题

习题一 数据库系统绪论 一、数据独立性包括数据的 物理独立性 和 逻辑独立性。 二、数据模型的组成三要素是数据结构 、 数据操作、 完整性约束条件。 三、两个实体型之间的联系分为三类,分别是 一对一关系、 一对多关系和 多对多关系 两个以上的实体型之间以及单…

MySQL数据库期末考试试题及参考答案(04)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、填空题 MySQL中提供了____关键字,可以在查询时去除重复的值。使用ORDER BY对查询结果进行排序时,默认是按____排列。SELECT语句中,用…

MySQL数据库题库

一、选择题 第1章 数据库系统概述 1.DBS是( A )的简写。 A.数据库系统 B.数据库管理系统  C.数据库 D.操作系统 2.DBMS是( B )的简写 A.数据库系统 B.数据库管理系统  C.数据库 D.数据 3.DB、DBMS和DBS之间的关系是 (…

MySQL数据库期末考试试题及参考答案(03)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、填空题 插入数据时,如果不指定____,必须为每个字段添加数据。MySQL中使用____语句来更新表中的记录。MySQL提供____语句用于删除表中的数据。在…

【数据库】数据库选择题练习及详解

练习1 1.允许取空值但不允许出现重复值的约束是______ A、NULL B、PRIMARY KEY C、UNIQUE D、FOREIGN KEY 解:NULL指当前值为空,不做其他约束,PRIMARY KEY为码约束,码必须唯一且不能为空,UNIQUE指的是当前值唯一&…

MySQL数据库期末考试试题及参考答案(05)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、填空题 交叉连接查询返回的结果是被连接的两张数据表中所有数据行的____ 。左连接查询的结果包括LEFT JOIN子句中左表的____,以及右表中满足连接条件的记录…

MySQL数据库期末考试试题及参考答案(02)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、 填空题 创建数据库时,语句中添加____可以防止数据库已存在而引发的程序报错。如果使用非图形化工具操作数据表,操作之前应该先使用____命令指定…

MySQL数据库期末考试试题及参考答案(01)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、 填空题 ___在20世纪80年代被美国国家标准学会和国际标准化组织定义为关系型数据库语言的标准。数据模型所描述的内容包括3个部分,分别是数据结构、数据操作…

数据库原理及应用-期末考试试题及答案

单项选择题 DB、DBMS和DBS三者之间的关系是( )。 A.DB包括DBMS和DBS B.DBS包括DB和DBMS C.DBMS包括DB和DBS D.不能相互包括 对数据库物理存储方式的描述称为( ) A.外模式…

数据库试题及答案 两套

数据库原理试题(A卷) 一、 填空题(每空 1 分,共 20 分) 1. 对于一个国家来说,数据库的建设规模、数据库信息量的 _____________ 和 _____________ 已成为这个国家信息化程度的 ________________ 。2. 数据模型通常由:…

经典 SQL 数据库笔试题及答案整理

马上又是金三银四啦,有蛮多小伙伴在跳槽找工作,但对于年限稍短的软件测试工程师,难免会需要进行笔试,而在笔试中,基本都会碰到一道关于数据库的大题,今天这篇文章呢,就收录了下最近学员反馈上来…

AttributeUsage(转载)

System.AttributeUsage声明一个Attribute的使用范围与使用原则。 AllowMultiple 和 Inherited 参数是可选的,所以此代码具有相同的效果: AttributeTarget的值可以参考1。部分可取值如下: 如果 AllowMultiple 参数设置为 true,则返…