麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

將JBoss EJB應用程序遷移到WebLogic上

2019-11-18 16:14:08
字體:
來源:轉載
供稿:網友
    在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.xmlCatalogBean.classCatalog.classCatalogHome.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> <enterprise-beans> <entity> <ejb-name>Catalog</ejb-name> <home>com.ejb.CatalogHome</home> <remote>com.ejb.Catalog</remote> <ejb-class>com.ejb.CatalogBean</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>java.lang.String</prim-key-class> <reentrant>False</reentrant> <cmp-version>2.x</cmp-version> <abstract-schema-name>CatalogBean
</abstract-schema-name> <cmp-field> <field-name>catalogId</field-name> </cmp-field> <cmp-field> <field-name>journal</field-name> </cmp-field> <cmp-field> <field-name>publisher</field-name> </cmp-field> <primkey-field>catalogId</primkey-field> </entity> </enterprise-beans></ejb-jar>

從weblogic-ejb-jar.xml到jboss.xml的轉換

  weblogic-ejb-jar.xml和jboss.xml是特定于供應商的EJB部署描述符。為了在WebLogic應用服務器上部署JBoss EJB應用程序,要將jboss.xml轉換成weblogic-ejb-jar.xml。jboss.xml中的根元素是jboss,weblogic-ejb-jar.xml中的根元素是weblogic-ejb-jar。對于jboss.xml和weblogic-ejb-jar.xml,都可以在jndi-name或local-jndi-name元素中指定EJB的JNDI名稱。清單5顯示的是示例實體EJB的jboss.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">

清單5:jboss.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.0//EN""http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd"><jboss> <enterprise-beans>  <entity>   <ejb-name>Catalog&Lt;/ejb-name>   <jndi-name>com.ejb.CatalogHome&Lt;/jndi-name>  </entity> </enterprise-beans></jboss>

  使用定制的XSLT樣式表,即weblogic-ejb-jar.xslt(參見清單6),將ejb-jar.xml部署描述符轉換為weblogic-ejb-jar.xml部署描述符。該樣式表創建了weblogic-ejb-jar.xml,它是JBoss上的jboss.xml文件在WebLogic上的等效。清單7中顯示的是weblogic-ejb-jar.xslt樣式表所生成的weblogic-ejb-jar.xml文件。

清單6:weblogic-ejb-jar.xslt

<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheetversion="1.0" xmlns:xsl=
"http://www.w3.org/1999/XSL/Transform"><xsl:output method="xml" doctype-public=
"-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN" doctype-system=
"http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd"/><xsl:template match="/jboss"><weblogic-ejb-jar><xsl:apply-templates select="enterprise-beans/entity"/></weblogic-ejb-jar></xsl:template><xsl:template match="entity"><weblogic-enterprise-bean> <ejb-name><xsl:value-of select="ejb-name"/></ejb-name> <entity-descriptor> <persistence> <persistence-use> <type-identifier>WebLogic_CMP_RDBMS</type-identifier> <type-version>7.0</type-version> <type-storage>META-INF/
weblogic-cmp-rdbms-jar.xml</type-storage> </persistence-use> </persistence> </entity-descriptor> <jndi-name><xsl:value-of select="jndi-name"/></jndi-name> </weblogic-enterprise-bean></xsl:template></xsl:stylesheet>


清單7:weblogic-ejb-jar.xml

<?xml version="1.0"?><!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" ><weblogic-ejb-jar> <weblogic-enterprise-bean> <ejb-name>Catalog</ejb-name> <entity-descriptor> <persistence> <persistence-use> <type-identifier>WebLogic_CMP_RDBMS</type-identifier> <type-version>7.0</type-version> <type-storage>META-INF/weblogic-cmp
-rdbms-jar.xml</type-storage> </persistence-use> </persistence> </entity-descriptor> <jndi-name>com.ejb.CatalogHome</jndi-name> </weblogic-enterprise-bean></weblogic-ejb-jar>

從jbosscmp-jdbc.xml到weblogic-cmp-rdbms-jar.xml的轉換

  weblogic-cmp-rdbms-jar.xml中指定了CMP實體EJB的數據庫持久性信息。該文件包含實體EJB的表格名稱、連接數據庫的數據源和與該EJB CMP字段相對應的列。用于指定CMP實體EJB持久性信息的JBoss部署描述符是jbosscmp-jdbc.xml,清單8顯示了示例EJB的jbosscmp-jdbc.xml。

清單8:jbosscmp-jdbc.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE jbosscmp-jdbc PUBLIC 
"-//JBoss//DTD JBOSSCMP-JDBC 4.0//EN""http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_4_0.dtd"><jbosscmp-jdbc> <defaults> <datasource>java:/MySqlDS</datasource> <datasource-mapping>mySQL</datasource-mapping> </defaults> <enterprise-beans> <entity> <ejb-name>Catalog</ejb-name> <create-table>true</create-table> <table-name>Catalog</table-name> <cmp-field> <field-name>catalogId</field-name> <column-name>catalogId</column-name> </cmp-field> <cmp-field> <field-name>journal</field-name> <column-name>journal</column-name> </cmp-field> <cmp-field> <field-name>publisher</field-name> <column-name>publisher</column-name> </cmp-field> </entity> </enterprise-beans></jbosscmp-jdbc>

  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文件中的field-map元素指定了實體EJB CMP字段與數據庫中表的列之間的映射關系,它等效于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樣式表(weblogic-cmp-rdbms-jar.xslt)(參見清單9)進行jbosscmp-jdbc.xml到weblogic-cmp-rdbms-jar.xml的轉換。該樣式表創建了weblogic-cmp-rdbms-jar.xml,它是JBoss上的jbosscmp-jdbc.xml文件在WebLogic上的等效。清單10中顯示的是weblogic-cmp-rdbms-jar.xml。

