[转载]Little-G:为您的应用服务器瘦身

Little-G:为您的应用服务器瘦身


您是否常常构建简单的应用程序,但是必须用重量级应用服务器来部署它们?您是否知道在 Java™ Platform, Enterprise Edition(Java EE)众多的特性中有百分之几是我们常用的?我估计只有 10%。Apache Geronimo 是一种稳定、开源的 Java 2 Platform, Enterprise Edition(J2EE) 1.4 认证应用服务器;但是它的特性过于丰富繁冗,规模过于庞大。为了给 Web 应用程序构建一种简单、轻量但有用的容器,Apache 的开发人员创建了 Apache Geronimo Little-G,这是原始 Geronimo 应用服务器的简化版本。尽管 Little-G 不是 J2EE 认证的服务器,但是它具备最常用的符合 J2EE 规范的特性,包括一个完整的 Web 容器、事务管理器、数据库连通性。在本文中,我们将研究 Little-G 的特性并学习如何在其上部署和运行 Web 应用程序。

Geronimo 平台

在讨论 Little-G 和 Geronimo 时,必须解释底层的体系结构。Geronimo 平台具有一种模块化的体系结构。核心平台是一个用于单元服务组件 GBean 的运行时容器。相关的 GBean 被分组为可部署的单元,这样的单元称为配置(configuration)。Little-G 服务器使用 Geronimo 平台的模块化体系结构构建一个轻量级服务器。图 1 给出了 Little-G 的内部结构。


图 1. Geronimo 平台体系结构
Geronimo 平台体系结构

可 以通过在 Geronimo 平台上部署配置来添加新的服务和功能。Geronimo 内核和基本 Geronimo 系统配置构成了所有 Geronimo 服务器的核心平台。Little-G 是在这个核心之上构建的,添加了一个 Remote Method Invocation(RMI)命名配置,它提供命名服务功能。另外,RMI 命名配置提供一个线程池和插件安装程序。Java EE 服务器和 Java EE 安全配置以 RMI 命名配置作为它们的父配置。Java EE 服务器配置实现 Java EE 管理对象,比如服务器域和服务器对象。Java EE 安全配置实现基于 Java Authentication and Authorization Service(JAAS)的安全服务和 JAAS 登录模块,并创建一个基于配置文件的安全域,可以从用户应用程序访问这个安全域。在 Java EE 服务器上构建了事务配置,它提供事务处理功能。最后,Apache Tomcat 配置在 Geronimo 中添加了 Tomcat Web 容器。

除了 图 1 所示的配置之外,Little-G 还包含以下部署器和配置:

  • geronimo/geronimo-gbean-deployer/1.1.1/car 配置 —— 处理 Little-G 模块的部署
  • geronimo/j2ee-deployer/1.1.1/car 配置 —— 处理 Web 应用程序的 Java EE 部署
  • geronimo/tomcat-deployer/1.1.1/car 配置 —— 将 Web 应用程序部署到 Tomcat Web 容器
  • 三个配置:
    • geronimo/unavailable-ejb-deployer/1.1.1/car —— 处理 Enterprise JavaBeans(EJB)不可用的问题
    • geronimo/unavailable-webservices-deployer/1.1.1/car —— 处理 Web 服务不可用的问题
    • geronimo/unavailable-client-deployer/1.1.1/car —— 处理客户机应用程序部署器不可用的问题

blue_rule.gif
c.gif
c.gif
u_bold.gif回页首


Little-G 服务和特性

Little-G 提供以下服务和特性:

  • 一个基于 Tomcat 或 Jetty 的 Web 容器
  • 一个 Java EE 基本服务器
  • 一个基于 JAAS 的安全实现
  • 一个基于 RMI 的命名服务
  • 一个可以部署 GBean 配置的部署器
  • 一个可以部署 Web 应用程序的部署器
  • 通过 TranQL 代码实现的 JDBC 连通性,TranQL 是一种用于创建持久化引擎的开放源码实现
  • 用来创建和部署 Geronimo 插件的设施

    注意:Geronimo 插件与 Eclipse 插件相似,它们都包含打包的应用程序或额外的功能。Geronimo 插件封装了所有部署信息;因此,可以轻松地安装它们,而不需要关心环境特有的设置。


blue_rule.gif
c.gif
c.gif
u_bold.gif回页首


开始使用 Little-G

可以以两种方式之一设置 Little-G:

  • 下载并安装服务器归档文件。
  • 通过源代码构建服务器。

如果希望通过源代码构建服务器,那么必须下载源代码文件并运行特定的 Maven 目标来构建和创建服务器。但就本文而言,您将安装归档文件,为此,需要使用 Subversion 来下载 Geronimo 源代码。

下载并安装 Little-G

首先 下载 Geronimo。 在这里可以找到 Geronimo 服务器和 Little-G 的 UNIX® 和 Microsoft® Windows® 文件。下载 Little-G Apache Tomcat 压缩文件,并将它解压到 GERONIMO_HOME 文件夹中,如图 2 所示。


