IDEA使用JBoss7.1.1容器启动EJB项目Demo

article/2025/9/30 0:49:11

        今年是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() {}@Overridepublic 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


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

相关文章

EJB开发第一个无状态会话bean、开发EJB客户端

开发第一个无状态会话bean EJB中的三中bean: 会话Bean(Session Bean) 负责与客户端交互,是编写业务逻辑的地方,在会话bean中可以通过JDBC直接操作数据库,但大多数情况下都是通过实体bean来完成对数据库的…

【EJB学习笔记】——EJB开发环境搭建(Eclipse集成JBoss)

之前一直用的EJB开发环境是他们搭建好的,直接拿来用,不过还是感觉老吃别人嚼好的不太好吃,所以自己动手来玩一玩。 EJB开发依赖的最基本的环境:JDK、Eclipse、JBoss,这里简单介绍一下最基本的环境的搭建。 JDK、Eclip…

EJB开发web service

服务端的开发 用EJB就行服务端开发是非常简单的,EJB可以把无状态会话bean通过WebService注解瞬间暴露为web服务。 例子 Stateless Remote(JsunSer.class) WebService public class JsunSerImpl implements JsunSer{ WebMethod public String run() { return &…

ejb2.0详细开发过程

Ejb2.0 开发流程 一、开发环境准备 ①开发工具:myeclipse2013(里面集成了EJB2.0的开发工具) ②jdk:jdk142_08 二、Ejb服务器端的开发 1.1 建立工程 ①EJB Project单击 ②输入工程名称: ejbserver 选择Ejb版本2.0…

wildfly ejb开发环境搭建(一):wildfly安装及数据源配置

本文是作者搭建ejb开发环境的记录,仅供参考 一、软件下载及环境准备 环境:wildfly-11.0.0.Finalj2ee7ejb3.2idea2019.1maven3jdk1.8(32位),数据库oracle10g,驱动:ojdbc6.jar,操作系统:win7 64位 wildfly…

EJB开发环境配置

前段时间学了点EJB,为了不至于忘了,写一下基本的开发环境配置是必要的,不然每次重装后配置开发环境都是一个痛苦的过程。 EJB用NetBean开发挺方便的,目前我也是在NetBean下学习EJB的,所以本篇就用NetBean作为开发工具…

EJB - 环境设置

一、 本博客将根据tutorialspoint文档的指导进行EJB环境的设置。 二、 系统需求 EJB是Java的一个框架,所以第一个要求是在您的机器上安装一个Java开发工具包(JDK)。 JDK1.5 or above.Memoryno minimum requirement.Disk Spaceno minimum r…

EJB 开发环境与入门实例

文章目录 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两个版本&am…

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提供____语句用于删除表中的数据。在…