时间:2005-11-03
作者:
Ajay Vohra,
Deepak Vohra在J2EE项目的开发阶段,开发人员通常使用的是JBoss开源应用服务器。而在生产阶段,商业应用服务器BEA WebLogic Server因其增强的特性成为不错的选择。遗憾的是,在JBoss中开发的应用程序不能在WebLogic Server上直接部署,需要进行修改。
原因是WebLogic Server的部署描述符与JBoss的部署描述符不同。将应用程序迁移到WebLogic上的方法是把特定于供应商的部署描述符转换为WebLogic部署描述符。在本文中,我们将把一个在JBoss中开发的EJB应用程序迁移到WebLogic应用服务器上,其中使用的数据库是MySQL。
初步安装
下载和安装BEA WebLogic Server(www.bea.com/framework.jsp?CNT=overview.htm &FP=/content/products/weblogic/server)。创建一个服务器域。下载MySQL JDBC驱动程序jar文件(www.mysql.com/products/connector/j/)和MySQL数据库服务器(www.mysql.com/products/mysql/)。开发一个Java应用程序或获取一个XSLT实用工具,使用XSLT把JBoss部署描述符转换为WebLogic部署描述符。
在部署描述符转换前,在JBoss中开发的应用程序不能在WebLogic中部署。在本文中,我们将通过转换部署描述符的方法,把一个在JBoss中开发的实体EJB应用程序示例迁移到WebLogic应用服务器上。
示例应用程序包含一个Catalog实体EJB。清单1中显示的是该EJB的bean类(CatalogBean.java)。远程接口(Catalog.java)和home接口(CatalogHome.java)显示在清单2和清单3中。把JBoss EJB应用程序部署到WebLogic中并不需要修改实体EJB类,只需要修改该EJB的部署描述符。
清单1:CatalogBean.java
import javax.ejb.*;
abstract public class CatalogBean implements EntityBean {
private EntityContext ctx;
public CatalogBean() {};
public void setEntityContext(EntityContext ctx) {
this.ctx = ctx;
}
public void unsetEntityContext() {
this.ctx = null;
}
abstract public String getCatalogId();
abstract public void setCatalogId(String catalogId);
abstract public String getJournal();
abstract public void setJournal(String journal);
abstract public String getPublisher();
abstract public void setPublisher(String publisher);
public void ejbActivate() {
}
public void ejbPassivate() {
}
public void ejbLoad() {
}
public void ejbStore() {
}
public void ejbRemove()
throws RemoveException
{
}
public String ejbCreate(String catalogId)
throws CreateException
{
setCatalogId(catalogId);
return null;
}
public void ejbPostCreate(String catalogId)
{
}
}
清单2:Catalog.java
import java.rmi.RemoteException;
import javax.ejb.*;
public interface Catalog extends EJBObject {
public String getCatalogId()
throws RemoteException;
public String getJournal()
throws RemoteException;
public String getPublisher()
throws RemoteException;
public void setJournal(String journal)
throws RemoteException;
public void setPublisher(String publisher)
throws RemoteException;
}
清单3:CatalogHome.java
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
import javax.ejb.FinderException;
import java.rmi.RemoteException;
public interface CatalogHome extends EJBHome {
public Catalog create(String catalogId)
throws CreateException, RemoteException;
public Catalog findByPrimaryKey(String catalogId)
throws FinderException, RemoteException;
}
配置WebLogic JDBC
本小节描述在WebLogic Server上配置JDBC连接和MySQL数据库的方法。首先配置一个JDBC连接池,接下来配置用于访问JDBC连接池的JNDI数据源,然后把MySQL数据库驱动程序jar文件(mysql-connector-java-3.0.16-ga-bin.jar)添加到示例服务器的CLASSPATH变量中。WebLogic Server的CLASSPATH变量是在<BEA>\user_projects\domains\mydomain\startWebLogic脚本文件中进行设置的。双击该脚本文件,启动WebLogic示例服务器。服务器在端口7001启动。通过URL http://localhost:7001/console来登录WebLogic管理控制台(Administration Console)。在显示出来的管理控制台登录页面上输入用户名和口令,就可以登录到管理控制台。
在管理控制台中选择Services>JDBC节点。要配置JDBC连接池,右击Connection Pools节点,选择Configure a new JDBCConnectionPool。在Choose database frame displayed中选择MySQL作为Database Type(数据库类型),选择MySQL's Driver (Type 4)作为Database Driver(数据库驱动程序)。单击Continue按钮。接着指定JDBC连接的连接属性。在Database Name栏指定示例MySQL数据库的名字test,在Host Name栏指定localhost,在Database User Name栏指定root。用root用户名登录MySQL数据库不需要口令,但WebLogic Server需要为用户名指定一个口令。单击Continue按钮继续。
在Test database connection框中的Driver Classname栏指定MySQL驱动程序com.mysql.jdbc.Driver,该驱动程序用于建立与MySQL数据库的连接。在URL栏指定jdbc:mysql://localhost/test作为连接数据库的URL。单击Test Driver Configuration按钮,测试JDBC到数据库的连接。如果已建立连接,会显示内容为“connection successful”的消息。在Create and deploy框中,选择将要部署连接池的服务器。单击Create and deploy按钮,部署JDBC连接池到服务器上。配置好的连接会部署到示例服务器上,同时该连接池的节点被添加到JDBC>Connection Pools节点中。要修改连接池配置,选择该连接池节点,并修改各个选项卡上的设置:General、Target and Deploy、Monitoring、Control、Testing、Connections。
接下来,要配置WebLogic Server上的数据源。右击Services>JDBC节点,选择Configure a new JDBCTxDataSource,指定一个数据源名称,在JNDI Name栏为数据源指定JNDI名称,例如MySQLDS。单击Continue按钮继续。在Connect to connection pool框中,从连接池列表中选择前一节所配置的连接池,单击Continue按钮继续。在Target the data source框中选择一个服务器作为数据源的目标服务器,然后单击Create按钮。配置好的数据源会部署到示例服务器上,该数据源的节点被添加到数据源节点中。要修改数据源,选择该数据源的节点,并修改各个选项卡上的设置,包括Configuration、Target和Deploy。该数据源可以通过在数据源配置中所指定的JNDI名称MySQLDS来获取。
转换JBoss EJB应用程序
前一节已经在WebLogic Server上配置了MySQL数据库。下面我们将把JBoss EJB应用程序转换成WebLogic EJB应用程序,这涉及到部署描述符的转换。JBoss实体EJB应用程序由以下部分组成;EJB部署描述符(ejb-jar.xml、jboss.xml和jbosscmp-jdbc.xml)、bean类(CatalogBean.java)、远程接口(Catalog.java)和home接口(CatalogHome.java)。
要在JBoss服务器上部署实体EJB,应该创建一个EJB JAR文件。该文件结构如下:
META-INF/
ejb-jar.xml
jboss.xml
jbosscmp-jdbc.xml
CatalogBean.class
Catalog.class
CatalogHome.class
部署描述符中指定了EJB的结构化信息和应用程序汇编信息。结构化信息中包含将这个EJB指定为会话EJB还是实体EJB。ejb-jar.xml部署描述符中的应用程序汇编信息是在assembly-descriptor元素中指定的。JBoss中实体EJB的部署描述符为ejb-jar.xml、jboss.xml和jbosscmp-jdbc.xml,而WebLogic中对应的部署描述符依次是ejb-jar.xml、weblogic-ejb-jar.xml和weblogic-cmp-rdbms-jar.xml。下面我们将介绍这些文件间的转换。
ejb-jar.xml部署描述符对于WebLogic和JBoss是相同的,清单4显示了示例实体EJB的该部署描述符,其中定义了一个名为Catalog的实体EJB,它包含3个CMP字段:catalogId、journal和publisher,主键字段是catalogId。
清单4:ejb-jar.xml
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC
"-//Sun Microsystems, Inc.//DTD Enterprise
JavaBeans 2.0//EN"
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<enterprise-beans>
<entity>
<ejb-name>Catalog</ejb-name>
<home>com.ejb.CatalogHome</home>
<remote>com.ejb.Catalog</remote>
<ejb-class>com.ejb.CatalogBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.String</prim-key-class>
<reentrant>False</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>CatalogBean
</abstract-schema-name>
<cmp-field>
<field-name>catalogId</field-name>
</cmp-field>
<cmp-field>
<field-name>journal</field-name>
</cmp-field>
<cmp-field>
<field-name>publisher</field-name>
</cmp-field>
<primkey-field>catalogId</primkey-field>
</entity>
</enterprise-beans>
</ejb-jar>
从weblogic-ejb-jar.xml到jboss.xml的转换
weblogic-ejb-jar.xml和jboss.xml是特定于供应商的EJB部署描述符。为了在WebLogic应用服务器上部署JBoss EJB应用程序,要将jboss.xml转换成weblogic-ejb-jar.xml。jboss.xml中的根元素是jboss,weblogic-ejb-jar.xml中的根元素是weblogic-ejb-jar。对于jboss.xml和weblogic-ejb-jar.xml,都可以在jndi-name或local-jndi-name元素中指定EJB的JNDI名称。清单5显示的是示例实体EJB的jboss.xml部署描述符。weblogic-ejb-jar.xml部署描述符中的DOCTYPE元素如下:
<!DOCTYPE weblogic-ejb-jar PUBLIC
"-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN"
"http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd" >
jboss.xml部署描述符中的DOCTYPE元素如下:
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.0//EN"
"http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd">
清单5:jboss.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.0//EN"
"http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd">
<jboss>
<enterprise-beans>
<entity>
<ejb-name>Catalog≪/ejb-name>
<jndi-name>com.ejb.CatalogHome≪/jndi-name>
</entity>
</enterprise-beans>
</jboss>
使用定制的XSLT样式表,即weblogic-ejb-jar.xslt(参见清单6),将ejb-jar.xml部署描述符转换为weblogic-ejb-jar.xml部署描述符。该样式表创建了weblogic-ejb-jar.xml,它是JBoss上的jboss.xml文件在WebLogic上的等效。清单7中显示的是weblogic-ejb-jar.xslt样式表所生成的weblogic-ejb-jar.xml文件。
清单6:weblogic-ejb-jar.xslt
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0" xmlns:xsl=
"http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" doctype-public=
"-//BEA Systems, Inc.//DTD WebLogic 8.1.0
EJB//EN" doctype-system=
"http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd"/>
<xsl:template match="/jboss">
<weblogic-ejb-jar>
<xsl:apply-templates select="enterprise-beans/entity"/>
</weblogic-ejb-jar>
</xsl:template>
<xsl:template match="entity">
<weblogic-enterprise-bean>
<ejb-name><xsl:value-of select="ejb-name"/></ejb-name>
<entity-descriptor>
<persistence>
<persistence-use>
<type-identifier>WebLogic_CMP_RDBMS</type-identifier>
<type-version>7.0</type-version>
<type-storage>META-INF/
weblogic-cmp-rdbms-jar.xml</type-storage>
</persistence-use>
</persistence>
</entity-descriptor>
<jndi-name><xsl:value-of select="jndi-name"/></jndi-name>
</weblogic-enterprise-bean>
</xsl:template>
</xsl:stylesheet>
清单7:weblogic-ejb-jar.xml
<?xml version="1.0"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC
"-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN"
"http://www.bea.com/servers/wls810
/dtd/weblogic-ejb-jar.dtd" >
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>Catalog</ejb-name>
<entity-descriptor>
<persistence>
<persistence-use>
<type-identifier>WebLogic_CMP_RDBMS</type-identifier>
<type-version>7.0</type-version>
<type-storage>META-INF/weblogic-cmp
-rdbms-jar.xml</type-storage>
</persistence-use>
</persistence>
</entity-descriptor>
<jndi-name>com.ejb.CatalogHome</jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>
从jbosscmp-jdbc.xml到weblogic-cmp-rdbms-jar.xml的转换
weblogic-cmp-rdbms-jar.xml中指定了CMP实体EJB的数据库持久性信息。该文件包含实体EJB的表格名称、连接数据库的数据源和与该EJB CMP字段相对应的列。用于指定CMP实体EJB持久性信息的JBoss部署描述符是jbosscmp-jdbc.xml,清单8显示了示例EJB的jbosscmp-jdbc.xml。
清单8:jbosscmp-jdbc.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jbosscmp-jdbc PUBLIC
"-//JBoss//DTD JBOSSCMP-JDBC 4.0//EN"
"http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_4_0.dtd">
<jbosscmp-jdbc>
<defaults>
<datasource>java:/MySqlDS</datasource>
<datasource-mapping>mySQL</datasource-mapping>
</defaults>
<enterprise-beans>
<entity>
<ejb-name>Catalog</ejb-name>
<create-table>true</create-table>
<table-name>Catalog</table-name>
<cmp-field>
<field-name>catalogId</field-name>
<column-name>catalogId</column-name>
</cmp-field>
<cmp-field>
<field-name>journal</field-name>
<column-name>journal</column-name>
</cmp-field>
<cmp-field>
<field-name>publisher</field-name>
<column-name>publisher</column-name>
</cmp-field>
</entity>
</enterprise-beans>
</jbosscmp-jdbc>
weblogic-cmp-rdbms-jar.xml中根元素是weblogic-rdbms-jar,jbosscmp-jdbc.xml中根元素是jbosscmp-jdbc。weblogic-cmp-rdbms-jar.xml文件中的data-source-name元素指定了连接到数据库的数据源,它等效于jbosscmp-jdbc.xml部署描述符中的datasource元素。weblogic-cmp-rdbms-jar.xml文件中的field-map元素指定了实体EJB CMP字段与数据库中表的列之间的映射关系,它等效于jbosscmp-jdbc.xml部署描述符中的cmp-field元素。weblogic-cmp-rdbms-jar.xml文件中dbms-column元素指定了一个列的名称,它等效于jbosscmp-jdbc.xml部署描述符中的column-name元素。
weblogic-cmp-rdbms-jar.xml文件中的DOCTYPE如下:
<!DOCTYPE weblogic-rdbms-jar PUBLIC
'-//BEA Systems, Inc.//DTD WebLogic 8.1.0
EJB RDBMS Persistence//EN'
'http://www.bea.com/servers/wls810/dtd
/weblogic-rdbms20-persistence-810.dtd'>
jbosscmp-jdbc.xml文件中的DOCTYPE如下:
<!DOCTYPE jbosscmp-jdbc PUBLIC "
-//JBoss//DTD JBOSSCMP-JDBC 4.0//EN"
"http://www.jboss.org/j2ee/dtd
/jbosscmp-jdbc_4_0.dtd">
使用定制的XSLT样式表(weblogic-cmp-rdbms-jar.xslt)(参见清单9)进行jbosscmp-jdbc.xml到weblogic-cmp-rdbms-jar.xml的转换。该样式表创建了weblogic-cmp-rdbms-jar.xml,它是JBoss上的jbosscmp-jdbc.xml文件在WebLogic上的等效。清单10中显示的是weblogic-cmp-rdbms-jar.xml。
清单9:weblogic-cmp-rdbms-jar.xslt
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" doctype-public=
"-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB
RDBMS Persistence//EN"
doctype-system="http://www.bea.com/servers
/wls810/dtd/weblogic-rdbms20-persistence-810.dtd"/>
<xsl:template match="/jbosscmp-jdbc">
<weblogic-rdbms-jar>
<xsl:apply-templates select="enterprise-beans/entity"/>
<create-default-dbms-tables>
AlterOrCreate</create-default-dbms-tables>
</weblogic-rdbms-jar>
</xsl:template>
<xsl:template match="entity">
<weblogic-rdbms-bean>
<ejb-name><xsl:value-of select="ejb-name"/></ejb-name>
<data-source-name><xsl:value-of
select="../../defaults/datasource"/></data-source-name>
<table-map>
<table-name><xsl:value-of select="table-name"/></table-name>
<xsl:apply-templates select="cmp-field"/>
</table-map>
</weblogic-rdbms-bean>
</xsl:template>
<xsl:template match="cmp-field">
<field-map>
<cmp-field><xsl:value-of select="field-name"/>
</cmp-field>
<dbms-column><xsl:value-of select="column-name"/>
</dbms-column>
</field-map>
</xsl:template>
</xsl:stylesheet>
清单10:weblogic-cmp-rdbms-jar.xml
<?xml version="1.0"?>
<!DOCTYPE weblogic-rdbms-jar PUBLIC
'-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB RDBMS
Persistence//EN'
'http://www.bea.com/servers/wls810/dtd/
weblogic-rdbms20-persistence-810.dtd'>
<weblogic-rdbms-jar>
<weblogic-rdbms-bean>
<ejb-name>Catalog</ejb-name>
<data-source-name>java:/MySqlDS</data-source-name>
<table-map>
<table-name>Catalog</table-name>
<field-map>
<cmp-field>catalogId</cmp-field>
<dbms-column>catalogId</dbms-column>
</field-map>
<field-map>
<cmp-field>journal</cmp-field>
<dbms-column>journal</dbms-column>
</field-map>
<field-map>
<cmp-field>publisher</cmp-field>
<dbms-column>publisher</dbms-column>
</field-map>
</table-map>
</weblogic-rdbms-bean>
<create-default-dbms-tables>AlterOrCreate
</create-default-dbms-tables>
</weblogic-rdbms-jar>
WebLogic部署描述符中的DTD与JBoss部署描述符中的DTD是不同的。借助于XSLT(如果要在部署描述符中表示附加的元素,可以修改定制的XSLT),可以实现从JBoss部署描述符到WebLogic部署描述符的转换。接下来会将EJB应用程序部署到WebLogic Server上。
在WebLogic上部署EJB应用程序
完成从JBoss EJB部署描述符到WebLogic部署描述符的转换后,在WebLogic Server上创建一个EJB JAR文件,该文件的结构如下:
META-INF/
ejb-jar.xml
weblogic-ejb-jar.xml
weblogic-cmp-rdbms-jar.xml
CatalogBean.class
Catalog.class
CatalogHome.class
编译示例EJB类和接口。
java Catalog.java CatalogBean.java CatalogHome.java
将WebLogic部署描述符(ejb-jar.xml、weblogic-ejb-jar.xml和weblogic-cmp-rdbms-jar.xml)复制到META-INF目录下。使用JAR工具(http://java.sun.com/j2se/1.4.2/docs/ tooldocs/windows/jar.html)从WebLogic部署描述符、类和接口创建一个JAR文件。
jar cf CatalogEJB.jar CatalogBean.class
Catalog.class CatalogHome.class META-INF/*.xml
要部署WebLogic实体EJB应用程序,把JAR文件CatalogEJB.jar复制到<BEA>\user_projects\domains\mydomain\applications下,其中<BEA>是安装WebLogic Server的目录。当服务器启动后,EJB应用程序就部署到WebLogic Server上了。WebLogic Server上的应用程序目录对应于Jboss应用服务器上的部署目录。
结束语
通过转换部署描述符,JBoss上的实体EJB应用程序可以迁移到WebLogic应用服务器上。使用类似的过程,通过将jboss-web.xml部署描述符转换成weblogic.xml,JBoss J2EE Web应用程序也可以迁移到WebLogic上。
原文出处
Migrating a JBoss EJB Application to WebLogic
http://wldj.sys-con.com/read/117492.htm
<!--文章其他信息-->
作者简介
|
|
Ajay Vohra 是DataSynapse公司的高级解决方案架构师。 |
|
Deepak Vohra 是一名NuBean顾问兼web开发人员。他拥有Sun Certified Java 1.4 Programmer和Sun Certified Web Component Developer for J2EE证书。 |
分享到:
相关推荐
WebLogic服务器是一款顶级的商业应用程序服务器。但是对于小规模的开发者来...为了演示如何把应用程序迁移到JBoss的过程,我们将把一个在WebLogic中开发的带有Oracle数据库的EJB应用程序迁移到带有MySQL数据库的JBoss应
然而,由于不同应用服务器之间的差异,将JBoss上的应用直接迁移到WebLogic上并非易事。主要挑战在于部署描述符的差异,以及可能需要对应用程序进行的适应性修改。 1. **部署描述符转换**: - **JBoss与WebLogic...
这里提到的"weblogic到jboss转换的示例代码"就是一个这样的例子,它提供了一个自动化工具,帮助用户将WebLogic服务器的配置文件转换为JBoss服务器兼容的格式,极大地简化了迁移过程,避免了手动修改带来的工作量和...
* 背景:WebLogic迁移带来的问题,如WTC(WebLogic Tuxedo Connector)应用间调用方式不统一。 * 设计思想:借鉴Twitter Finagle、Alibaba Dubbo自研、Java <-> C、Java client & C client、Netty、Zookeeper、基于...
J2EE强调组件化设计,允许开发者将复杂的应用程序分解为可重用的组件,如Servlets、JavaBeans、EJB(Enterprise JavaBeans)、JSP(Java Server Pages)等。这些组件可以在多个应用中重复使用,降低了开发成本和维护...
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 20、abstract class和interface有什么区别? ...
- **Jetty**:开源的轻量级Web容器,强调速度和易用性,可方便地嵌入到其他Java应用程序中。Jetty的可扩展性和灵活性使其能够适应各种特殊需求。 - **其他**:包括Bejy Tiger、Geronimo、Jonas、Jrun、Orion和...
这些工具涵盖了从代码编写到应用上线的全过程,帮助企业快速构建、发布和管理Web应用程序。 1.3 服务形态 PaaS服务通常是通过互联网提供,用户可以根据需求随时增加或减少服务,这种灵活性使得企业可以快速响应...
J2EE是Oracle公司(原Sun Microsystems)推出的一个用于构建分布式、多层的企业级应用程序的平台。这个平台包含了多种服务、API和协议,用于简化开发、部署和管理复杂的企业级应用。 **1. J2EE架构概述** J2EE架构...
这可能涉及到将现有的系统或服务迁移至J2EE架构,以便利用其优势,如可扩展性、高可用性和安全性。迁移过程可能包括代码重构、数据库迁移、接口适配等步骤,需要对J2EE的各个组件有深入理解和实践经验。 综上所述,...
J2EE是一种多层分布式应用程序平台,旨在简化开发、测试和部署企业级应用的过程。该手册中文版共49页,尽管篇幅不长,但涵盖了关键的J2EE部署概念和技术。 1. **J2EE架构**:J2EE架构由多个层次组成,包括客户端层...
它遵循Java EE规范,特别是Servlet和JSP标准,为开发者提供了轻量级的Web应用程序托管环境。"绿色版"通常指的是不需要安装,只需下载后解压即可运行的版本,这样的部署方式简单快捷,适合个人开发、学习或小型项目...
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 17、abstract class和interface有什么区别? 声明方法...
另一个常见的误区是认为在单机环境中开发的应用程序可以无缝地迁移到集群环境中。实际上,在迁移到集群环境时,需要考虑很多因素,例如HTTP会话管理、缓存一致性等问题,这些都需要进行相应的调整才能确保应用程序...
- **单机应用可以透明地迁移到集群环境**:实际上,在迁移到集群环境之前,通常需要对应用进行一些调整,特别是涉及到会话管理和缓存等方面。 - **分布式结构比单一结构更灵活**:尽管分布式结构在某些方面确实更加...
- **WebLogic, WebSphere, JBoss的方案**:结对服务器复制机制,即每两个服务器结成一对,其中一个作为主服务器,另一个作为备份服务器。 - **IBM的方案**:集中状态服务器,即所有服务器都连接到一个中央状态服务器...
许多开发者认为,只要应用程序在单机环境下运行良好,那么就可以直接将其迁移到集群环境中而无需做任何修改。然而,实际情况并非如此简单。例如: - **8.2.1 HTTP会话**:在集群环境中,需要对HTTP会话的管理和持久...
8. **与其他应用服务器的集成**:Tomcat可以与EJB容器(如JBOSS、WebLogic)配合使用,提供完整的Java EE功能。 9. **故障排查**:通过查看错误日志、使用JMX监控、使用管理控制台(如`manager app`)来定位和解决...
J2EE热部署是Java企业版(J2EE,现为Java EE)开发中的一个重要概念,它允许开发者在应用程序运行时无需停止服务器就能更新代码,极大地提高了开发效率和减少了系统中断时间。在传统的软件开发中,每当有代码修改,...
或者,将应用程序的目录结构放在`webapps`下,也可以实现部署。 6. **配置Tomcat**:主要通过修改`conf`目录下的配置文件,如`server.xml`用于配置服务器端口、虚拟主机等;`web.xml`是全局的Web应用配置文件;`...