jboss4 迁移_将JBoss应用程序迁移到Liberty

本期文章的目的是确定并解决将使用运行在JBoss V5.0.1.GA上的重量级EJB2.x bean的旧J2EE™1.4应用程序迁移到使用运行在IBM WebSphere上的EJB3的轻量级Java™EE 6应用程序的不兼容性。 Application Server V8.5.5 Liberty配置文件。

此示例概述了迁移这些Java技术和框架所涉及的步骤:

  • Java Servlet 2.4
  • JavaServer™页面(JSP)2.0
  • 企业Java Bean(EJB)2.x
  • Java数据库连接(JDBC)4.0
  • Java SE 6的Java身份验证和授权服务
  • 经典冬眠。

样品申请

本文中使用的示例应用程序是本文从JBoss到Geronimo-Security Migration的文档管理器应用程序的修改版本。 该应用程序代表了现有的J2EE应用程序,这些应用程序运行在重量级容器(如JBoss)上,组织在转向轻量级Java EE容器(如Liberty概要文件)时可能遇到。

文档管理器应用程序支持几个用例,使用户可以查看和上传文档。 该应用程序还具有安全性约束。 它由三页组成(图1):

  • 登录页面
  • 文件页面
  • 登录错误页面
图1.示例应用程序概述
示例应用程序概述

该应用程序从“登录”页面开始。 登录后,用户将被重定向到“文档”页面。 用户有两种类型: 查看者编辑者 。 两种用户类型都可以查看文档,但是只有编辑者可以上载新文档。

如果用户具有编辑者角色,则上载表单将显示在文档列表下方。 当用户选择一个文档并按下Upload按钮时,通过执行Upload servlet调用DocumentManagerBean会话bean的上载方法。 如果未经授权的用户尝试调用Upload servlet,则Security应用程序将引发异常。

该应用程序具有两个预定义的用户ID:

  • 密码为1的用户
  • 编辑器,密码为2。

本文随附下载文件包含您需要遵循并执行以下步骤的Document Manager应用程序 。 该应用程序包含在OriginalDocumentManager.ear文件中,并且由以下组件组成:

  • DocumentManager.ear -EAR归档文件,它打包了DocumentManager应用程序的所有JAR和模块。
  • DocumentManagerWeb.war -Web归档文件,其中包含处理用户操作并显示用户文档的servlet和JSP页面。
  • DocumentManagerEJB.jar -EJB归档,其中包含无状态会话Bean和数据访问对象以从数据库检索用户文档。
  • DocumentManagerSAR.sar -JBoss专有服务归档文件,其中包含JBoss定制JAAS登录模块,该模块处理DocumentManager应用程序的身份验证和授权。
  • DocumentManagerHibernate.jar-包含Hibernate配置和类映射的实用程序JAR。

该应用程序打包为企业应用程序归档文件(EAR),如图2所示。

图2.样例应用程序EAR结构
样例应用程序EAR结构

本教程的其余部分向您展示如何:

  1. 设置并运行示例应用程序。
  2. 分析应用程序是否适合迁移到Liberty。 本节利用第1部分中描述的Liberty Tech Preview。
  3. 从JBoss迁移到Liberty。 本节解决了步骤2中的分析所确定的所有移植问题,并且还使用了WebSphere Configuration Migration Toolkit。

本教程随附

本教程包含一个.zip格式的下载文件 ,其中包含几个示例组件,在本练习中将使用这些示例组件来说明将JBoss应用程序迁移到Liberty概要文件的步骤。 表1列出了此文件中包含的项目。

表1.示例应用程序组件
文档名称 描述
OriginalSampleApp.zip 包含在JBoss上运行的示例应用程序的Eclipse工作区。
OriginalDocumentManager.ear 文档管理器的原始EAR文件。
MigratedSampleApp.zip 包含在Liberty上运行的示例应用程序的Eclipse工作区。
MigratedDocumentManager.ear 用于文档管理器的EAR文件的迁移。
JBossConfig.zip 包含Derby驱动程序和数据源的JBoss Server配置。
server.xml 包含Derby驱动程序和数据源的Liberty Server配置。
DerbySampleDB.zip 示例应用程序访问的Derby数据库文件。

1.设置并运行示例应用程序

一个。 安装Derby数据库服务器

