JBoss中的部署
部署目录:[JBOSS_HOME]/server/config-name/deploy ,JBoss不断的扫描目录的变化
你可以把下列文件拷贝到此目录下:
任何 jar库(其中的类将被自动添加到 JBoss的 classpath 中)
EJB JAR
WAR (Web Appliction aRrchive)
EAR (Enterprise Application aRchive)
包含 JBoss MBean 定义的 XML文件
包含 EJB JAR、WAR 或者 EAR 的解压缩内容,并以.jar、.war或者.ear结尾的目录
要重新部署任何上述文件, 用新版本的文件覆盖以前的就可以了。JBoss会根据比较文件的时间发现改变,然后部署新的文件。
在单独的 Tomcat 或 J2SE 中调用 EJB
根据应用的需要,把调用EJB所依赖的Jar包拷贝Classpath下
把 EJB 接口拷贝Classpath
客户端访问 EJB时必须明确设置 InitialContext环境属性
Properties props = new Properties();
props.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url","localhost:1099");
props.setProperty("java.naming.factory.url.pkgs","org.jboss.naming");
InitialContext ctx = newInitialContext(props);//如果客户端和jboss运行在同一个jvm,不需要传入props,也还可以在应用的 classpath下放置一个 jndi.properties 文件
在 JBOSS 中的 WEB应用调用 EJB
在Jboss下发布 WEB 应用,需要把 WEB应用打包成 war文件。另外在此环境下调用EJB不需要把EJB 的接口类放入/WEB-INF/classes/目录中,否则在调用 Stateful Bean 就会发生类型冲突,引发下面的例外。
java.lang.ClassCastException: $Proxy84
org.apache.jsp.StatefulBeanTest_jsp._jspService(org.apache.jsp.StatefulBeanTest_jsp:55)
发布在 Jboss下的客户端不需要明确设置 JNDI访问的上下文环境,可以直接通过 InitialContext ctx = newInitialContext()获得上下文环境,容器会自动赋给 InitialContext正确的环境
要发布 EJB 时必须把她打成*.jar文件,一个 EJB 打包后的目录结构如下
EJB 应用根目录
| -- com (你的.class文件)
| -- META-INF
| -- MANIFEST.MF(如果使用工具打包,该文件由工具自动生成)
<?xml version="1.0"?>
<project name="jartest"default="jar" basedir=".">
<property name="build.dir"value="${basedir}/build" />
<property name="build.classes.dir"value="${build.dir}/classes" />
<target name="jar" description="打包成Jar">
<jar jarfile="${basedir}/ejbfile.jar">
<fileset dir="${build.classes.dir}">
<include name="**/*.class"/>
</fileset>
<metainf dir="${basedir}/META-INF">
<include name="**" />
</metainf>
</jar>
</target>
</project>
进行 WEB应用打包
一个 Web 应用发布到 Jboss 服务器时需要打成 war 包
WEB 应用根目录
| -- **/*. jsp
| --WEB-INF
| -- web.xml
| -- lib
| -- *.*
| -- classes
| -- **/*.class
<?xml version="1.0"?>
<project name="wartest"default="war" basedir=".">
<target name="war" description="创建 WEB 发布包">
<war warfile="${basedir}/EJBTest.war"webxml="${basedir}/WEB-INF/web.xml">
<classes dir="${basedir}/WEB-INF/classes"><include name="**/*.class"/> </classes>
<lib dir="${basedir}/WEB-INF/lib"><includename="*.jar"/></lib>
<webinf dir="${basedir}/WEB-INF"><includename="*.*"/></webinf>
</war>
</target>
</project>
webxml 指明web.xml的位置,<classes>>指明 web的 classes 目录位置, <lib>指明 web 的 lib 目录位置, <webinf>指明 web 的 WEB-INF 目录位置
进行企业应用打包
一个完整的企业应用包含EJB模块和 WEB 模块,在发布企业应用时,我们需要把它打成*.ear文件,在打包前我们必须配置 application.xml 文件,该文件存放于打包后的 META-INF 目录。我们在 application.xml 文件中需要指定 EJB 模块和 WEB 模块的信息
一个 application.xml配置例子如下:
<application xmlns="http://java.sun.com/xml/ns/j2ee"version="1.4"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/application_1_4.xsd">
<display-name>EJB3Sample Application</display-name>
<module>
<web>
<web-uri>web.war</web-uri>
<context-root>web</context-root>
</web>
</module>
<module>
<ejb>ejb3.jar</ejb>
</module>
</application>
<web>指定 Web 模块,<ejb>指定 EJB 模块,Web 模块或者 EJB 模块都可以存在多个
一个企业应用打包后的目录结构应该如下
ear应用根目录
| -- ejb3.jar (你的 EJB 模块)
| -- web.war (你的 WEB 模块)
| -- META-INF
| -- MANIFEST.MF (如果使用工具打包,该文件由工具自动生成)
| -- application.xml
使用了第三方类库的 EJB打包
可以把第三方类库放入[JBOSS_HOME]\server\default\lib,不过此种方式重新部署 EJB应用时,第三方类库也要重新部署。适合放入应用服务器类路径的第三方类库通常是一些通用类库,如 JDBC 驱动。对于第三方类库最理想的选择是把他们放入 EJB Jar文件中。每一个 JAR 文件里都有一个manifest文件,这个文件由 jar工具自动创建,默认名字是 MANIFEST.MF。我们可以在 manifest文件中加入一个Class-Path
属性,引用它所依赖的 JAR 文件。我们可以手工编辑 manifest.mf 文件,在原有内容的基础上,添加Class-Path 属性。Class-Path 属性的值是用来搜索第三方类库的相对 URL。这个 URL总是相对于包含 Class-Path属性的组件。单个 Class-Path 属性内可以指定多个 URL,一个 manifest文件可以包含多个 Class-Path 属性。
假设本例 EJB 使用了两个第三方类库,名为:Upload.jar,Socket.jar,
修改后的 manifest.mf 文件内容如下:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.5.0_01-b08 (Sun MicrosystemsInc.)
Class-Path: Upload.jar Socket.jar
Class-Path: 与 Upload.jar之间有一空格分隔(缺少了空格就会发生找不到 jar文件),多个 jar文件之间需要用空格分隔。Class-Path 所在行还需要进行回车换行。
打完包后的目录结构
EJB 应用根目录
| -- com (注:ejb 类包)
| -- Upload.jar (注:第三方类库)
| -- Socket.jar (注:第三方类库)
| -- META-INF
| -- MANIFEST.MF(注:加入了 Class-Path 属性)
共用了第三方类库的 J2EE 应用打包
一个 J2EE 项目通常由多个 EJB 和 Web 应用构成,如果多个 EJB 及 Web 应用共用了一个第三方类库
假设一个 J2EE 项目含有两个 EJB 及一个 Web 应用,他们的文件名分别为:HelloWorld.jar,HelloChina.ja,MyEJBTest.war。这三个模块都使用了一个第三方类库,名为:Tools.jar
现在我们要做的是编辑这三个模块的 manifest.mf 文件,在原有内容的基础上,添加 Class-Path 属性。
三个模块的 jar文件修改后的 manifest.mf 文件内容如下:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.5.0_01-b08 (Sun MicrosystemsInc.)
Class-Path: Tools.jar
注意:Class-Path: 与 Tools.jar之间有一空格分隔(缺少了空格就会发生找不到 jar文件),Class-Path 所在行还需
要进行回车换行。
各个模块通过 manifest.mf 文件都能找到其所依赖的 Tools.jar文件。
打完包后的目录结构:
J2EE 应用根目录
| -- HelloWorld.jar
| -- META-INF
| -- MANIFEST.MF (注:加入了 Class-Path 属性, 引用它所依赖的 Tools.jar)
| -- HelloChina.jar
| -- META-INF
| -- MANIFEST.MF (注:加入了 Class-Path 属性, 引用它所依赖的 Tools.jar)
| -- MyEJBTest.war
| -- META-INF
| -- MANIFEST.MF (注:加入了 Class-Path 属性, 引用它所依赖的 Tools.jar)
| -- Tools.jar (注:第三方类库)
| -- META-INF
| --application.xml
| -- MANIFEST.MF(注:由工具自动生成,没有加入 Class-Path 属性)
如果第三方类库很多的情况下,显的有些零乱而不雅观可以建个文件夹专门用来存放第三方类库。如建个 lib 文件夹,把第三方类库放在此文件夹下。然后修改J2EE各模块的 manifest.mf 文件内容,修改后的内容如下:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.5.0_01-b08 (Sun MicrosystemsInc.)
Class-Path: lib/Tools.jar
分享到:
相关推荐
- **发布与订阅** (Publish and Subscribe, Pub/Sub) 消息传递通过主题进行。 #### 九、有状态与无状态Session Bean的区别 - **无状态Session Bean**:不保存与客户端相关的会话状态,适用于短期、无状态的服务...
2. **发布EJB3**:当EJB3应用部署到应用服务器时,服务器会自动将其注册到JNDI上下文中,使得它们可以通过JNDI查找服务找到。 3. **查找EJB3**:客户端代码使用Java的`InitialContext`类来初始化JNDI上下文,并通过...
【EJB发布Web服务一般步骤】 企业级JavaBean(Enterprise JavaBeans,简称EJB)是一种在Java平台上构建可扩展的、安全的、多用户的分布式应用的技术。EJB提供了用于开发和部署组件化的企业级应用程序的标准框架。...
客户端代码使用JNDI(Java Naming and Directory Interface)查找并调用远程EJB。在`Client.java`中,配置了JNDI上下文属性,包括命名工厂、URL包和提供者的URL,这些属性指定了服务器的IP地址和端口。客户端通过`...
EJB 3.0 版本发布于2004年,它引入了许多重要的改进,使得开发变得更加简单和高效。这些改进包括注解支持、简化部署描述符以及对POJOs的支持等。 #### 二、EJB 3.0 开发环境搭建 为了开发和运行EJB 3.0应用程序,...
### EJB知识与运行环境设置 #### EJB概述 企业JavaBeans (EJB) 是Java平台对企业级应用程序组件的一种标准化模型。它属于Java EE规范的一部分,主要用于构建可移植的企业级应用。EJB定义了三种主要的Bean类型: 1...
**EJB 3.0 容器模型与 WebService** Enterprise JavaBeans(EJB)是Java平台上用于构建可扩展、安全且事务处理能力强的企业级应用的框架。在EJB 3.0版本中,引入了许多重要的改进,使得开发更加简化,更接近标准...
- **JBOSS集成环境中的WEB应用调用EJB**: - 在同一服务器上配置JBOSS和Tomcat以实现无缝通信。 #### 3. 开发前的准备 - **熟悉JBOSS目录结构**: - `bin`:包含启动脚本。 - `client`:用于客户端连接的JAR...
### EJB 3.1 深入浅出 #### 一、EJB 3.1 的背景与改进 ...随着EJB 3.1 最终草案的发布,我们正逐渐接近该版本的正式发布。可以预见,EJB 3.1 将继续推动EJB技术的发展,并在企业级应用领域发挥更大的作用。
在JBOSS6.0.0M4中,EJB3的实现进一步加强了与Java Persistence API (JPA)和Java Transaction API (JTA)的集成,提供了数据持久化和事务管理的能力。JPA允许开发者通过对象关系映射(ORM)将Java类映射到数据库表,而...
这些步骤和知识点展示了在WebSphere上部署EJB 3应用程序的基本流程,包括项目的创建、打包、部署以及EJB的调用方式。理解并熟练掌握这些步骤对于开发和维护基于Java EE的分布式应用程序至关重要。
本教程主要介绍如何在Java客户端访问通过Glassfish发布的EJB,特别是EJB3.0的安全特性。 首先,我们要创建一个包含简单会话bean(session bean)的企业应用程序,并建立一个Java类库项目,该项目包含了会话bean的...
### EJB基础知识与编程方法详解 ...随着EJB3.0的发布,它的使用变得更加简单和灵活,同时也更加符合现代开发者的使用习惯。无论是对于初学者还是经验丰富的开发者来说,掌握EJB的基本原理和编程技巧都是非常有价值的。
1. EJB的历史与发展:EJB规范自1998年首次发布以来,已经经历了多个版本的更新,每个新版本都引入了一些新的特性和改进。了解EJB的发展历程有助于理解其设计理念和使用场景。 2. EJB的架构和组件类型:EJB架构主要...
EJB 3.0的发布极大地简化了EJB的开发模型,引入了许多新特性,使得开发者可以更高效地实现业务逻辑。以下是对EJB 3.0开发规范的详细解析: 1. **持久化机制(Persistence)**: EJB 3.0引入了JPA(Java ...
依赖注入的基本概念是,当一个对象(调用者)需要另一个对象(被调用者)协助时,不再由调用者直接创建被调用者的实例,而是由外部容器(如Spring或EJB容器)创建并注入到调用者中。这种控制权的反转,即由对象本身...
EJB技术自1999年发布以来,经历了多个版本的发展,从EJB 1.1到EJB 3.x,不断演进以适应现代开发需求。在面试中,EJB相关的问题常常被用来测试候选人在企业级Java开发领域的专业素养。 94、EJB 2.0的内容和场合: ...
EJB 2.0 是EJB技术的一个里程碑,发布于2003年,引入了许多重要的改进和新特性,旨在简化开发过程并提高可维护性。 **1. EJB 架构概述** EJB 2.0 主要由三种类型的组件组成:Entity Beans(实体Bean)、Session ...