"Liberty Profile" - IBM WebSphere Application Server V8.5





5.00/5 (3投票s)
IBM WebSphere Application Server V8.5 Liberty profile 是 WAS 的一个灵活且动态的服务器配置文件,它使 WAS 服务器能够仅部署所需的自定义功能,而不是部署一套可用的 JEE 组件。
IBM WAS 中的 Liberty profile 是什么?
Liberty Profile 是 IBM WebSphere Application Server V8.5.5.5 的一部分。它是 WebSphere Application Server 的一个非常轻量级的配置文件。Liberty profile 是 WAS 的一个灵活且动态的配置文件,它使 WAS 服务器能够仅部署所需的自定义功能,而不是部署一套可用的 JEE 组件。开发人员可以根据业务需求选择所需的功能并将其推送到应用服务器。
WAS Liberty profile 最适合开发处理关键任务企业应用程序的开发人员。它甚至可以用于生产部署。IBM WAS Liberty profile 的当前版本符合 Java EE 6 标准,并且适用于使用此 Java EE 6 认证 Web 配置文件的应用程序。
Liberty profile 也被称为 WAS 从 8.5 开始的轻量级、精简版本。如果我们有有限且定义明确的服务器组件集,我们可以选择在应用程序开发中使用它。
WAS Liberty profile 架构
下面是 Liberty profile 的高层架构
架构组件说明
- Liberty Kernel:它是核心服务器配置文件。
- Java EE 6+:标准 Java EE6 API
- 功能:JSP、JSF、Web 应用安全、Servlet、JMS 等。
- 应用程序:Web 应用程序、企业应用程序
- OSGi Framework Runtime:内置运行时捆绑包。
WAS Liberty Profile 如何工作
- 如果 Web 应用程序只需要一个 Servlet 引擎,那么 Liberty profile 不会启动所有其他组件,而是仅启动 WAS 内核、HTTP 传输和 Web 容器,以便开发人员可以快速启动和部署应用程序。
- 如果应用程序需要持久化功能,并希望使用 JPA Provider 组件来访问关系数据 (RDBMS),开发人员只需在 XML 中添加 JPA 配置,Liberty profile 就会在应用程序中提供持久化功能。
- 我们在 <featureManager> 标签中定义的功能集描述了为配置的服务器特定实例定义的具体配置文件,然后这些功能列表会针对部署到应用程序服务器的应用程序进行定制。在内部,这些功能是离散的 JAR 集合,本质上是 OSGi 捆绑包,一旦添加到服务器配置文件 (例如 server.xml) 中就会被初始化和启动。
标签用于定义应用特定的 JEE 功能。
- Liberty profile 在一个名为 OSGi runtime 的动态运行时环境中工作。OSGi 服务用于管理基于 JEE 的组件生命周期,以及依赖项的注入和它们的运行时配置。在此步骤之后,服务器进程由一个单一的 JVM 组成,称为 Liberty kernel,以及应用程序所需的任何可选功能。然后,配置的功能代码和大部分内核代码都在 OSGi 框架 (Open System Gateway) 中作为独立的 OSGi 捆绑包或 OSGi 模块运行。
Liberty profile 支持完整的 WebSphere Application Server 编程模型的子集。它支持以下类型:
- Web 应用程序
- OSGi 应用程序
- Enterprise JavaBeans (EJB) 应用程序
OSGi Framework 生命周期
OSGi 框架遵循 OSGi 生命周期来管理其 Bundles。下面是 OSGi 的典型生命周期。
如何安装 WAS Liberty profile?
有两种方法可以下载和安装 Liberty profile runtime
- 从您的 Eclipse IDE 中。
- 作为独立的 JAR 文件,您可以从命令行安装。
请参考以下 URL 下载
https://developer.ibm.com/wasdev/downloads/
"Liberty profile"是 IBM WAS 产品的一部分,并且作为 WebSphere Application Server 的内置核心功能提供。Liberty profile 根本不是一个独立的产品。它是一个具有丰富功能集的应用程序服务器 (WAS) 运行时环境,具体功能集因 WebSphere Application Server 的不同版本而异。
为什么我应该使用 WAS Liberty Profile?
使用 Liberty profile runtime 有一些关键优势,列出如下:
WAS Liberty profile 简单配置
Liberty profile 使用 XML 文件以非常简单高效的方式配置服务器,非常容易。例如,默认的 server.xml
配置文件可能如下所示:
<server description="test server"> <!—Enable features which you would like to use --> <featureManager> <feature>jsp-2.2</feature> </featureManager> <httpEndpoint id="appHttpEndpoint" host="localhost" httpPort="9080" httpsPort="9443" /> </server>
根据上面的默认 server.xml 配置,它基本上启用了 JSP 2.2 功能,该功能依赖于 Servlet 3.0 功能;因此,Servlet 功能会自动启用。我们不需要在 WAS server.xml 配置文件中显式调用和定义它。
WAS Liberty profile 配置“代码片段”
以下是一些配置 WAS Libertry Profile 的代码片段。我们可以在应用程序开发中根据需要使用它们。
<server> <featureManager> <feature>servlet-3.0</feature> <feature>mylocalConnector-1.x</feature> </featureManager> </server>
上面的代码将为 IBM Webspahere Server 中配置的应用程序启用 servlet-3.0 API 和 myLocalConnector-1.x。
<server description= "Dev Server DV 33-04"> <featureManager> <feature>servlet-3.x</feature> </featureManager> <application id="TestWebApp" location="WebApps/Test.war" name="TestWebApp" type="war" </server>
上面的代码将为 Web 应用程序 TestWebApp 下名为 Test.WAR 的依赖 WAR 文件启用 servlet-3.0 API。
<server description="My Test server"> <featureManager> <!--enable jndi api for datasource lookups --> <feature>jndi-1.0</feature> </featureManager> </server>
上面的代码将为应用程序启用 jndi-1.0 版本。
<client> <featureManager> <feature>javaeeClient-7.x</feature> <featureManager> <application id="CLIENT_APP_ID_VALUE" name="CLIENT_APP_TYPE" type="ear" location="clientAppType.ear"/> </client>
上面的代码将启用 java client api v7,并将其应用于 EAR 文件部署时。
数据源配置片段
<?xml version="1.0" encoding="UTF-8"?> <server description="My Test DB server"> <!-- Enable features --> <featureManager> <feature>jdbc-4.x</feature> </featureManager> <datasource databaseName="${was.server.dir}/CustomerDB" id="datasource_id" jndiName="data/jndi/lookup/Bank/CustomerDB" </server>
上面的代码将启用 jdbc-4.0 API,并根据 jndi 查找启用配置的数据库名称。
WAS Liberty profile 中的标准 JEE 规范
以下 Oracle JEE/J2EE/JSR 规范在稳定的 IBM WAS Liberty profile 中可用。开发人员可以根据应用程序需求使用上述代码片段配置任何功能。
- CDI 1.2
- JSP 2.3 和 EL 3.0
- 应用程序客户端 1.0
- JASPIC 1.1
- JACC 1.5
- SIP Servlets 1.1 和工具
- SPNEGO 支持
- OSGi 应用集成
- JDBC 4.1
- OSGi 和 Web 3.1 facet 配置用于 OSGi bundles
- JAX-RS 2.0 客户端向导
- 支持远程开发
- 自动扩展和动态路由
- 实时通信 (WebRTC) 和 CouchDB
- JAX-RS 2.0,Java Batch
- JMS 2.0,JPA 2.1
- Bean validation 1.1
- JSON-P 1.0
- EJB 3.2 Lite
- Concurrent-1.0
- Servlet 3.1
- OpenID Connect
- Java 8 兼容性
- WebSockets
挑战
- Liberty Profile 可以免费使用,这很好,但仅限于开发环境,不能用于生产环境。如果我们想在生产环境中使用 Liberty Profile,我们仍然需要支付通常的 IBM WAS 许可费用,这听起来不太好。
- 市场上还有其他轻量级服务器,即使在生产环境中也可以免费使用,因此选择 Liberty profile 而不是那些选项仍需要评估。
- Liberty Profile 不提供任何 UI,如管理控制台来执行服务器特定的有用配置操作,如更新服务器配置或安装/卸载应用程序等,因此我们必须依赖 Eclipse/RAD/netbeans 编辑器来更新 server.xml 文件,或者必须手动修改它,这对于开发人员来说似乎不是一个可行的选择。
- 应用程序开发人员将此服务器与 Tomcat 和 Glassfish 进行比较,它们已经存在了很多年,因此这可能是迁移到 liberty profile 的最大挑战之一。
- 在最新版本中,liberty profile 提供了许多新功能,因此观察 Liberty Profile 如何处理不断增加的功能负载及其占用的空间 (约 60MB) 将很有趣。
- 它与较低版本的 IBM Websphere Server (5,6,7) 不兼容,这可能对使用它们的开发人员和应用程序构成挑战。
总结
总而言之,我们可以说 Liberty Profile 是当今市场上变化最快、最有趣的应用服务器之一。因此,我们应该真正关注它们的未来版本。新的 Beta 版本正在市场上快速发布,并包含许多新功能,只需简单的配置即可在我们的应用程序中使用。IBM 应该真正关注为 Liberty Profile 开发人员构建 UI 和一些迁移工具,以便他们能够与 Tomcat、GlassFish、Jboss 等主要竞争对手快速采用它。观察 Liberty Profile 的最新版本如何处理不断增加的功能与占用的空间 (这是 IBM WAS Liberty Profile 的主要优点) 将非常有趣。
参考文献
https://developer.ibm.com/wasdev/websphere-liberty/
https://developer.ibm.com/wasdev/
https://developer.ibm.com/wasdev/blog/2013/03/29/introducing_the_liberty_profile/
https://developer.ibm.com/wasdev/docs/developing-applications-wdt-liberty-profile/