通过修改mysql-ds.xml和login-config.xml文件,JBoss 4.0服务器已经被配置好了,可以使用MySQL数据库了。除了前面的一些特定的设置之外,可能还需要对JBoss部署文件和JBoss JDBC配置文件作一些修改。
如果"建立表"选项被选中(通过把jbosscmp-jdbc.xml中的create-table元素设置为true)用于部署CMP实体EJB,并且MySQL表的主键(或唯一键)的长度超过了500字节,应用程序的部署过程会在MySQL数据库中生成一个SQL语法错误。对于java.lang.String类型的CMP字段,我们可以通过在standardjbosscmp-jdbc.xml部署文件的mySQL类型映射中把用于Java类型java.lang.String的SQL类型设置为较低的VARCHAR值来减小主键(或唯一键)的长度。另一个可能出现的问题是jbosscmp-jdbc.xml部署文件中的column-name元素。如果某个MySQL表的列名与MySQL保留字相同,在JBoss中部署J2EE应用程序的时候会产生一个错误。解决这个问题的方法是使列名与MySQL保留字不同。
转换WebLogic EJB应用程序
在建立起使用MySQL的JBoss服务器之后,你现在必须把该WebLogic EJB应用程序转换为JBoss EJB应用程序,这就涉及到部署文件的修改。WebLogic实体EJB应用程序由EJB部署文件(ejb-jar.xml、weblogic-ejb-jar.xml和weblogic-cmp-rdbms-jar.xml),bean类(CatalogBean.java)、远程接口(Catalog.java)和home接口(CatalogHome.java)组成。为了在WebLogic服务器上部署实体EJB,需要建立一个EJB .jar文件,这个EJB .jar文件的结构如下:
ejb-jar.xml
weblogic-ejb-jar.xml
weblogic-cmp-rdbms-jar.xml
CatalogBean.class
Catalog.class
CatalogHome.class
ejb-jar.xml部署文件对于WebLogic和JBoss来说都是一样的,除了multiplicity元素之外。JBoss服务器的ejb-jar.xml中的multiplicity元素需要大写,例如One或Many,而不是one或many。
示例实体EJB的ejb-jar.xml部署文件包含在示例代码中。示例ejb-jar.xml定义了一个叫做"Catalog"的实体EJB。这个示例EJB拥有CMP字段catalogId、journal和publisher。其主键字段是catalogId。
把weblogic-ejb-jar.xml转换为jboss.xml
weblogic-ejb-jar.xml和jboss.xml部署文件都是EJB厂商的特定部署文件。为了把WebLogic EJB应用程序部署到JBoss应用程序服务器上,必须把weblogic-ejb-jar.xml部署文件转换为jboss.xml。
weblogic-ejb-jar.xml中的根元素是weblogic-ejb-jar。jboss.xml中的根元素是jboss。在jboss.xml和weblogic-ejb-jar.xml部署文件中指定某个EJB的JNDI名称的元素是jndi-name或local-jndi-name。本文中的示例实体EJB的weblogic-ejb-jar.xml部署文件也包含在示例代码中。weblogic-ejb-jar.xml部署文件的DOCTYPE元素是:
"-//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">
把weblogic-cmp-rdbms-jar.xml转换为jbosscmp-jdbc.xml
weblogic-cmp-rdbms-jar.xml部署文件指定了CMP实体EJB的数据库持续信息。weblogic-cmp-rdbms-jar.xml文件包含实体EJB的表名称、连接到数据库的数据源和与该实体EJB CMP字段对应的列。示例实体EJB的weblogic-cmp-rdbms-jar.xml部署文件包含在可以下载的.zip文件中。指定CMP视图EJB持续信息的JBoss部署文件是jbosscmp-jdbc.xml。
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指定实体EJB CMP字段与数据库表的列之间映射关系的field-map元素与jbosscmp-jdbc.xml中的cmp-field元素功能相当。weblogic-cmp-rdbms-jar.xml中指定列名的dbms-column元素与jbosscmp-jdbc.xml中的column-name元素功能相当。weblogic-cmp-rdbms-jar.xml部署文件的DOCTYPE是:
'-//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">
WebLogic部署文件的DTD与JBoss部署文件的不同。使用自定义的XSLT的时候,如果部署文件中还出现了一些额外的元素,可能还需要做进一步的修改,可以把WebLogic部署文件转换为JBoss部署文件。在下面的部分中,我们将在JBoss服务器上部署这个EJB应用程序。
在JBoss中部署该EJB应用程序
把WebLogic EJB部署文件转换为JBoss部署文件之后,你必须建立一个心的EJB .jar文件以部署到JBoss服务器上。该JBoss .jar文件的结构如下:
ejb-jar.xml
jboss.xml
jbosscmp-jdbc.xml
CatalogBean.class
Catalog.class
CatalogHome.class
Catalog.class CatalogHome.class META-INF/*.xml
部署该JBoss实体EJB应用程序的过程是,把该.jar文件(EntityEJB.jar)复制到<JBoss>\server\default\deploy目录(其中<JBoss>是JBoss安装的目录)中。当服务器启动的时候,该EJB应用程序就在JBoss服务器上面部署好了。JBoss应用程序服务器中的部署(deploy)目录与WebLogic应用程序服务器中的应用程序(applications)目录对应。
结论
通过转换部署文件可以把WebLogic中部署的实体EJB应用程序迁移到JBoss应用程序服务器上。使用相似的步骤,通过把weblogic.xml 部署文件转换为jboss-web.xml ,也可以把WebLogic J2EE Web应用程序迁移到JBoss上。
[1] [2]