示例应用程序使用Derby数据库服务器来维护文档信息。 要运行文档管理器应用程序,您需要一个数据库来访问该应用程序显示的文档数据。 为简单起见,此数据库将使用Derby,这是一种非常轻巧且易于使用的数据库。

Apache Derby发行页面下载db-derby-10.11.1.1-bin.zip 。 下载后,解压缩压缩的存档文件。 这将被称为<DERBY_HOME>文件夹。

b。 将样本数据库导入Derby

从本文随附的下载资料中 ,解压缩DerbySampleDb.zip存档的内容。 本文中提取的内容的位置将称为<SAMPLE_DB>

要将数据库导入Derby:

  1. 将<SAMPLE_HOME>文件夹复制到<DERBY_HOME> / lib。 您将看到一个sampledb文件夹已被复制到<DERBY_HOME> / lib。 该文件夹是示例应用程序访问的Derby数据库文件所在的位置。
  2. 要运行Derby,请转到<DERBY_HOME> / lib目录,然后通过运行java -jar ./derbyrun.jar server start命令来启动Apache Derby网络服务器。

C。 安装和配置JBoss应用程序服务器

  1. 下载JBoss服务器以部署示例应用程序。 下载后,解压缩压缩的JBoss归档文件的内容。 该位置称为<JBOSS_HOME>
  2. 从本文随附的下载资料中 ,从JBossConfig.zip存档中解压缩此应用程序所需的JBoss配置的副本。 提取的内容的位置将被称为<JBOSS_CONFIG>
  3. 将<JBOSS_HOME> / server / default复制到<JBOSS_HOME> / server / dworks文件夹。
  4. 将<JBOSS_CONFIG>文件夹复制到<JBOSS_HOME> / server中。 这会将配置添加到dworks文件夹。 Windows询问是否应合并文件夹时,请单击“ 确定”

    以下文件(示例应用程序必需)已添加到dworks配置中:

    • deploy / Derby-ds.xml -JBoss中的Derby数据源配置。
    • deploy / DocumentManager.ear-部署到JBoss的应用程序EAR文件。 如果JBoss已经启动,它将自动部署并启动该应用程序; 否则,该应用程序将被部署并在下次启动时启动。
    • lib / derby.jarlib / derbyclient.jar -Derby数据库Java驱动程序。
  5. 通过运行<JBOSS_HOME> \ bin目录中的run.sh –c dworks命令(在Windows上使用run.bat )来启动新服务器。
  6. 服务器启动后,通过打开Web浏览器并将其指向http:// localhost:8080来验证它是否正在运行。 您应该看到JBoss Welcome窗口,并且能够访问JBoss控制台。

d。 在JBoss上运行示例应用程序

通过导航到<JBOSS_HOME> / bin并运行run.bat来启动JBoss服务器(如果尚未启动)。 打开Web浏览器并访问http:// localhost:8080 / document

使用用户名editor和密码2以编辑器身份登录。 具有有效编辑者凭据的用户将有权查看“编辑者XXX .doc”文档以及将文档上载到系统的选项(仅用于显示目的),如图3所示。

图3.编辑器访问
编辑者访问

具有基本有效用户凭证的用户将只能查看User XXX .doc文档(图4)。

图4.用户访问
用户访问

2.分析应用程序是否适合迁移到Liberty

在本部分中,您将设置开发环境以用于迁移,执行迁移分析并确定将应用程序移至WebSphere Application Server Liberty概要文件所需的更改。

一个。 安装Eclipse IDE

首先,您需要建立用于构建示例应用程序的原始开发环境。 在随后的部分中,将使用相同的IDE来分析应用程序的移植问题,并将该应用程序从JBoss迁移到Liberty。

  1. 下载并安装Eclipse Luna for Java EE Developers IDE。
  2. 如果尚未安装Oracle Java 6或7 SDK,请下载并安装适用于Linux或WindowsOracle Java 6 JDK
  3. 设置JAVA_HOMEPATH环境变量。


    在Windows上(从命令提示符):

    • 设置JAVA_HOME=< jdk6-install-dir >
    • 汇出JAVA_HOME
    • 设置PATH=%JAVA_HOME%\bin;%PATH%
    • 导出PATH


    在Linux(从终端)上:

    • 导出JAVA_HOME=< jdk6-install-dir >
    • 导出PATH=$JAVA_HOME/bin:$PATH

