选择显示字体大小

把weblogic ejb程序迁移到jboss上


  weblogic服务器是一款顶级的商业应用程序服务器。但是对于小规模的开发者来说,开发源代码的、基于标准的应用程序服务器jboss是可以用来替换类似weblogicwebsphere等商业应用程序服务器的。不幸的是,在weblogic中开发的应用程序不能在jboss中部署。 jboss迁移服务为我们提供了把应用程序迁移到jboss上的支持。作为代替,通过把厂商特定的部署文件信息迁移到jboss上,是可能把应用程序迁移到jboss上的。为了演示如何把应用程序迁移到jboss的过程,我们将把一个在weblogic中开发的带有oracle数据库ejb应用程序迁移到带有mysql数据库jboss应用程序服务器上。

  预安装软件

   为了配置mysql数据库的jdbc连接,需要下载mysql数据库驱动程序类。

   1.下载mysql jdbc驱动程序.jar文件

   2.下载和安装mysql数据库服务器

   3.下载和安装jboss 4.0应用程序服务器

   开发一个java应用程序,我们将使用它和xslt把weblogic部署文件转换为jboss部署文件。该部署文件也可以使用xslt工具进行转换。

  概述

   在不进行修改的时候,weblogic中开发的应用程序是不能部署在jboss中的。jboss应用程序的部署文件与weblogic的部署文件不同。在本文中,我们将把一个在weblogic中开发的实体(entity)ejb应用程序示例迁移到jboss中,迁移的方法是把weblogic部署文件转换为jboss部署文件。

   示例应用程序包含一个catalog实体ejb。该ejb的bean类(catalogbean.java)、远程接口(catalog.java)、和home接口(cataloghome.java)都在本文下载链接的weblogic-jboss-resources.zip示例文件中。我们将使用mysql开放源代码数据库来配置jboss应用程序。把weblogic ejb应用程序部署到jboss中并不需要修改实体ejb类,只需要修改该ejb的部署文件。

  配置jbossmysql

   mysql是一个开放源代码的数据库,它适合于开放源代码的项目和小型组织。为了配置jbossmysql数据库需要进行下面一些修改。

  配置jboss类路径

   为了使用jboss 4.0和mysql,我们首先要把驱动程序类.jar文件(mysql-connector-java-3.0.9-stable-bin.jar)复制到<jboss>/server/default/lib目录中。其中的<jboss>是jboss应用程序服务器安装的目录。lib目录的.jar和.zip文件都包含在jboss服务器的classpath(类路径)中。

  配置mysql数据源

   为了使用mysql数据源,需要把<jboss>/docs/examples/jca/mysql-ds.xml复制到<jboss>/server/default/deploy目录中。当jboss服务器启动的时候,deploy目录中的数据源配置文件就被部署好了。依照下面的步骤修改mysql-ds.xml配置文件:

   · 把<driver-class/>设置为com.mysql.jdbc.driver,<connection-url/>设置为jdbc:mysql://localhost/<database>,其中<database>是mysql数据库。<database>的值可以设置为test,它是mysql中的示例数据库

   · 在jndi-name元素中指定数据源的jndi名称。

   · 指定连接mysql数据库的用户名和密码。在默认情况下,root用户名不需要密码。

   · 把type-mapping元素指定为mysql。type-mapping元素指定了standardjbosscmp-jdbc.xml部署文件中预定义的数据库类型映射关系。对于mysql数据库来说,类型映射是mysql

   修改过的mysql-ds.xml如下所示:

