第三篇(EJB Client端的开发)
- 建立一个Dynamic Web Project,项目名称为EJBClient。项目结构为:
- 还记得上一篇中给Server端的项目添加Maven支持了吗,这里就用到了。右键那个项目->run as->maven build...,run 完之后你就可以在项目根目录的target下面找到此项目打成的jar包了。 E:\project\J2EE\MyEJBServer\target\MyEJBServer-0.0.1-SNAPSHOT.jar
[INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Building MyEJBServer [INFO] task-segment: [package] [INFO] ------------------------------------------------------------------------ [INFO] [resources:resources {execution: default-resources}] [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] Copying 1 resource [INFO] [compiler:compile {execution: default-compile}] [INFO] Nothing to compile - all classes are up to date [INFO] [resources:testResources {execution: default-testResources}] [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory E:\project\J2EE\MyEJBServer\src\test\resources [INFO] [compiler:testCompile {execution: default-testCompile}] [INFO] Not compiling test sources [INFO] [surefire:test {execution: default-test}] [INFO] Tests are skipped. [INFO] [ejb:ejb {execution: default-ejb}] [INFO] Building EJB MyEJBServer-0.0.1-SNAPSHOT with EJB version 3.1 [INFO] Building jar: E:\project\J2EE\MyEJBServer\target\MyEJBServer-0.0.1-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3 seconds [INFO] Finished at: Thu May 09 11:19:37 CST 2013 [INFO] Final Memory: 11M/28M [INFO] ------------------------------------------------------------------------
- 把这个jar包引入到此项目的build path中
- 开发EJBUtil用来获取EJB
package com.synnex.ejb.util; import java.util.Properties; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; public class EjbUtil { private static Context initialContext; private static final String PKG_INTERFACES = "org.jboss.ejb.client.naming"; private static Context getInitialContext() throws NamingException{ if(initialContext == null){ Properties prop = new Properties(); prop.put(Context.URL_PKG_PREFIXES, PKG_INTERFACES); initialContext = new InitialContext(prop); } return initialContext; } public static Object lookup(String jndi) throws Exception{ return getInitialContext().lookup(jndi); } private static Object lookup(Class<?> serviceClass, String moduleName, String beanName) throws Exception { final String appName = ""; //ear包的名字,如果没有ear包,那么这个就是空字符串就行 final String distinctName = ""; final String interfaceName = serviceClass.getName(); String jndi = "ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + interfaceName; System.out.println("JNDI: " + jndi); return getInitialContext().lookup(jndi); } public static Object lookupRemoteBizService(Class<?> serviceClass, String moduleName) throws Exception{ String beanName = serviceClass.getSimpleName().replace("Remote", ""); return lookup(serviceClass, moduleName, beanName); } }
- 开发Servlet用来作为程序的入口点
package com.synnex.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.hua.ejb.LoginBeanRemote; import com.synnex.ejb.util.EjbUtil; /** * Servlet implementation class TestRemoteEJB */ @WebServlet("/TestRemoteEJB") public class TestRemoteEJB extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public TestRemoteEJB() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { LoginBeanRemote loginBean = (LoginBeanRemote)EjbUtil.lookupRemoteBizService(LoginBeanRemote.class, "MyEJBServer"); System.out.println(loginBean.login("ejb", "123456")); System.out.println(loginBean.login("ejb", "qwerty")); } catch (Exception e) { e.printStackTrace(); } } }
- 拷贝EJB server端程序的jar包到Client 的Jboss Server的modules下面。目录位置D:\server\jboss-eap-6.0\modules\com\huag\ejb\main,然后添加module.xml。
<module xmlns="urn:jboss:module:1.1" name="com.huag.ejb"> <resources> <resource-root path="MyEJBServer-0.0.1-SNAPSHOT.jar"/> </resources> <dependencies> </dependencies> </module>
- 为项目部署到jboss7下面,添加jboss-deployment-structure.xml,到WEB-INF下面。
<jboss-deployment-structure> <deployment> <dependencies> <module name="com.huag.ejb" /> </dependencies> </deployment> </jboss-deployment-structure>
- 发布项目到Jboos,然后启动JBoss,看是否能够启动成功。
下一篇为最终篇,我们将讲解Client Server的配置和展示分布式调用。
相关推荐
在JBoss 7及以上版本中,对EJB的配置过程相较于之前的版本有所变化,主要涉及到两个关键的配置文件:`jboss-ejb3.xml`和`ejb-jar.xml`。 `ejb-jar.xml`文件是EJB模块的标准配置文件,遵循Java EE规范。在这个文件中...
JBossTools-ALL-win32-3.0.0.CR2 是一个专为Windows操作系统设计的集成开发环境(IDE)扩展包,它基于Eclipse平台,提供了丰富的工具集来支持JBoss相关技术的开发、部署和管理。这个版本是3.0.0的候选发布2(CR2),...
8. **Java 远程处理 EJB**:Enterprise JavaBeans (EJB) 是 Java EE 平台的核心部分,EAP 6.4 支持 EJB 3.1 规范,包括无状态会话 bean、有状态会话 bean、实体 bean 和消息驱动 bean 等。 9. **Web 服务支持**:...
JBoss EJB 集群示例 安装 在域模式下运行干净的 JBoss EAP 6.3 ./jboss-eap-6.3/bin/domain.sh 运行安装脚本 ./jboss-eap-6.3/bin/jboss-cli.sh -c --file=setup.cli 在服务器上部署文件ejb-cluster.jar并分配给...
JBoss EAP(Enterprise Application Platform),是Red Hat公司开发的一款基于Java EE(现在称为Jakarta EE)的应用服务器,它为开发者提供了一个全面的框架来构建、部署和管理企业级应用程序。标题中的"jboss-eap-...
JBoss支持EJB 1.1和EJB 2.0 EJB3.0的规范,它是一个管理EJB的容器和服务器。类似于Sun's J2SDK Enterprise Edition(J2EE),JBoss的目标是一个源代码开放的J2EE环境。但是JBoss核心服务仅是提供EJB服务器。JBoss不...
JBoss EAP 6.3.0是一款基于Java的企业级应用服务器,由Red Hat公司开发并维护,是Java EE(企业版)平台的实现。它提供了全面的中间件服务,支持多种应用程序,如Web应用程序、SOA(面向服务的架构)、交易处理、...
1. **Java EE 6支持**:JBoss EAP 6.2.0完全兼容Java EE 6规范,这意味着它可以支持诸如JavaServer Faces (JSF),Java Persistence API (JPA),Java Message Service (JMS)以及Enterprise JavaBeans (EJB)等关键组件...
1. **Java EE 6支持**:JBoss EAP 6.3.0遵循Java Platform, Enterprise Edition (Java EE) 6标准,提供包括Servlet 3.0、JPA 2.0、EJB 3.1、JSF 2.1等在内的服务和API。 2. **模块化架构**:EAP 6.3引入了模块化...
3. **Java EE兼容性**:作为Java EE的一部分,JBoss Web支持EJB(Enterprise JavaBeans)、JMS(Java Message Service)、JTA(Java Transaction API)等服务,为开发企业级应用提供了一个全面的框架。 4. **安全...
JBoss AS 4.2.3.GA(Application Server)是Red Hat公司开发的一款开源Java应用服务器,它基于Java EE(Enterprise Edition)5规范,提供了全面的企业级服务,包括EJB(Enterprise JavaBeans)、JMS(Java Message ...
本篇文章将详细讲解"jboss-3.2.5.zip"这一版本的JBoss安装、配置及EJBCA的安装和设置过程。 一、JBoss 3.2.5简介 JBoss 3.2.5是在2004年发布的一个版本,它是Java社区的重要里程碑,为开发者提供了轻量级、开源的...
3. **增强的EJB3支持**:JBoss 5对Java Enterprise Edition 5中的EJB3规范进行了全面支持,提供了更简单的编程模型,减少了大量XML配置,使开发过程更为简便。 4. **Web服务支持**:通过JAX-WS和JAX-RS,JBoss 5...
JBoss Enterprise Application Platform (EAP) 7.0 是一个基于Java EE 7规范的开源应用服务器,由Red Hat公司开发并维护。这个版本在Java企业级开发领域中扮演着重要角色,因为它提供了全面的框架和服务,使得开发、...
这些可以在`$JBOSS_HOME/server/default/conf/jboss-service.xml`或`standalone.xml`(如果是JBoss EAP 7及以上版本)中修改。 6. **安全管理** JBoss AS 5支持角色基访问控制(RBAC)和用户认证。在`$JBOSS_HOME/...
在使用JBoss进行EJB3.0开发时,正确的环境变量配置是确保应用程序能够正确部署和运行的基础。通过上述步骤,开发者可以确保JBoss能够在预期的环境下正确工作,并且能够充分利用其提供的各种服务和技术。 #### 五、...
为了开始使用JBoss EAP 7.0,你需要下载压缩包"jbosseap-7.0",解压后按照官方文档的指引进行安装和配置。首先,你需要设置环境变量,然后启动服务器,接着可以通过管理控制台或CLI部署你的应用。如果遇到问题,可以...
10. **framework**:这可能是一个框架或库的集合,可能包含自定义的组件或第三方库,用于简化开发工作。 11. **src**:源代码目录,包含了项目的Java源代码,可能包括EJB组件、DAO(数据访问对象)、业务逻辑层...
【JBOSS开发人员指南】 在IT行业中,JBoss是一个非常重要的开源中间件,由Red Hat公司维护,主要用于实现企业级应用服务器的功能。本指南旨在为开发者提供全面、深入的JBoss开发知识,帮助他们更好地理解和运用这个...
JBoss JMS(Java Message Service)是Red Hat公司开发的JMS实现,它是JBoss Application Server的一部分,提供了一个标准、可靠且面向消息的中间件服务。在分布式环境中,JMS作为异步通信的核心组件,允许应用程序...