EJB 的部署一向是个头疼的问题,在部署行为和默认设置上,应用服务器之间,甚至是同一服务器的不同版本之间都可能有着很大的差异。这几天刚用上JBoss 5.10GA,碰上一个傻帽问题,发现原因后差点没气得呛死。
事情是这样,照规矩我在拿到新的服务器时都要先写一个HelloWorld试验,图方便就在MyEclipse里直接建立了一个EAR项目(PlayEJB1),同时选择新建一个EJB项目和一个WEB项目。EJB项目里写了一个HelloStatelessBean,Web项目里新建一个JSP写好JNDI查找的字串如下:
"HelloStatelessBean/local"
实验证明,JNDI查找失败,抛出NameNotFoundException。
我非常奇怪,HelloStatelessBean是这个EJB 的ejbName,这在JBoss部署项目时在控制台里打印得白纸黑字的,怎么可能NameNotFound?抱着试一试的态度,我把EAR项目卸除,然后仅仅部署里面的EJB项目,这一次居然试验成功没有异常!由此想到,JBoss在部署EAR项目时很可能采用了与单独部署EJB项目不同的JNDI命名策略。仔细观察控制台消息,几行平日让我熟视无睹的INFO日志让我恍然大悟:
23:14:36,093 INFO [EJBContainer] STARTED EJB: com.jeff.ejb.HelloStatelessBean ejbName: HelloStatelessBean
23:14:36,140 INFO [JndiSessionRegistrarBase] Binding the following Entries in Global JNDI:
PlayEJB1/HelloStatelessBean/remote - EJB3.x Default Remote Business Interface
PlayEJB1/HelloStatelessBean/remote-com.jeff.ejb.HelloStatelessRemote - EJB3.x Remote Business Interface
PlayEJB1/HelloStatelessBean/local - EJB3.x Default Local Business Interface
PlayEJB1/HelloStatelessBean/local-com.jeff.ejb.HelloStatelessLocal - EJB3.x Local Business Interface
原来如此!EAR项目里的EJB的JNDI,被JBoss加上了EAR项目名作为前缀,单独部署EJB项目时JNDI这样查"HelloStatelessBean/local",而在EAR里变成了"PlayEJB1/HelloStatelessBean/local"。其实JBoss这样做是有些道理的,最起码有了EAR项目名称作为命名空间,EJB的重名可能大大减少。但是开发者就倒霉了,每个服务器都有自己的个性,开始干活之前还要一个个分别调教,太累了。
分享到:
相关推荐
本文将深入探讨在JBoss应用服务器上部署EJB的详细步骤,这对于理解Java EE架构和进行实际开发至关重要。 一、EJB简介 EJB是Java EE规范的一部分,它提供了一种标准的方式来实现业务逻辑,分为三种主要类型:会话...
3. **部署过程**:将EJB的JAR文件(包含bean类、接口和部署描述符)及所有依赖库上传到服务器,然后通过服务器管理控制台或命令行工具进行部署。 4. **测试验证**:部署后,可以编写客户端代码或使用服务器提供的...
- 利用JBoss提供的管理控制台或命令行工具进行应用的部署、监控和调试。 7. **性能优化**: - 考虑缓存策略,如使用EHCache缓存频繁查询的结果,提高响应速度。 - 使用连接池管理数据库连接,提高资源利用率。 ...
部署EJB涉及将打包好的EJB JAR或EAR文件上传到应用服务器的过程。以下是一般步骤: 1. **选择应用服务器**:常见的应用服务器如WildFly、TomEE、WebLogic等都支持EJB部署。 2. **配置服务器**:根据服务器文档配置...
本书作为Richard Monson-Haefel所著《Enterprise JavaBeans》第三版的补充材料,详细介绍了如何在JBoss应用服务器上构建和部署EJB应用。 #### 二、EJB基础知识 **1. EJB(Enterprise JavaBeans)简介** - **定义*...
- 部署到WebLogic:使用WebLogic管理控制台或WLST(WebLogic Scripting Tool)将应用程序部署到服务器或集群。 - 配置客户端:获取Bean的本地接口,并通过JNDI查找来实例化Bean。 4. ** ejb子文件夹内容**: 在...
本文将围绕“Jboss下开发ejb应用之一会话bean的应用”这一主题,深入探讨如何在Jboss应用服务器上开发和部署会话Bean,以及涉及到的相关工具和源码。 会话Bean是EJB的一种类型,它代表了业务逻辑组件,为客户端提供...
【标题】"maven-jboss-plugin部署EJB"涉及到的是使用Maven插件来管理和部署Java企业版(Java EE)中的EJB(Enterprise JavaBeans)组件到JBoss应用服务器的过程。这一技术对于开发者来说,是将Java后端服务集成到...
4. **创建部署文件**:在部署EJB时,可能需要一个应用部署描述符(如application.xml),它定义了应用程序的结构以及各个模块之间的关系。 5. **部署到WebLogic**:使用WebLogic管理控制台或命令行工具(如WLST - ...
此外,还会讲解如何在Jboss中部署EJB应用,包括创建部署描述符、打包应用、以及通过管理控制台或命令行进行部署。 "编写JBoss程序必须导入的包"这部分内容涉及到Java编程中使用的库和API,如Java EE API、Jboss特定...
在JBOSS7中部署EJB3应用,我们需要以下步骤: 1. **环境准备**:确保已经安装并配置好JBOSS7服务器,这通常涉及到下载JBOSS AS 7,解压到指定目录,并启动服务器。 2. **创建EJB项目**:使用IDE如Eclipse或...
WebLogic Server是Oracle公司的一款企业级Java应用服务器,它提供了对EJB(Enterprise JavaBeans)的强大支持。EJB是Java EE平台的核心组件,用于构建分布式、面向服务的企业级应用程序。本篇文章将深入探讨在...
最后,将EJB项目打包成JAR或WAR文件,部署到JBoss应用服务器。可以通过命令行工具,如jboss-cli.sh或管理控制台完成部署。部署成功后,客户端就可以通过JNDI查找并调用实体Bean的方法。 总结,开发EJB应用,特别是...
它提供了强大的平台支持Java EE应用程序的部署与运行,包括但不限于EJB容器、JSP/Servlet引擎、JMS消息服务等。 #### 二、WebSphere应用服务器部署流程 本节主要介绍如何在Windows 2000或2003系统上部署WebSphere...
首先,我们要理解WebLogic服务器是Oracle公司的一款企业级Java EE应用服务器,它提供了对Java应用程序和Web服务的全面支持。在WebLogic中部署Web应用通常包括以下步骤: 1. **环境准备**:确保已安装并配置好...
- 部署EJB至服务器,启动并运行发送方程序,在控制台将看到消息处理的输出。 #### 二、EJB3消息驱动Bean ##### 1. **EJB3简介** EJB3引入了更为简洁的编程模型,简化了MDB的开发过程。相较于EJB2,EJB3的MDB开发...
- 在WebLogic管理控制台中,创建一个新的应用程序部署,上传并配置这个jar文件。 - 配置EJB的JNDI名称,通常通过`@Stateless(mappedName = "Company")`中的`mappedName`来指定。 5. **编写客户端访问**: - 创建...
5. **部署到WebSphere**:将EJB JAR或EAR文件上传到WebSphere应用服务器,通过管理控制台或命令行工具进行部署。WebSphere提供了强大的管理功能,如集群、负载均衡、热部署等。 6. **测试与调试**:部署后,可以...