b。 导入示例应用程序

从本文随附的下载资料中 ,解压缩OriginalSampleApp.zip存档的内容。 提取的内容的位置将被称为<SAMPLE_APP> 。 要将应用程序导入到Eclipse:

  1. 启动Eclipse IDE。
  2. 从Eclipse菜单中,选择File> Import> General> Existing Projects into Workspace ,然后单击Next (图5)。
    图5.导入档案文件
    导入档案文件
  3. 在“导入项目”对话框中,选中“ 选择存档文件”,然后浏览到<SAMPLE_APP> 。 单击Finish (图6)。
    图6.导入项目
    导入项目

C。 分析应用

本系列的第1部分介绍了Application Migration Toolkit和Liberty Tech Preview的概述。 Liberty Tech Preview运行在Migration Toolkit之上,使您能够从不同的应用程序服务器(包括JBoss,WebLogic Server,Oracle®Application Server和Apache Tomcat)转移到Liberty配置文件。 它还使您能够从旧的和最新的传统IBM WebSphere Application Server版本迁移到Liberty概要文件或云。

通过导航到“ 帮助”>“安装新软件” ,然后单击“ 添加”,下载并安装Eclipse中的WebSphere Application Migration Toolkit,添加此存储库位置URL:

https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/updates/wamt/MigrationToolkitCompetitive

Eclipse可能需要在安装过程中重新启动。 安装工具箱后,对工作空间运行Liberty Technology Rule Set:

  1. 从Eclipse菜单中,选择“ 运行”>“分析”选项。
  2. 创建一个新的软件分析器配置。
  3. 对于名称 ,输入配置的名称; 例如, Liberty Technology Rules
  4. 在“作用域”选项卡上,选择“ 分析整个工作空间”以扫描该工作空间中的所有项目,或者“ 分析选定的项目”以扫描该工作空间中的某些项目 (图7)。
    图7. Scope选项卡
    范围标签
  5. 在Rules选项卡上,使用Rule Sets列表选择JBoss Application Migration ,然后单击Set…按钮(图8)。
    图8.规则选项卡
    规则标签
  6. 对于Target应用程序服务器 ,选择Other Liberty Editions V8.5.5 ,对于Target Java版本,选择IBM Java 6IBM Java 7 ,这取决于您安装的Java(图9)。
    图9.规则集配置
    规则集配置
  7. 单击确定,然后单击应用
  8. 单击分析按钮。 该工具将分析应用程序,并在“软件分析器结果”视图中生成问题列表和潜在问题。
  9. 在“软件分析器结果”视图中查看问题。 (我们将在以后查看和解决这些问题。)请确保在XML File ReviewJava Code Review选项卡中检查问题

表2列出了分析仪检测到的结果。

表2.软件分析器结果
类型 问题 零件 描述
Java,XML 检查Hibernate框架 DocumentManagerHibernate中的DocumentManagerDAO.java,Hibernate.cfg.xml 应用程序使用Hibernate框架。 通常,在迁移期间不需要采取进一步的措施,但是建议确保在生产之前使用WebSphere Application Server Hibernate最佳实践。
XML格式 JBoss专用文件 jboss.xml,jboss-web.xml 需要迁移JBoss特定的部署描述符信息才能在Liberty上使用。
XML格式 使用WebSphere绑定定义EJB JNDI名称 jboss.xml 为每个EJB主对象定义了一个JNDI名称(按照EJB 2.1的要求)。 绑定定义需要迁移到WebSphere Application Server。
XML格式 使用WebSphere扩展定义Web模块上下文根 jboss.xml 上下文根需要从JBoss文件迁移到WebSphere Application Server Web模块扩展。
XML格式 Enterprise JavaBeans(EJB)的远程接口不可用 ejb-jar.xml Liberty概要文件不支持远程EJB接口。
XML格式 企业JavaBeans(EJB)1.x / 2.x不可用 ejb-jar.xml Liberty概要文件或Liberty Core不支持Enterprise JavaBeans(EJB)1.x / 2.x。 升级应用程序以使用EJB 3.1 Lite规范。

3.从JBoss迁移到Liberty

