在
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.FinderEx
9
7
3
1
2
3
4
8
: