服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

jbossejb应用程序迁移到weblogic上


  在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>

扫描关注微信公众号