<?xml version="1.0" encoding="utf-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>mysqlds</jndi-name>
<connection-url>jdbc:mysql://localhost/test</connection-url>
<driver-class>com.mysql.jdbc.driver</driver-class>
<user-name>root</user-name>
<password></password>
<metadata>
<type-mapping>mysql</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>

   我们可以通过提供数据源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配置文件作一些修改。

   如果"建立表"选项被选中(通过把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应用程序

   在建立起使用mysqljboss服务器之后,你现在必须把该weblogic ejb应用程序转换为jboss ejb应用程序,这就涉及到部署文件的修改。weblogic实体ejb应用程序由ejb部署文件(ejb-jar.xmlweblogic-ejb-jar.xmlweblogic-cmp-rdbms-jar.xml),bean类(catalogbean.java)、远程接口(catalog.java)和home接口(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还是实体ejbejb-jar.xml部署文件中的应用程序汇编信息在assembly-descriptor元素中指定。weblogic中该实体ejb部署文件包括ejb-jar.xmlweblogic-ejb-jar.xmlweblogic-cmp-rdbms-jar.xml。相应的jboss部署文件是ejb-jar.xmljboss.xmljbosscmp-jdbc.xml。这些文件之间的转换如下所示。

   ejb-jar.xml部署文件对于weblogicjboss来说都是一样的,除了multiplicity元素之外。jboss服务器ejb-jar.xml中的multiplicity元素需要大写,例如one或many,而不是one或many。

   示例实体ejbejb-jar.xml部署文件包含在示例代码中。示例ejb-jar.xml定义了一个叫做"catalog"的实体ejb。这个示例ejb拥有cmp字段catalogid、journal和publisher。其主键字段是catalogid。

   weblogic-ejb-jar.xml转换为jboss.xml

   weblogic-ejb-jar.xmljboss.xml部署文件都是ejb厂商的特定部署文件。为了把weblogic ejb应用程序部署到jboss应用程序服务器上,必须把weblogic-ejb-jar.xml部署文件转换为jboss.xml

   weblogic-ejb-jar.xml中的根元素是weblogic-ejb-jar。jboss.xml中的根元素是jboss。在jboss.xmlweblogic-ejb-jar.xml部署文件中指定某个ejb的jndi名称的元素是jndi-name或local-jndi-name。本文中的示例实体ejbweblogic-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">

   我们通过一个自定义的xslt样式表jboss.xslt(包含在示例代码中)把部署文件weblogic-ejb-jar.xml转换为jboss.xml。该样式表建立jboss.xml,它是与weblogicweblogic-ejb-jar.xml部署文件相当的jboss文件。使用jboss.xslt样式表所生成的jboss.xml文件也包含在示例代码中。

   weblogic-cmp-rdbms-jar.xml转换为jbosscmp-jdbc.xml

   weblogic-cmp-rdbms-jar.xml部署文件指定了cmp实体ejb数据库持续信息。weblogic-cmp-rdbms-jar.xml文件包含实体ejb的表名称、连接到数据库的数据源和与该实体ejb cmp字段对应的列。示例实体ejbweblogic-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是:

<!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样式表jbosscmp-jdbc.xslt(包含在示例代码中)把部署文件weblogic-cmp-rdbms-jar.xml转换为jbosscmp-jdbc.xml。该样式表建立jbosscmp-jdbc.xml,它是与weblogicweblogic-cmp-rdbms-jar.xml部署文件功能相当的jboss文件。jbosscmp-jdbc.xml也包含下载在.zip文件中。

   weblogic部署文件的dtd与jboss部署文件的不同。使用自定义的xslt的时候,如果部署文件中还出现了一些额外的元素,可能还需要做进一步的修改,可以把weblogic部署文件转换为jboss部署文件。在下面的部分中,我们将在jboss服务器上部署这个ejb应用程序。

   jboss中部署该ejb应用程序

   把weblogic ejb部署文件转换为jboss部署文件之后,你必须建立一个心的ejb .jar文件以部署到jboss服务器上。该jboss .jar文件的结构如下:

meta-inf/
ejb-jar.xml
jboss.xml
jbosscmp-jdbc.xml
catalogbean.class
catalog.class
cataloghome.class

   编译示例ejb类和接口:

java catalog.java catalogbean.java cataloghome.java
   把jboss部署文件ejb-jar.xmljboss.xmljbosscmp-jdbc.xml复制到meta-inf目录中。使用jar工具从jboss部署文件、类和接口中建立一个.jar文件。

jar cf catalogejb.jar catalogbean.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上。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons