副标题#e#
WebLogic处事器是一款顶级的贸易应用措施处事器。可是对付小局限的开拓者来说,开起源代码的、基于尺度的应用措施处事器JBoss是可以用来替换雷同WebLogic或WebSphere等贸易应用措施处事器的。不幸的是,在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的陈设文件。
设置JBoss和MySQL
MySQL是一个开放源代码的数据库,它适合于开放源代码的项目和小型组织。为了设置JBoss和MySQL数据库需要举办下面一些修改。
设置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();
#p#副标题#e#
设置登录信息
此刻我们按照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>
#p#分页标题#e#
通过修改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文件的布局如下:
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。这些文件之间的转换如下所示。
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元素是:
<!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,它是与WebLogic的weblogic-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字段对应的列。示例实体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是:
#p#分页标题#e#
<!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,它是与WebLogic的weblogic-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.xml、jboss.xml和jbosscmp-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上。