MyEclipse企业级EJB项目创建与部署到容器

作者:技术拾光时间:2026-06-30 12:36:11浏览:457

MyEclipse 下创建并部署一个 EJB 项目,说到底就是三步走:先建一个符合 Java EE 6.0 / EJB 3.1 规范的工程;然后配置好容器级的 JNDI 数据源(比如 JBoss 下的 mysql-ds.xml),并在 persistence.xml 里引用它;最后把 EJB 模块打

MyEclipse 下创建并部署一个 EJB 项目,说到底就是三步走:先建一个符合 Java EE 6.0 / EJB 3.1 规范的工程;然后配置好容器级的 JNDI 数据源(比如 JBoss 下的 mysql-ds.xml),并在 persistence.xml 里引用它;最后把 EJB 模块打成 jar 包,部署到目标服务器(JBoss 或 GlassFish),通过控制台日志和 JNDI 客户端验证一下是否真的跑起来了。整个过程不需要额外装什么插件,但版本匹配和配置文件的一致性绝对不能马虎——细节决定成败。

MyEclipse企业级EJB项目创建与部署到容器

下面将详细介绍各个环节,逐步说明。

创建标准 EJB 项目

第一步,需要确认 MyEclipse 中已经把目标运行时配置好——比如 JBoss 4.2 / 7.1,或者 GlassFish 3.1。操作路径不复杂:File > New > Project > EJB Project。几个关键点要注意:

  • Project name 使用合法标识符,例如 StudentEJB,不要带空格或特殊字符,否则后续可能出现各种异常报错。
  • Specification Level 选择 Java EE 6.0(对应 EJB 3.1),如果容器支持更高版本,Java EE 7 也可以。J2EE 1.3 那套留给遗留系统中的 EJB 2.x,现在基本用不上。
  • Target Runtime 必须指向已经注册好的服务器运行时,否则后续部署会失败。
  • 勾选 Generate ejb-jar.xml deployment descriptor,这样后续需要手动调整部署描述符时有一个基础文件,省去从头编写的麻烦。
  • 如果计划使用 JPA,请给一个 Persistence Unit 名称,例如 studentPU,同时选好 JPA 版本(2.0 或 2.1)。

配置数据源与 persistence.xml

数据库连接不能硬编码在项目里——那样不够灵活,更换环境就需要修改代码。正确的做法是通过容器级数据源解耦。以 JBoss 为例:

  • 在 JBOSS_HOME/server/default/deploy/ 下新建一个 mysql-ds.xml,其中 stuMySqlDS 就是需要暴露的 JNDI 名称。
  • 然后在项目的 META-INF/persistence.xml 中, 内部写入:
    java:/stuMySqlDS。这样持久化单元就与数据源绑定。
  • 实体类使用 @Entity + @Table(name="student") 映射表;主键字段标上 @Id @GeneratedValue(strategy = GenerationType.IDENTITY)——如果数据库采用自增主键,这个策略最为简便。

生成并部署 EJB 模块

EJB 项目本身就是一个模块,可以打包进 EAR,也可以直接部署——具体取决于容器是否支持直接丢 jar。操作比较直观:

  • 右键项目 → Export > JAR file,导出为 StudentEJB.jar,打包时确认包含了 META-INF/ejb-jar.xml 和所有编译后的 class 文件。
  • 在 MyEclipse 的 Servers 视图中右键目标服务器(比如 JBoss),点击 Add and Remove,将 EJB 项目添加进去。这样可以通过 IDE 一键部署。
  • 启动服务器,控制台出现类似 Deployed "StudentEJB.jar" 的日志,基本就成功了。
  • 如果使用 GlassFish,还需要额外将 gf-client.jar 添加到测试客户端的构建路径中,否则通过 JNDI 查询远程接口时会抛出 ClassNotFoundException。

验证部署是否生效

部署完成后不能只看控制台没有报错就结束——需要主动验证才能放心。

  • 先检查服务器 deploy 目录下是否存在对应的 jar 文件(JBoss),或者 autodeploy 目录是否已完成解压(GlassFish)。文件存在,才算第一步到位。
  • 登录管理控制台,例如 JBoss AS 7 的管理地址为 http://localhost:9990,查看已部署的应用列表中是否有你的 EJB jar。
  • 最可靠的方法是编写一个简单的 Java 客户端,使用 InitialContext.lookup("java:global/StudentEJB/StudentDaoBean!com.example.BaseOperation") 测试远程调用。能够调通,才算真正部署成功。
  • 注意:JNDI 名称的格式因容器而异。JBoss 7+ 通常使用 java:jboss/exported/...,GlassFish 默认使用 java:global/...。不要混淆,否则客户端会提示“找不到对象”。