接下来,您要迁移开发环境,应用程序源代码和部署描述符,JBoss应用程序服务器配置以及JBoss定制JAAS登录模块。 然后,您可以在Liberty服务器上运行该应用程序。

请注意,此应用程序是“就地”迁移的,这意味着迁移后的应用程序将继续使用现有的数据库服务器。 在本节的最后,显示了迁移的应用程序在轻量级的Liberty容器上运行。

一个。 迁移开发环境

对于此迁移,您需要安装WebSphere Developer Tools,以便可以将应用程序“热部署”到Liberty。 首先启动上一部分中导入的JBoss工作区。

  1. 下载WebSphere Developer Tools并安装到Eclipse中。
  2. 接下来, 下载Liberty运行时 。 单击下载按钮以获取IBM WebSphere Application Server V8.5.5.4 Liberty概要文件的安装JAR,然后运行命令java -jar wlp-runtime-8.5.5.5.jar创建一个名为wlp的文件夹。
  3. 从Eclipse创建一个新服务器。 在“服务器”视图中,右键单击新建>服务器> IBM> WebSphere Application Server Liberty概要文件 ,然后单击下一步
  4. 选择选择现有安装,然后浏览到刚刚创建的wlp文件夹。 单击下一步
  5. 保留默认设置,然后单击完成 。 这将创建一个名为defaultServer的Liberty服务器。

b。 升级规格等级

升级应用程序中模块的规范级别。 您可以修改项目方面,以更改Eclipse项目的模块级别和Java版本。 这些更改将导致部署描述符的升级,并使您能够将项目与目标运行时关联。 指定目标运行时将支持的运行时Java EE库包含到项目的构建路径中。

  1. 要通过更改项目构面来升级EAR项目,请右键单击EAR项目并选择Document Manager> Properties> Project Facets (图10)。
  2. 将EAR版本设置为6.0
  3. 在Runtimes选项卡中,选择WebSphere Application Server Liberty Profile ,然后单击OK (图10)。
    图10.项目方面
    项目方面
  4. 要更改EJB模块的项目构面,请右键单击EJB项目,然后选择DocumentManagerEJB> Properties> Project Facets (图11)。 将EJB Module更改为3.1并将Java更改为1.7
  5. 在“运行时”选项卡中,选择“ WebSphere Application Server Liberty概要文件” ,然后单击“ 确定”
    图11.将属性分配给运行时
    将属性分配给运行时
  6. 要更改Web模块的项目构面,请右键单击DocumentManagerWeb>属性>项目构 (图12)。
  7. 将Dynamic Web Module更改为3.0 ,并将Java更改为1.7
  8. 在“运行时”选项卡中,选择“ Liberty Profile”条目,然后单击“ 确定”
    图12.将属性分配给运行时
    将属性分配给运行时

b。 迁移应用程序代码

将Java EE应用程序移植到Liberty概要文件时,EJB 1.x / 2.x和JAX-RPC代表了两个主要挑战。 这两项技术均已从Java EE规范中删除,但尚未在Liberty中实现。 因为我们看到使用EJB 1.x / 2.x的客户端比使用JAX-RPC的客户端多得多,所以我们将在此处显示EJB 1.x / 2.x的迁移。 (您可以阅读本文以了解有关将JAX-RPC Web服务迁移到JAX-WS的更多信息。)

