科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道EJB应用从WebLogic到JBoss的迁移方法

EJB应用从WebLogic到JBoss的迁移方法

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

摘要: 在不作任何改动的情况下,为WebLogic开发的应用无法在JBoss中部署,因为JBoss应用服务器的部署描述符有别于WebLogic的部署描述符。在本指南中,我们将通过把WebLogic部署描述符转换成JBoss部署描述符。

作者:中国IT实验室 来源:中国IT实验室 2007年9月30日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

通过数据源的JNDI名,我们可以从数据源获得一条JDBC连接:

    InitialContext initialContext = new InitialContext();
    javax.sql.DataSource ds = (javax.sql.DataSource)
    initialContext.lookup("java:/MySqlDS");
    java.sql.Connection conn = ds.getConnection();



配置登陆
    接下来,我们根据MySQL数据库的设置改动login-config.xml配置文件。登陆MySQL数据库须用到应用方案MySqlDbRealm。在login-config.xml中添加以下<application-policy/>元素:

<application-policy name = "MySqlDbRealm"> 
   <authentication>
      <login-module code =  
              "org.jboss.resource.security.ConfiguredIdentityLoginModule"
                     flag = "required">
         <module-option name ="principal"></module-option>
         <module-option name ="userName">root</module-option>
         <module-option name ="password"></module-option>
         <module-option name ="managedConnectionFactoryName">  
            jboss.jca:service=LocalTxCM,name=MySqlDS
         </module-option>
      </login-module>
   </authentication>
</application-policy>  



    通过改动mysql-ds.xml和login-config.xml文件,JBoss 4.0服务器已经可以与MySQL数据库协同工作。除上述设置外,可能还需为JBoss部署描述符和JBoss JDBC配置文件作一些额外的改动。

    部署CMP实体EJB时,若选择了“create table”(在jbosscmp-jdbc.xml中把create-table元素改为true),并且某个MySQL表的主键(唯一键)长度超过了500字节,应用的部署将在MySQL数据库中产生一条SQL语法错误警告。对于java.lang.String类型的CMP字段,我们知道在standardjbosscmp-jdbc.xml部署描述符中有mySQL类型映射,所以我们可以设置sql-type为java中的 java.lang.String类型,可减少VARCHAR值,从而减少了主键(唯一键)的长度。另一个可能出现的问题涉及部署描述符中的column-name元素。如果MySQL中某张表的某一字段与MySQL保留字相同,在把J2EE应用部署到JBoss后将产生错误,解决问题的办法是,把该字段名换成非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)和本地接口(CatalogHome.java)构成。在WebLogic服务器中部署实体EJB时,创建了一个EJB的.jar文件;这个EJB的.jar文件有如下结构:

META-INF/
  ejb-jar.xml
  weblogic-ejb-jar.xml
  weblogic-cmp-rdbms-jar.xml
CatalogBean.class
Catalog.class
CatalogHome.class



    部署描述符中指明了EJB结构信息和应用组合信息。结构信息包括指出EJB是一个会话EJB还是实体EJB。ejb-jar.xml部署描述符的assembly-descriptor元素指明了应用组合信息。WebLogic的实体EJB部署描述符有ejb-jar.xml、weblogic-ejb-jar.xml和weblogic-cmp-rdbms-jar.xml,相应的JBoss部署描述符是ejb-jar.xml、jboss.xml和jbosscmp-jdbc.xml。下面将介绍两者间的转换。

    除了multiplicity元素,WebLogic和JBoss的ejb-jar.xml部署描述符内容是相同的。JBoss服务器ejb-jar.xml中的multiplicity元素需要首字母大写;例如,one要写成One,many要写成Many。

    在样例代码中,有实体EJB范例的ejb-jar.xml部署描述符。ejb-jar.xml范例定义了一个EJB名为“Catalog.”的实体EJB。EJB范例的CMP字段有catalogId、journal和publisher,其主键字段是catalogId。

把weblogic-ejb-jar.xml转换成jboss.xml

    对EJB来说,weblogic-ejb-jar.xml和jboss.xml部署描述符是特定厂商的部署描述符。想把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元素是:

<  !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">



    源码的.zip文件中存有转换部署描述符weblogic-ejb-jar.xml到jboss.xml的定制XSLT样式表jboss.xslt。欲了解更多关于XSLT转换的详情,请参阅Sun公司的XSLT指南。样式表在JBoss中创建的jboss.xml,等同于WebLogic的weblogic-ejb-jar.xml部署描述符。jboss.xslt样式表产生的jboss.xml存放在范例代码中。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章