使用 WebSphere Liberty 实现 Java EE 应用程序的现代化

应用程序现代化是一个旅程。没有魔法。通过几个小步骤对应用程序进行现代化是我推荐的方法。在本文中,我将介绍如何使用现代 WebSphere Liberty 运行时实现 WebSphere Traditional 应用程序的现代化。

本文是一系列文章的一部分,这些文章介绍了如何使用现代技术对 2010 年的示例 Java EE 应用程序进行现代化改造。

示例应用程序是一个简单的电子商务应用程序。所有后续现代化步骤的原始应用程序和源代码都可以在 GitHub 上以开源形式获得。

本系列的第一部分解释了如何在容器中运行 WebSphere Traditional 应用程序。本部分继续介绍如何使用针对容器优化的现代 WebSphere Liberty 运行时。

WebSphere Liberty 是一个全面、灵活且安全的 Java EE 和 MicroProfile 应用程序服务器,用于实现应用程序和云原生服务的现代化和构建。

IBM WebSphere Liberty 是一个 Java EE 应用程序服务器,具有专为云原生应用程序和微服务设计的低开销 Java 运行时环境。WebSphere Liberty 的创建具有高度可组合性、快速启动、使用更少的内存和易于扩展。
WebSphere Liberty 体系结构与开源 IBM Open Liberty(链接位于 IBM 外部)服务器运行时共享相同的代码库。这提供了额外的好处,例如低成本的实验、定制和从开源到生产的无缝迁移。

WebSphere Liberty 映像
需要做的第一件事是定义应用程序的运行时。有许多不同的 WebSphere Liberty 映像可用,它们具有不同的优点和缺点。它们以多种方式区分:JVM、JDK 版本、Java 版本、UBI 映像等。在 DockerHub 上查看这些图像的标签:

这是我用过的 Dockerfile:

FROM ibmcom/websphere-liberty:20.0.0.12-kernel-java8-openj9-ubi
USER root
COPY ./liberty/server.xml /config
COPY ./liberty/server.env /config
COPY ./liberty/jvm.options /config
ARG SSL=false
ARG MP_MONITORING=false
ARG HTTP_ENDPOINT=false
COPY ./CustomerOrderServicesApp/target/CustomerOrderServicesApp-0.1.0-SNAPSHOT.ear /config/apps/CustomerOrderServicesApp-0.1.0-SNAPSHOT.ear
COPY ./resources/ /opt/ibm/wlp/usr/shared/resources/
RUN chown -R 1001.0 /config /opt/ibm/wlp/usr/servers/defaultServer /opt/ibm/wlp/usr/shared/resources && chmod -R g+rw /config /opt/ibm/wlp/usr/servers/defaultServer  /opt/ibm/wlp/usr/shared/resources
USER 1001
RUN configure.sh

请注意,对于开发环境,可以忽略最后一行“RUN configure.sh”。有人告诉我,这“仅”对生产环境有用。不执行此脚本将在开发过程中为您节省大量时间。

WebSphere Liberty 配置
在下一步中,您需要定义pom.xml文件,或者在本例中定义不同的pom.xml文件。旧的 Java 项目通常使用各种子项目来生成不同的工件:耳朵、战争和罐子。我将在接下来的博客中写更多关于这方面的内容。

在pom.xml中,您应该声明对 Java EE 或现在的 Jakarta EE 的依赖关系。在许多情况下,这涵盖了大多数必要的依赖关系。

<dependency>
   <groupId>javaee</groupId>
   <artifactId>javaee-api</artifactId>
   <version>8</version>
   <scope>provided</scope>
</dependency>

接下来,需要定义 Liberty 服务器配置,以描述要使用哪些功能部件、如何访问数据库、HTTP 端点等。

这是我用过的:

<server>
  <featureManager>
      <feature>appSecurity-2.0</feature>
      <feature>ldapRegistry-3.0</feature>
      <feature>localConnector-1.0</feature>
      <feature>ejbLite-3.1</feature>
      <feature>jaxrs-1.1</feature>
      <feature>jdbc-4.1</feature>
      <feature>jpa-2.0</feature>
      <feature>jsp-2.3</feature>
      <feature>servlet-3.1</feature>
  </featureManager>
  <library id="DB2Lib">
    <fileset dir="/opt/ibm/wlp/usr/shared/resources/db2" includes="db2jcc4.jar db2jcc_license_cu.jar"/>
  </library>
  <dataSource id="OrderDS" jndiName="jdbc/orderds" type="javax.sql.XADataSource">
    <jdbcDriver libraryRef="DB2Lib"/>
    <properties.db2.jcc databaseName="${env.DB2_DBNAME}" password="${env.DB2_PASSWORD}" portNumber="${env.DB2_PORT}" serverName="${env.DB2_HOST}" user="${env.DB2_USER}"/>
    <connectionManager agedTimeout="0" connectionTimeout="180" maxIdleTime="1800" maxPoolSize="10" minPoolSize="1" reapTime="180"/>
  </dataSource>
  <httpEndpoint host="*" httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint">
    <tcpOptions soReuseAddr="true"/>
  </httpEndpoint>
  <application id="customerOrderServicesApp" name="CustomerOrderServicesApp-0.1.0-SNAPSHOT.ear" type="ear" location="CustomerOrderServicesApp-0.1.0-SNAPSHOT.ear">
    <classloader apiTypeVisibility="spec, ibm-api, third-party" />
  </application>
</server>

代码更改 - WebSphere Application Server Migration Toolkit
最具挑战性的部分是进行必要的代码更改。WebSphere Application Server Migration Toolkit 是一个很大的帮助!

您可以在 Eclipse 中安装该工具包并创建“软件分析器配置”。
在这里插入图片描述
选择选项“WebSphere Application Server 版本迁移”。
在这里插入图片描述
选择源和目标。
在这里插入图片描述
在此示例中,需要执行三个代码更改。结果可以在“软件分析器配置”视图中找到,尤其是在“Java 代码审阅”选项卡下。

第一个必要的更改是替换“org.codehaus.jackson”的用法。Eclipse 的 “Help” 视图很容易描述需要更改的内容。

在这里插入图片描述
下一个需要的更改是将 ‘com.ibm.json’ 替换为 Java EE 中的开源包。
在这里插入图片描述
第三个更改是 EJB 查找(在最新的 Liberty 版本中可能不再需要查找)。
在这里插入图片描述
转型顾问
除了 Eclipse Migration Toolkit 之外,Transformation Advisor 还显示其中一些结果。查看我之前的文章如何运行此工具。

以下是 Transformation Advisor 的结果:
在这里插入图片描述
在这里插入图片描述

之所以没有显示所有三个必要的代码更改,是因为 Transformation Advisor 试图使现代化尽可能简单。因此,该工具建议升级到 Open Liberty with Java EE 7,而不是显示升级到 Java EE 8 的 WebSphere Liberty 的结果,因为需要的更改较少。

下一步是什么?
在下一篇文章中,我将介绍如何将前端与业务逻辑分开。

本系列的所有文章都可以在 repo 中找到。

  • 17
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小徐博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值