让我们看一下将无状态会话Bean从EJB 2.1升级到EJB 3.1。 有很多方法可以将EJB从2.x升级到3.x。 下面的步骤说明了一种没有界面视图的方式:

  1. 实施会话Bean更改

    会话Bean类org.apache.geronimo.samples.document.ejb.DocumentManagerBean实现SessionBean接口。 会话bean类具有ejbCreate()方法,三个业务方法(upload(),getFilesByUserid(),addUserFile())和回调方法,如清单1所示。

    清单1. EJB 2.x无状态会话bean
    package org.apache.geronimo.samples.document.ejb;
           
           ...
           
           public class DocumentManagerBean implements javax.ejb.SessionBean {
           
           private static final long serialVersionUID = 5910882211249828856L;
           
           public String upload() {
           return "File successfully uploaded";
           }
           
           public List<UserFile> getFilesByUserid(String userid) {
            List<UserFile> list = null;
             try {
             DocumentManagerDAO dmDao = new DocumentManagerDAO();
             list = dmDao.getUserFilesByUserid(userid);
             } catch (Exception e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
             }
             return list;
             }
             
             public void addUserFile(String userId, String filename) {
             DocumentManagerDAO dmDao;
             
             try {
             dmDao = new DocumentManagerDAO();
             dmDao.addUserFile(userId, filename);
             } catch (Exception e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
             }
             }
             
             // Life cycle calls implementation
             ...
             }

    EJB 3.1 bean类不实现javax.ejb.SessionBean。 因此,不需要实施生命周期方法。 使用注释@Stateless指定无状态会话Bean,并使用注释@Stateful指定有状态会话Bean。

    清单2中显示了与EJB 2.1无状态会话Bean相对应的已迁移的EJB 3.1会话Bean(DocumentManagerBean.java)。请注意,由于将EJB2.x Bean转换为EJB3无接口视图,因此不需要继承EJB2.x远程接口或EJB2.x远程主接口,因此可以删除这些接口:

    • org.apache.geronimo.samples.document.ejb.DocumentManager
    • org.apache.geronimo.samples.document.ejb.DocumentManagerHome
    清单2.没有接口视图的EJB 3.1无状态会话Bean
    package org.apache.geronimo.samples.document.ejb;
           import java.util.List;
           
           import javax.ejb.Stateless;
           
           import org.apache.geronimo.samples.document.dao.DocumentManagerDAO;
           import org.apache.geronimo.samples.document.hibernate.UserFile;
           
           @Stateless
           public class DocumentManagerBean{
           
           public String upload(String userId, String filename) {
           addUserFile(userId, filename);
           return "File successfully uploaded";
           }
           
           public List<UserFile> getFilesByUserid(String userid) {
            List<UserFile> list = null;
             try {
             DocumentManagerDAO dmDao = new DocumentManagerDAO();
             list = dmDao.getUserFilesByUserid(userid);
             } catch (Exception e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
             }
             return list;
             }
             private void addUserFile(String userId, String filename) {
             DocumentManagerDAO dmDao;
             
             try {
             dmDao = new DocumentManagerDAO();
             dmDao.addUserFile(userId, filename);
             } catch (Exception e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
             }
             }
             }
  2. 将会话bean注入servlet

    此应用程序中有两个servlet:UploadServlet和RetrieveServlet。 对这些servlet的更改有两个方面:

    • 首先,用@WebServlet注释对Servlet类进行注释,以指示是Servlet的类。
    • 其次,您使用@EJB批注来注入EJB,而不是进行home接口的JDBC查找。 EJB3中不需要主页。

    另一个选择是使用@LocalHome批注对EJB3 bean进行批注,并继续在servlet中进行主页查找。 但是,Liberty Server当前不支持这些注释。 也许更高版本的Liberty将支持EJB2客户端视图,但是到目前为止,您已升级了servlet以使用@EJB批注而不是EJB2主页查找。 (请参阅相关主题更多EJB2.x到EJB3迁移选项。)

    清单3展示了您对UploadServlet类所做的更改:首先,您在Servlet类上方添加了@WebServlet注释,添加了@EJB注释以将会话bean注入到Servlet中,并在init()中删除了JNDI主页查找。方法。 您还删除了对create()方法的调用以创建EJB bean实例。 对RetrieveServlet的更改是相似的,因此本文中未显示。 (您可以从MigratedSampleApp.zip文件下载迁移的工作空间,以查看这两个servlet。)

    清单3. UploadServlet
    package org.apache.geronimo.samples.document.web;
           
           import java.io.IOException;
           …
           
           @WebServlet({"/UploadServlet"})
           public class UploadServlet extends HttpServlet{
           
           private static final long serialVersionUID = -2773446199481416101L;
           @EJB
           private DocumentManagerBean docManager;
           
           protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
           String filename = req.getParameter("file");
           String userID = req.getUserPrincipal().getName();
           req.setAttribute("result", docManager.upload(userID, filename));
           req.getRequestDispatcher("jsp/main.jsp").forward(req, res);
           }
           
           protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
           doGet(req, res);
           }
           }

d。 迁移JBoss配置

