扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
引言
|
IBM WebSphere Application Server Community Edition(以下称为 Community Edition)是基于 Apache Geronimo 的开源 Java™ Platform, Enterprise Edition (Java EE) 应用服务器。Community Edition 的资源占用量非常小,并且可以免费使用。
Community Edition 的基于 JSR-168 的管理控制台本质上是 Community Edition 中部署的一个 Web 应用程序,它为管理本地或远程服务器的许多方面提供了基于 Web 的用户友好的界面。如果您是第一次使用 Community Edition 和管理控制台,则文章 使用 WebSphere Application Server Community Edition 中的 Web 控制台 是一篇很好的入门文章,其中介绍了可以在控制台中执行的许多常见的管理任务。有了这些基础知识之后,本系列包括两部分,将向您介绍如何使用 Community Edition 控制台来执行高级管理任务:
第 1 部分讨论如何:
第 2 部分介绍:
|
使用 DB2 Express-C 数据库
文章 使用 WebSphere Application Server Community Edition 中的 Web 控制台 阐述了如何使用嵌入在 Community Edition 中的 IBM Cloudscape™ 数据库,以及如何创建数据库池。这里我们将介绍如何使用数据库池以及为 DB2 Express-C 创建数据库池。
DB2 Express-C 是一种先进的混合型数据服务器,可以支持关系数据库和纯 XML 存储。DB2 Express-C 是一种免费的数据服务器,用于开发和部署使用 XML、C/C++、Java、.NET®、PHP 等创建的应用程序。它可以运行多达两个双核 CPU 服务器、多达 4 GB 的内存、任何存储系统设置,而且无任何数据库大小限制和其他人为限制。
DB2 Express-C 和 Cloudscape 都是用于生产和开发的高价值数据服务器,而且免费提供。Cloudscape 非常适合于需要完全不可见的嵌入式 Java 应用程序数据服务器的应用程序。在应用程序需要具有高级功能(如增强的可扩展性、可管理性和 SQL 支持)的高性能和高可扩展数据服务器时,可以使用 DB2 Express-C。DB2 Express-C 非常适合于所有那些使用 PHP、.NET、C/C++、Java 和其他非 Java 编程语言创建的数据服务器应用程序。
您可以使用基于命令的用户界面工具(称为 DB2 Express-C 命令编辑器,请参见图 1)方便地与 DB2 Express-C 数据库进行交互,该工具包括两个窗格:
要打开 DB2 Express-C 命令编辑器,请导航到 Select Programs => IBM DB2 => Command Line tools => Command Editor。
图 1. DB2 Express-C 命令编辑器
创建数据库和表
下面是一个简短的练习,可帮助您获得一些 DB2 Express-C 实际操作体验。在本练习中,您将使用命令编辑器为 DB2 Express-C 创建一个数据库和表。然后,您将了解如何从管理控制台为下面要创建的示例数据库创建数据库池:
要创建一个名为“student”的新数据库,请在命令窗格中输入此命令,并单击 Execute(绿色箭头)按钮:
Create db student
在成功创建之后,结果窗格中将显示以下消息:
The CREATE DATABASE command completed successfully
要创建到数据库的 JDBC 连接,以便我们可以使用它,请执行以下命令:
Connect to student
要创建一个名为“student”的表,请在命令窗格中输入此命令,并单击 Execute 按钮:
Create table student(rollno VARCHAR(30), name VARCHAR(50), dob VARCHAR(40))
如果看到以下错误消息:
SQL1032N No start database manager command was issued
则表示没有启动您的数据库管理器。请在命令编辑器中执行以下命令启动数据库管理器:
db2start
|
创建 DB2 Express-C 数据库池
数据库池是一个数据结构,它包含 JDBC 驱动程序为连接特定数据库所需的信息。Community Edition 提供数据库连接池,您可以通过连接池将特定数据库绑定到 JNDI,并可以从应用程序访问它。
文章 U使用 WebSphere Application Server Community Edition 中的 Web 控制台 详细介绍了如何为嵌入到 Community Edition 中的 Cloudscape 数据库创建数据库池。这里,您可以为 DB2 Express-C 创建数据库池。对于任何其他 databases that are supported by Community Edition,您可以使用相同的方法。
要为 DB2 Express-C 数据库创建数据库池:
从 Console Navigation 窗格中,选择 Services category 下面的 Database Pools。数据库池 Portlet 将出现(图 2)。
选择 Using the Geronimo database pool wizard。
在数据库池创建向导(图 3)中,输入或选择以下值:
studentpool
student
(这是我们以前创建的数据库)
50000
是 DB2 Express-C 的缺省值。如果在安装过程中更改了该值,请指定实际的端口号。 将其余字段保留为原样。
单击 Deploy 以便将该池部署到服务器。
单击 Show Plan 可以看到池的部署计划(将在下面介绍)。
|
数据库池部署计划
Community Edition 使用特定于 Geronimo 的部署描述符,以下称为 Geronimo 部署计划。此 Geronimo 部署计划格式类似于 Java EE 1.4 中的 Java EE 部署描述符,但不同的是前者特定于应用服务器。它是基于 XML 框架的 XML 文件,该文件具有与应用程序模块或服务相关的配置信息。
作为在控制台中使用数据库池创建 Portlet 的替代方法,您还可以通过部署相应的部署计划为任何数据库创建新数据库池,这将是一个 .xml 文件。不过,您需要手动使用正确的 XML 框架创建计划,该框架在 <WASCE_HOME>\schema 目录中指定。此步骤可以方便地在控制台中执行,只需在一些字段中选择一些值即可,请参见上文。
清单 1 显示了在前一部分中创建的数据库池的部署计划。这是在选择 Show Plan 时显示的计划(图 3)。
清单 1. 数据库池部署计划
<?xml version="1.0" encoding="UTF-8"?> <connector xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector-1.1"> <dep:environment xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.1"> <dep:moduleId> <dep:groupId>console.dbpool</dep:groupId> <dep:artifactId>studentpool</dep:artifactId> ----> Database pool name <dep:version>1.0</dep:version> <dep:type>rar</dep:type> </dep:moduleId> <dep:dependencies> <dep:dependency> <dep:groupId>com.ibm.db2</dep:groupId> -----> Dependency files <dep:artifactId>db2jcc</dep:artifactId> <dep:version>8.2</dep:version> <dep:type>jar</dep:type> </dep:dependency> <dep:dependency> <dep:groupId>com.ibm.db2</dep:groupId> ----> Dependency files <dep:artifactId>db2jcc_license_cu</dep:artifactId> <dep:version>8.2</dep:version> <dep:type>jar</dep:type> </dep:dependency> </dep:dependencies> </dep:environment> <resourceadapter> <outbound-resourceadapter> <connection-definition> ----> Database connection information <connectionfactory-interface>javax.sql.DataSource </connectionfactory-interface> <connectiondefinition-instance> <name>studentpool</name> ----> Database pool JNDI name <config-property-setting name="User">Anitha</config-property-setting> <config-property-setting name="Password">bc0nf1dent</config-property-setting> <config-property-setting name="PortNumber">50000</config-property-setting> <config-property-setting name="ServerName">localhost</config-property-setting> <config-property-setting name="DatabaseName">STUDENT</config-property-setting> <config-property-setting name="DriverType">4</config-property-setting> <connectionmanager> <local-transaction/> <single-pool> <max-size>10</max-size> <min-size>0</min-size> <match-one/> </single-pool> </connectionmanager> </connectiondefinition-instance> </connection-definition> </outbound-resourceadapter> </resourceadapter> </connector> |
您将看到所有与 DB2 Express-C 数据库相关的配置信息(如数据库名称、连接信息、JDBC 驱动程序依赖项等)都已在上面的计划中指定。这适用于任何数据库,无论是用于 DB2 Express-C、Cloudscape 的数据库,还是任何其他受支持的数据库。您只需指定 JDBC 驱动程序依赖项和相应的连接信息。
|
使应用程序访问数据库池
根据规范,应用程序模块使用数据库连接池需要两个步骤:
在部署描述符中指定数据库池
您需要在两个文件中为数据库池指定资源参考。一个是 Java EE 1.4 规范中的标准部署描述符文件,另一个是特定于 Geronimo 的部署计划。表 1 显示了与应用程序存档类型相对应的实际文件。
表 1. 部署描述符文件
部署的存档文件 | Java EE 1.4 规范中的标准部署描述符文件 | 特定于 Geronimo 的部署计划 |
---|---|---|
Web 应用程序存档 (WAR) 文件 | web.xml | geronimo-web.xml |
包含 EJB 的 JAR | ejb-jar.xml | openejb-jar.xml |
企业应用程序 (EAR) 文件 | application.xml | geronimo-application.xml |
Java EE 连接器资源存档 (RAR) | ra.xml | geronimo-ra.xml |
Java EE 客户机应用程序存档 (JAR) | application-client.xml | geronimo-application-client.xml |
例如,让我们了解一下如何在 Web 应用程序的部署计划中指定资源参考。
在 WEB-INF/web.xml 中
在部署数据库池之后,应用程序模块可以使用在配置过程中指定的名称来引用它。为此,您应在其标准 Java EE 部署描述符 (web.xml) 中声明一个类型为 javax.sql.DataSource 的 resource-ref。清单 2 显示了如何在 web.xml 文件中指定资源引用。
清单 2. web.xml
<resource-ref> <res-ref-name>jdbc/MyDataSource</res-ref-name> ---> Resource reference <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> </resource-ref> |
在 WEB-INF/geronimo-web.xml 中
在该模块的 Geronimo 部署计划中,您需要指定将使用服务器中的哪个连接池来满足 Web 模块所需的数据源。为此,您需要将数据库池的名称指定为 ref-name,该名称应映射到 web.xml 中的 resource-ref。清单 3 显示了如何在 geronimo-web.xml 文件中指定资源引用。
清单 3. geronimo-web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.1"> <environment> <moduleId> <artifactId>MyWebApp</artifactId> </moduleId> <dependencies> <dependency> <groupId>console.dbpool</groupId> <artifactId>studentpool</artifactId> </dependency> </dependencies> </environment> <context-root>/MyWebApp</context-root> <!-- security settings, if any, go here --> <resource-ref> <ref-name>jdbc/MyDataSource</ref-name> ---> Resource reference <resource-link>studentpool</resource-link> </resource-ref> </web-app> |
在部署应用程序时,它将查找 Geronimo 部署计划。如果您尝试部署没有部署计划的 Java EE 应用程序模块,服务器将尽力使用缺省值执行操作。
此 Geronimo 部署计划可以作为单独文件保存,也可以打包在应用程序中。如果没有打包在应用程序中,那么您可以在应用程序部署过程中在 Plan 字段中指定计划文件。如果部署计划是存档的一部分,则它丢失的机会将会小得多。不过,将计划保存为一个单独的文件可为您提供更大的灵活性,因为您无需每次在对部署计划进行更改时都打包该文件。
在应用程序模块中
清单 4 显示了在应用程序模块中查找创建的数据库连接池所需的代码。
清单 4. 应用程序代码
InitialContext ctx = new InitialContext(); DataSource ds = ctx.lookup("java:comp/env/jdbc/MyDataSource"); ---> Resource reference Connection con = ds.getConnection(); |
JNDI 查找字符串是 java:comp/env/ 加上在 web.xml 中使用的 res-ref-name(清单 2)。而且,还需记住,资源引用名称 jdbc/MyDataSource 在 web.xml、geronimo-web.xml 和应用程序代码中应该相同。
Community Edition 不支持在其中列出所有资源的“全局 JNDI 空间”。应用程序访问数据库池的唯一便捷方法是使用资源引用,并通过组件的本地 java:comp/env/ 命名空间访问池(如上文所述)。
|
创建安全域
安全域是保护 Web 应用程序资源的机制。它向您提供使用定义的安全约束保护资源的能力,然后定义可以访问受保护资源的用户角色。Community Edition 提供各种类型的安全域,可以根据其身份验证机制的后端情况对它们进行分类。Community Edition 支持的安全域类型包括:
属性文件域
让我们看一个使用管理控制台创建属性文件域的示例,并了解它是如何工作的。可以用类似的方式创建其他类型的域。我们这里之所以选择此域,是因为在所有类型的安全域中它是最简单的,不需要设置任何先决条件,并且文本编辑器足以创建包含用户和组信息的属性文本文件。
要从管理控制台创建属性文件域,请执行以下操作:
在 <wasce_home>\var\security 目录下(其中 <wasce_home> 是 Community Edition 的安装目录),创建名为 user1.properties 的文本文件。
在此新文件中,按逐行方式为您希望向其提供应用程序访问的用户指定用户名和相应的密码,如清单 6 所示。此文件的每一行表示 <username>=<password>。保存此文件。
Anitha=anitha123 Sridhar=Sridhar123 Manu=manu123 Vamsi=vamsi123 |
在 <wasce_home>\var\security 目录下(其中 <wasce_home> 是 Community Edition 的安装目录),创建名为 group1.properties 的文本文件。在此新文件中,按逐行方式指定组名称和属于每个组的用户,如清单 7 所示。此文件的每一行表示 <group name>=<username1>、<username2> ...... 确保 <username1>、<username2> 等包括在 user1.properties 文件中。在清单 7 的示例中,Anitha 和 Sridhar 属于 group1;Manu 和 Vamsi 属于 group2。保存该文件。
group1=Anitha, Sridhar group2=Manu, Vamsi |
在管理控制台的 Console Navigation 窗格中,通过单击安全类别下的 Security Realms 链接,启动安全域 Portlet。图 4 显示了安全域 Portlet,它显示所有可用的安全域。
在缺省情况下,Community Edition 通过属性文件使用名为 geronimo-properties-realm(图 4)的安全域对用户进行身份验证。相应的文件是位于 <wasce_home>\var\security 目录下的 users.properties 和 group.properties。
选择 Add new security realm 启动 Create Security Realm 向导。
在步骤 1 面板(图 5)上,输入或选择以下值:
单击 Next。
在步骤 2 面板(图 6)上,输入以下值:
var/security/users1.properties
(在本例中)
var/security/group1.properties
(在本例中) 单击 Next。
(在 URI 字段中,只使用正斜杠,并且 URI 不能以斜杠开头。指定与 Community Edition 的主目录相关的位置。)
在步骤 3 面板(图 7)上,根据情况全部选中三个选项或者选中某一个(Enable Auditing、Enable Lockout 和 Store Password)。
单击 Test a Login 按钮,以测试凭据的工作状态是否良好。
要查看域的部署计划,请选择 Skip Test and Show Plan。
要部署域,请选择 Skip Test and Deploy。
|
成功创建和部署域之后,域的名称将列在安全域 Portlet(图 4)中。您可以在部署描述符中,通过使用 Portlet 提供的 edit 和 usage 链接来编辑或查看此域的用法。
该域现在可供使用了。通过使用这些域,您可以防止未授权用户访问您的应用程序。
|
密钥存储库
密钥存储库用于存储加密密钥和证书。您需要使用密钥存储库将 Community Edition 配置为支持 HTTPS 访问 Web 应用程序。也就是说,要定义 Tomcat HTTPS 连接器,您必须指定包含证书(用于加密使用 SSL(安全套接字层)协议交换的数据)和密码的密钥存储库文件的名称。
密钥存储库中的证书具有以下两个重要功能:
它包含用于加密在 SSL 连接上交换的数据的公钥和私钥。当数据流经网络时,加密可以防止数据被查看或修改。服务器的证书自动发送到期望使用 SSL 连接的每个客户机。
它包含一组凭据,这些凭据标识服务器和与该服务器关联的公司。这些凭据是否可信取决于客户机是否信任对证书进行数字签名的证书颁发机构。
在 Community Edition 中,Keystore Configuration 工具(图 8)可供在控制台上使用。您可以使用此工具创建、编辑和删除密钥存储库及其内容。要启动该工具,请转到 Console Navigation 窗格,并单击安全类别下的 Keystores 链接。
图 8. Keystore Configuration 工具
Keystore Configuration 工具可显示密钥存储库文件、密钥存储库内容以及 Editable 和 Available 标志的状态;即锁定密钥,还是取消锁定密钥。
带有证书的 Community Edition 中的缺省密钥存储库是“geronimo-default”。您可以使用它测试 SSL 连接。此密钥存储库的密码是“secret”,相应的密钥存储库文件位于 <wasce_home>/var/security/keystore 目录下。
密钥存储库开始时是锁定的,不能编辑。Editable 标志指示是否取消锁定密钥存储库,可以进行编辑(通过输入密钥存储库密码);此状态在当前登录会话期间持续不变。Available 标志指示是否保存了密码,使密钥存储库用于服务器中的其他组件。
要取消锁定 Editable 密钥存储库,请执行以下操作:
图 9. 取消锁定密钥存储库
仅在 Editable 锁定打开时,才能够查看和编辑密钥存储库的内容,它由可用的密钥和证书组成(图 10)。在打开时,您可以创建、修改和删除私钥和受信任证书项。
图 10. 显示取消锁定的密钥存储库
按照相同的方法可取消锁定 Available。取消锁定后,将能够生成 CSR(证书签名应答),或导入 CA(证书颁发机构)应答。稍后将详细介绍这些元素。
创建密钥存储库
正如上面提到的,要将Community Edition 配置为支持 HTTPS 访问 Web 应用程序,您需要使用带有证书的密钥存储库。您可以使用现有密钥存储库,或创建新的密钥存储库。
要创建新的密钥存储库,请执行以下操作:
图 11. 创建密钥存储库
成功创建密钥存储库后,密钥存储库将显示在 Keystore Configuration 工具中(图 8),相应的密钥存储文件将存储在 <wasce_home>\var\security\keystores 文件夹中。
生成密钥
要在 Community Edition 中定义 HTTPS 连接器,您需要带有证书的密钥存储库。创建私钥后,它将创建密钥对和自签署证书。您可以使用此证书将 Community Edition 配置为支持 HTTPS 访问 Web 应用程序。
要创建新的密钥,请执行以下操作:
单击 Generate Key 按钮后,会立即生成新的私钥,并显示在 Keystore contents portlet 中(图 12)。单击生成的密钥,将显示与其一起创建的自签名证书信息(图 15)。
获取证书颁发机构 (CA) 签名的证书
成功生成私钥后,您可以使用与其一起生成的自签名证书,将 Community Edition 配置为支持 HTTPS 访问 Web 应用程序。在生产环境中,最好使用由知名证书颁发机构 (CA)(如 VeriSign)签名的证书。将此 CA 指定为受信任证书颁发机构的客户机随时接受 CA 颁发的任何证书。
在 Community Edition 中,要获得签名的证书,您需要使用 Keystore Configuration 工具生成 CSR,并将其发送到内部或外部 CA。CA 将验证该请求,并颁发证书进行应答。从 CA 收到应答后,您可以将该证书导入到密钥存储库。为此,请转到 Keystore Configuration 工具的 Keystore Contents portlet(图 12),并单击生成的私钥。将显示密钥的内容(图 15)。
图 15. 生成 CSR 并导入 CA 应答
在 Keystore Configuration portlet 上,单击 Generate CSR,将使用定义 CSR 的二进制格式的 PKCS10 标准生成证书请求。将文本区域复制到文件,并将其保存为文件(如,保存为 csr.txt)。
接下来,您需要使用上面生成的 CSR 请求 CA 颁发证书。要请求证书,请转到 CA 的网站,并定购证书。您需要提供在步骤 1 中获取的 CSR(即 csr.txt 的内容),如 CA 所请求的。然后,您应从 CA 接收证书。将其保存在文件(如 ca_reply.txt)中,并确保该文件中包括“BEGIN CERTIFICATE”和“END CERTIFICATE”行,例如:
-----BEGIN CERTIFICATE----- The certificate contents... ----END CERTIFICATE----- |
(上面的示例省略了实际证书数据。)
在本示例中,我们使用了一个内部 CA 来获取应答,并将其粘贴到下面,以便向您展示一个完整的证书。(参见图 17)。
CA 为 CSR(通常为 PKCS7 编码的证书应答)签名证书后,需要将其导入到密钥存储库,这样,如果任何客户机使用 CA 签名的证书请求 Web 服务器,Web 服务器都能够成功执行 SSL 握手。要导入密钥存储库,请执行以下操作:
支持 HTTPS 访问 Web 应用程序的配置
要配置 Community Edition,以便它支持 HTTPS 访问 Web 应用程序,您需要使用客户机身份验证选项创建 HTTPS 侦听器。要完成此任务,请执行以下步骤:
从控制台右侧的 Console Navigation Pane,选择 Server 类别下的 Web Server。
选择 Add new HTTPS Listener for Tomcat(图 19)。
指定字段值(在图的下方对它们进行了描述),并单击 Save 按钮(图 20)。
0.0.0.0
。
8444
,它是 HTTPS 的缺省端口。
var/security/keystore/SampleKeyStore
,它是您前面生成的密钥存储库 SampleKeyStore 的位置。
var/security/keystore/SampleKeyStore
。
secret
)
|
在单击 Save 按钮时,将创建新的用于 Tomcat 的 HTTPS 侦听器,并开始使用上面提到的配置。新的侦听器也显示在 Network listeners portlet 中(图 17)。
|
结束语
本系列包括两个部分,第 1 部分介绍了高级控制台功能,它使管理员能够:
此外,本文还向您介绍了 DB2 Express-C 数据库的入门知识,并开始对其使用了命令编辑器。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者