图 2. Little-G 目录
Little-G 目录

可以看到 Little-G 安装的目录结构与 Geronimo 安装很相似。它毕竟只是一种 Geronimo 安装。

对 Little-G 安装进行测试

Little-G 没有附带控制台应用程序,所以不能通过在浏览器中访问控制台应用程序(http://localhost:8080/console)来测试安装。对于 Little-G,必须使用 Command-Line Interface(CLI)与服务器进行交互。从 GERONIMO_HOME/bin 目录发出以下命令之一来启动服务器:


GERONIMO_HOMEin> java –jar server.jar

或:

GERONIMO_HOMEin> startup

服务器启动并在命令窗口中显示启动信息,如图 3 所示。


图 3. Little-G 启动消息
Little-G 启动消息

如果看到这些消息,就说明 Little-G 的安装工作正常。

Little-G 启动以下监听器:

  • 监听端口 1099 的命名服务
  • 监听端口 4242 的远程登录监听器
  • 用于 Apache Web 服务器集成的 Tomcat Accelerated Graphics Port(AGP)连接器
  • HTTP 和 HTTP over Secure Sockets Layer(HTTPS)监听器,分别监听端口 8080 和 8443
  • Java Management Extension(JMX)连接器,部署工具使用它来部署应用程序

您现在知道如何启动 服务器了。要想平稳地关闭它,应该从命令窗口发出以下命令:


GERONIMO_HOME/bin> shutdown –user system –password manager
blue_rule.gif
c.gif
c.gif
u_bold.gif回页首


修改 Little-G 设置

可以使用 Little-G 轻松地修改大多数系统设置(比如日志级别和 Web 监听器端口)。GERONIMO_HOME/var/config/config.xml 文件包含持久性的设置信息。例如,如果需要修改 Tomcat HTTP 监听端口,就修改 TomcatWebConnector GBean 的 port 属性的值,如清单 1 所示。


清单 1. Config.xml
				


0.0.0.0
8080
8443


0.0.0.0
8009
8443


0.0.0.0
8443


var/catalina


同样,可以通过修改 TomcatWebSSLConnector GBean 中 port 元素的值来修改 HTTPS 监听器端口。每当启动服务器时都会读取 config.xml 文件,这些属性值会应用于对应的 GBean。当部署新应用程序或者取消部署时,服务器也会更新这个文件来反映变化。在一般情况下,可以通过在这个文件中指定相应的条目,为模块中的任何 GBean 提供新值或者修改现有值。但是,如果需要修改日志设置,操作就不一样了。必须在 GERONIMO_HOME/var/log/server-log4j.properties 文件中进行修改。


blue_rule.gif
c.gif
c.gif
u_bold.gif回页首


下载、部署和运行示例应用程序

因为 Little-G 没有附带示例应用程序,所以必须单独下载并部署它们。为此,需要学习如何在 Little-G 中部署和运行 Web 应用程序。

下载示例应用程序

单击 Geronimo Documentation 页面 上的 Sample applications 链接,就会显示示例应用程序的列表。单击 Web application security sample 链接,并下载这个示例应用程序。(还可以从 下载 一节下载这个示例应用程序,timereport.zip)。在这个示例应用程序中,雇员可以输入他们的时间卡信息,经理可以输入时间卡信息并添加新雇员。这个应用程序使用基于数据库的安全域实现 Web 应用程序安全性。

设置数据库

注意:我使用了一个 postgreSQL V8.0 数据库(参见 参考资料 一节)。您可以使用任何其他数据库,但是我的示例清单使用的是适合 postgreSQL 的设置。

在建立可运行的数据库之后,运行 SQL 脚本(config/TimeReportDB.sql,可以在 下载 一节提供的 timereport.zip 中找到)。这个脚本创建用户和组表,您将使用这些表设置基于数据库的安全域。

在 Little-G 存储库中安装数据库驱动程序

您 已经看到了 Little-G 的目录结构:GERONIMO_HOME/repository 目录包含所有外部库。在这个目录中安装数据库驱动程序 .jar 文件。repository 目录结构在子目录中包含外部库,这些子目录名称符合 Maven 命名约定,见图 4。


图 4. Little-G 存储库
Little-G 存储库

在 commons-digester/commons-digester/1.6 目录中可以看到 commons-digester-1.6.jar 文件。这意味着,如果有一个条目的 groupID 为 cglib,artifactID 为 cglib-nodep,版本为 2.1_3,类型为 jar,那么 Little-G 会在 GERONIMO_HOME/repository/cglib/cglin-nodep/2.1_3 文件夹中寻找文件 cglib-nodep-2.1_3.jar。为了安装 postgresql-8.0.jar 文件,将它放在 repository 文件夹的 postgresql/postgresql/8.0 子目录中。

部署安全域

这 个示例应用程序使用一个基于数据库的安全域,在安装 Web 应用程序之前必须安装这个域。编辑安全域部署计划 —— config/TimeReportRealm.xml —— 指定依赖项为 postgreSQL 数据库驱动程序 .jar 文件、JDBC 驱动程序类和登录模块配置的 JDBC 连接 URL,如清单 2 所示。


清单 2. 安全域配置部署计划



console
TimeReportRealm
1.0
car



geronimo
j2ee-security
car


postgresql
postgresql
8.0
jar



class="org.apache.geronimo.security.realm.GenericSecurityRealm">
TimeReportRealm

ServerInfo


JaasLoginService


xmlns:log="http://geronimo.apache.org/xml/ns/loginconfig-1.1">
server-side="true" wrap-principals="false">
TimeReportRealm

org.apache.geronimo.security.realm.providers.SQLLoginModule<
/log:login-module-class>
org.postgresql.Driver
postgres

select userid, password from users where userid=?


select userid, groupname from usergroups where userid=?


jdbc:postgresql://localhost:5432/TimeReportDB






moduleId 元素为这个部署单元(也称为配置) 指定一个 Maven 风格的名称。这意味着,可以用统一资源标识符(URI)common/TimeReportRealm/1.0/car 从其他配置引用这个配置。还要注意,我在存储库中为 postgreSQL .jar 文件指定了一个 Maven 风格的依赖项定义。还指定了 JDBC 驱动程序类、数据库用户名和连接数据库(在这个数据库中已经创建了 users 和 usergroup 表)所用的 JDBC URL。

在修改部署计划之后,使用以下命令对配置进行部署:


deploy –user system –password manager deploy TimeReportRealm.xml

这个命令将安全域部署为配置 console/TimeReportRealm/1.0/car。如果需要取消这个安全域的部署,就使用以下命令:


deploy –user system –password manager undeploy console/TimeReportRealm/1.0/car


部署 Web 应用程序

可以从 release 目录或者本文的 下载 一节获得 Web 应用程序 .war 文件。为部署 .war 文件,执行以下命令:


deploy –user system –password manager deploy TimeReport.war

该命令将部署 Web 应用程序,可以在浏览器中访问 http://localhost:8080/timereport 来调用这个程序。可以输入 emp1 作为用户名,pass1 作为密码,从而作为雇员登录。要作为经理登录,可以输入 mgm1 作为用户名,pass3 作为密码。还可以打开 web.xml 和 geronimo-web.xml 部署描述符,从而进一步了解身份验证是如何定义的以及如何映射到安全域。


blue_rule.gif
c.gif
c.gif
u_bold.gif回页首


Little-G 的适用场合

如 果 Web 应用程序只需要事务处理设施和数据库连通性,那么就可以使用 Little-G。从这方面来说,Little-G 提供了一个完整的 Web 容器,具备所有相关且必要的 Java EE 特性。您已经看到一个简单的 Web 应用程序如何利用 Little-G 内置的 Web 安全特性。对于简单的小型 Web 应用程序来说,Little-G 是非常合适的。


blue_rule.gif
c.gif
c.gif
u_bold.gif回页首


结束语

本 文介绍了 Little-G 以及它为 Java EE 应用程序提供的服务,并解释了 Apache Geronimo 平台的模块化性质如何支持创建 Geronimo 的小型、轻量级版本。我们还在 Little-G 中配置、部署和运行了一个示例 Web 应用程序。Little-G 提供了 Geronimo 的一个简化版本,可以利用 Geronimo 的模块化性质在 Little-G 上开始构建应用程序。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/374079/viewspace-130306/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/374079/viewspace-130306/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>键盘打字</title> <style> /* 基本界面样式 */ *{ /*margin: 0;*/ padding: 0; box-sizing: border-box; list-style: none; /*outline: 1px dashed purple;*/ } body{ display: flex; height: 100vh; justify-content: center;/* 水平居中*/ align-items: center; background-color: #000;/* 随内容撑开且垂直居中 */ } .keyboard{ outline-width: 3px; /*background-color: red;*/ } ul.row{ display: flex;/* 弹性布局 */ /* /*height: 300px; */ } ul.row li{ outline-width: 2px; width: 3em;/*em是根据当前字体大小*/ height: 3em; text-align: center; line-height: 3em; border-radius: .4em; color: rgba(0, 0, 0, 0.7); letter-spacing: 1px; margin: 0.4em; } /*设置宽度*/ #tab{ width: 5em; } #caps{ width: 6em; } #leftShift{ width: 8em; } #enter{ width: 6em; } #rightShift{ width: 8em; } #back{ width: 5em; } /*设置颜色*/ .little{ background-color: crimson; /*深红色的*/ border: 2px solid crimson; } .little.selected{ background-color: transparent; color: crimson; } .ring{ background-color: coral; /*珊瑚红*/ border:2px solid coral; } .ring.selected{ background-color: transparent; color: coral; } .middle{ background-color:darkorange; /*深橙色*/ border: 2px solid darkorange; } .middle.selected{ background-color: transparent; color: darkorange; } .forefinger1st{ background-color: gold; border: 2px solid gold; } .forefinger1st.selected{ background-color: transparent; color: gold; } .forefinger2nd{ background-color: khaki;
最新发布
06-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值