现在,应用程序编码更改已完成,您可以使用第2部分中的配置迁移工具包从JBoss配置中创建Liberty配置。 (如果尚未安装WebSphere Configuration Migration工具,则可以在此处获取它。)

  1. 从迁移工具菜单中,选择WebSphere Application Server迁移>配置迁移>用于JBoss的WebSphere配置迁移工具 (图13)。
    图13. WebSphere配置迁移
    WebSphere配置迁移
  2. 在“ WebSphere配置迁移”对话框中,单击“ 浏览...”,然后选择服务器主文件夹; 例如,<JBOSS_HOME> \ dworks。 单击Next(图14)。
    图14. WebSphere配置迁移工具包
    WebSphere配置迁移工具包
  3. 在“指定目标环境”面板上,选择“ WebSphere Application Server Liberty”概要文件 ,然后单击“ 下一步”
  4. 如果在树中展开每个项目,则会看到其配置资源。 其中一些设置来自默认的JBoss配置,您不需要它们即可使应用程序正常工作。
  5. 取消选中除JDBCProvider:jdbc_DerbyDSWebSphere变量:VariableSubstitutionEntry:DERBY_JDBC_DRIVER_PATH之外的所有资源。 该应用程序不需要其他值。
  6. 在VariableSubstitutionEntry:DERBY_JDBC_DRIVER_PATH中,提供包含Derby JDBC驱动程序的文件夹。 最终选择应类似于图15。
    图15.审查发现的问题
    查看发现的问题
  7. 单击下一步
  8. 向导的最后一个屏幕包含生成的server.xml。 单击保存文件…,然后将server.xml文件保存在本地磁盘上。 您稍后将复制此文件以替换Liberty服务器的server.xml文件。
  9. 单击完成以结束向导。 生成的server.xml应该类似于清单4。
    清单4. Server.xml
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
          <server>
          <featureManager>
          <feature>jsp-2.2</feature>
          <feature>jdbc-4.0</feature>
          </featureManager>
          <jdbcDriver id="jdbc_DerbyDS" javax.sql.DataSource="org.apache.derby.jdbc.ClientConnectionPoolDataSource">
          <library>
          <file name="${DERBY_JDBC_DRIVER_PATH}/derbyclient.jar"/>
          </library>
          </jdbcDriver>
          <dataSource id="jdbc_DerbyDS" jndiName="jdbc/DerbyDS" jdbcDriverRef="jdbc_DerbyDS">
          <properties.derby.client databaseName="sampledb" maxPoolSize="20" minPoolSize="5" jndiname="jdbc/DerbyDS" connectionUrl="jdbc:derby://localhost:1527/sampledb;create=false" driverClass="org.apache.derby.jdbc.ClientDriver" driver="org.apache.derby.jdbc.ClientDriver" URL="jdbc:derby://localhost:1527/sampledb;create=false" idleTimeoutMinutes="5" create="false" url="jdbc:derby://localhost:1527/sampledb;create=false"/>
          </dataSource>
          <variable name="DERBY_JDBC_DRIVER_PATH" value=" C:\db-derby-10.11.1.1-bin\lib"/>
          </server>

e。 更新Liberty Server配置

尽管配置迁移工具包为您提供了具有JBoss资源的server.xml文件,但是您仍然需要添加应用程序所需的一些功能。 作为轻量级容器,Liberty仅添加您的应用程序所需的那些功能。 配置迁移工具包无法确定您的应用程序使用的功能,因此您必须将它们添加到Liberty server.xml文件中,如清单5所示。将自动添加基于配置所需的功能,但会自动添加该功能。必须手动添加应用程序(以粗体显示 )。

清单5.向server.xml添加功能
<featureManager>
     <feature>ejbLite-3.1</feature>
     <feature>appSecurity-2.0</feature>
     <feature>servlet-3.0</feature>
     <feature>jsp-2.2</feature>
     <feature>jdbc-4.0</feature>
     </featureManager>

F。 将角色映射到Liberty中的用户和组

JBoss服务档案库定义了用户和组,并将它们存储在几个文件中。 SAR是专有的JBoss归档文件,其中包含认证和授权配置(例如,用户,组等)。 在JBoss中,无法将web.xml文件中使用的角色映射到服务档案中定义的用户和组。 即,两者使用相同的名称。