清單9:weblogic-cmp-rdbms-jar.xslt

<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheetversion="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output  method="xml" doctype-public=
"-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB RDBMS Persistence//EN" doctype-system="http://www.bea.com/servers
/wls810/dtd/weblogic-rdbms20-persistence-810.dtd"/><xsl:template match="/jbosscmp-jdbc"><weblogic-rdbms-jar><xsl:apply-templates select="enterprise-beans/entity"/><create-default-dbms-tables>
AlterOrCreate</create-default-dbms-tables></weblogic-rdbms-jar></xsl:template><xsl:template match="entity"><weblogic-rdbms-bean> <ejb-name><xsl:value-of select="ejb-name"/></ejb-name> <data-source-name><xsl:value-of
select="../../defaults/datasource"/></data-source-name> <table-map> <table-name><xsl:value-of select="table-name"/></table-name> <xsl:apply-templates select="cmp-field"/></table-map> </weblogic-rdbms-bean></xsl:template><xsl:template match="cmp-field"><field-map> <cmp-field><xsl:value-of select="field-name"/>
</cmp-field> <dbms-column><xsl:value-of select="column-name"/>
</dbms-column> </field-map></xsl:template></xsl:stylesheet>

清單10:weblogic-cmp-rdbms-jar.xml

<?xml version="1.0"?><!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'><weblogic-rdbms-jar> <weblogic-rdbms-bean> <ejb-name>Catalog</ejb-name> <data-source-name>java:/MySqlDS</data-source-name> <table-map> <table-name>Catalog</table-name> <field-map> <cmp-field>catalogId</cmp-field> <dbms-column>catalogId</dbms-column> </field-map> <field-map> <cmp-field>journal</cmp-field> <dbms-column>journal</dbms-column> </field-map> <field-map> <cmp-field>publisher</cmp-field> <dbms-column>publisher</dbms-column> </field-map> </table-map> </weblogic-rdbms-bean> <create-default-dbms-tables>AlterOrCreate
</create-default-dbms-tables></weblogic-rdbms-jar>

  WebLogic部署描述符中的DTD與JBoss部署描述符中的DTD是不同的。借助于XSLT(如果要在部署描述符中表示附加的元素,可以修改定制的XSLT),可以實現從JBoss部署描述符到WebLogic部署描述符的轉換。接下來會將EJB應用程序部署到WebLogic Server上。


在WebLogic上部署EJB應用程序

  完成從JBoss EJB部署描述符到WebLogic部署描述符的轉換后,在WebLogic Server上創建一個EJB JAR文件,該文件的結構如下:

META-INF/  ejb-jar.xml  weblogic-ejb-jar.xml  weblogic-cmp-rdbms-jar.xmlCatalogBean.classCatalog.classCatalogHome.class

  編譯示例EJB類和接口。

java Catalog.java CatalogBean.java CatalogHome.java

  將WebLogic部署描述符(ejb-jar.xml、weblogic-ejb-jar.xml和weblogic-cmp-rdbms-jar.xml)復制到META-INF目錄下。使用JAR工具(http://java.sun.com/j2se/1.4.2/docs/ tooldocs/windows/jar.Html)從WebLogic部署描述符、類和接口創建一個JAR文件。

jar cf CatalogEJB.jar CatalogBean.class
Catalog.class CatalogHome.class META-INF/*.xml

  要部署WebLogic實體EJB應用程序,把JAR文件CatalogEJB.jar復制到<BEA>/user_projects/domains/mydomain/applications下,其中<BEA>是安裝WebLogic Server的目錄。當服務器啟動后,EJB應用程序就部署到WebLogic Server上了。WebLogic Server上的應用程序目錄對應于Jboss應用服務器上的部署目錄。

結束語

  通過轉換部署描述符,JBoss上的實體EJB應用程序可以遷移到WebLogic應用服務器上。使用類似的過程,通過將jboss-web.xml部署描述符轉換成weblogic.xml,JBoss J2EE Web應用程序也可以遷移到WebLogic上。

原文出處

Migrating a JBoss EJB Application to WebLogic

http://wldj.sys-con.com/read/117492.htm

(出處:http://www.companysz.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品国产一区在线观看 | 一区二区免费看 | 精品国产96亚洲一区二区三区 | 精品一区二区三区日本 | 美国黄色毛片女人性生活片 | 久久久国产精品视频 | 斗罗破苍穹在线观看免费完整观看 | 日日操操| teensexhd | 毛片电影在线看 | 久久久久久久久成人 | 国产精品视频一区二区三区四 | 国内毛片视频 | 看免费一级毛片 | 国产免费高清 | 欧美人与牲禽动交精品一区 | 91久久另类重口变态 | 国产精品成人亚洲一区二区 | 久久久久久艹 | 农村少妇吞精夜夜爽视频 | av不卡免费观看 | 一级黄片毛片免费看 | 中文在线国产 | 成人免费观看av | 中国hdxxxx护士爽在线观看 | 国产在线免费 | 欧美一区二区三区免费不卡 | 成人在线视频在线观看 | 爱爱视频天天干 | 午夜视频在线 | 人人做人人看 | av视在线| xxxxhd73国产| 成人羞羞视频在线观看免费 | 天天草夜夜 | 久久精品视频在线免费观看 | 精品久久9999 | 99影视在线视频免费观看 | 亚洲国产精品久久久久久久 | 欧美a久久 | 午夜视频在线看 |