在Liberty中将角色映射到用户和组是一个三步过程。 首先,在server.xml文件中定义用户和组(用户注册表),然后定义角色(在web.xml文件中定义)到ibm-application-bnd.xml中定义的组的映射。文件注册表,然后可以删除专有的JBoss SAR项目:

  1. 使用用户编辑器条目配置基本用户注册表。 组和用户信息来自SAR项目中的j2g_groups.properties和j2g_users.properties文件(清单6)。
    清单6.将basicRegistry添加到server.xml
    <basicRegistry id="basic" realm="sampleRealm">
           <user name="user" password="1" />
           <user name="editor" password="2" />
           <group name="authenticated">
           <member name="user" />
           <member name="editor" />
           </group>
           <group name="uploader">
           <member name="editor" />
           </group>
           </basicRegistry>
  2. 配置将角色映射到用户注册表中的用户或组或特殊主题的应用程序绑定(清单7)。
    清单7.使用Server.xml将安全角色映射到组
    <application type="ear" id="DocumentManager" name="DocumentManager"
           location="${server.config.dir}/apps/DocumentManager.ear">
           <application-bnd>
           <security-role name="authenticated">
           <special-subject type="ALL_AUTHENTICATED_USERS" />
           </security-role>
           <security-role name="uploader">
           <group name="uploader" />
           </security-role>
           </application-bnd>
           </application>
  3. 从EAR中删除SAR项目。 右键单击DocumentManagerSAR项目,然后单击“ 删除” 。 选择删除磁盘上的项目内容复选框,然后单击确定

G。 迁移Hibernate配置

最后一步是迁移Hibernate配置。 在此应用程序中,Hibernate配置与其他Hibernate映射文件一起保存在DocumentManagerHibernate / src文件夹中的hibernate.cfg.xml文件中。

您只需在配置中进行最少的更改即可将应用程序部署到Liberty概要文件:

  1. 在DocumentManagerHibernate / src中打开hibernate.cfg.xml并切换到Source视图。
  2. connection.datasource属性从java:jdbc / DerbyDS更改jdbc / DerbyDS
  3. 更改transaction.manager_lookup_class属性以使用WebSphere查找类org.hibernate.transaction.WebSphereExtendedJTATransactionLookup

本文包含有关将Spring和Hibernate与Liberty一起使用的更多详细信息。

H。 在Liberty上部署和测试应用程序

  1. 将DocumentManager项目导出为称为DocumentManager.ear的EAR文件。
  2. DocumentManager.ear文件保存在服务器的apps文件夹中(图16)。
    图16.部署项目
    部署项目
  3. 启动Liberty服务器。 在Web浏览器中,导航到应用程序URL: http://localhost:9080/document/ 。 确保您的Derby数据库仍在运行。
  4. 使用server.xml中指定的正确凭据以用户或编辑者身份登录。
  5. 成功登录后,应用程序将重定向到“文档”页面。 请注意,只有编辑者才能基于安全角色映射上载文档(图17)。
    图17.编辑器登录
    编辑器登录
    图18.用户登录
    用户登录
    图19.无效的登录
    登录无效

结论

本教程向您展示了如何获取编码为J2EE 1.4规范的旧版重量级JBoss应用程序,并在不涉及IBM WebSphere Application Server Liberty轻量级容器概要文件的情况下将其移动。 它还显示了如何使用Liberty Technology Preview识别任何移植问题,因此您可以非常快速地确定此应用程序是否适合Liberty轻量级容器。 最后,它向您展示了如何采用现有的JBoss服务器配置并将其移至Liberty。 这使您不仅可以非常快速地迁移应用程序代码,而且还可以迁移运行该应用程序所需的服务器配置。

您还遇到了一些可能遇到的挑战性问题,例如,迁移自定义JAAS登录模块或EJB2 Bean和客户端。 在大多数情况下,除了CMP bean之外,EJB2可以相当直接地迁移到EJB3。 此外,还提供了指向其他资源的链接,这些链接可能会帮助您进行到EJB3的迁移,从JAX-RPC到JAX-WS的迁移以及Spring和Hibernate应用程序的迁移。

遵循本系列文章中的指南,可以将应用程序从旧的重量级容器(如JBoss)移至现代的Liberty轻量级容器,从而帮助您使应用程序现代化。


翻译自: https://www.ibm.com/developerworks/websphere/techjournal/1506_vines/1506_vines-trs.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值