Apache Geronimo 3.0.1 常用命令与部署工具详解

逐参数实测 Geronimo 3.0.1 的 bin/geronimo 七个子命令与 bin/deploy 十八条命令,覆盖连接凭据与 login 免凭据、模块的部署/分发/启停/卸载/重部署全流程、encrypt 在线与离线加密,以及 JDK8 客户端 Main not found、选项顺序 Too many arguments 等实测坑,全部回显在 Ubuntu 22.04 + Zulu JDK 7 实测采集。

Apache GeronimoApache Geronimo2026/10/15

Apache Geronimo 3.0.1 常用命令与部署工具详解

目标:逐参数实测 Apache Geronimo 3.0.1 的两条命令主线——bin/geronimo 服务器控制脚本与 bin/deploy 部署工具,给出每个命令的真实回显、可照抄的参数组合,以及实测踩到的错误现场;全部命令与回显均已在 Ubuntu 22.04(x86_64)+ Zulu JDK 7 实测通过。

一、环境信息

  • 操作系统:Ubuntu 22.04.5 LTS(x86_64)
  • JDK:Zulu 7.56.0.11(OpenJDK 1.7.0_352),JAVA_HOME=/opt/zulu7.56.0.11-ca-jdk7.0.352-linux_x64
  • 服务器:Apache Geronimo 3.0.1(Tomcat 7 完整包,内嵌 Tomcat 7.0.39.1,65 个模块)
  • 安装目录(下文记为 G):/opt/geronimo-tomcat7-javaee6-3.0.1
  • 默认管理员账号:system / manager
  • 连接端口:deploy 工具默认连接 localhost:1099(var/config/config-substitutions.properties 中 NamingPort = 1099),HTTP 端口 HTTPPort = 8080

JDK 版本基线确认:

export JAVA_HOME=/opt/zulu7.56.0.11-ca-jdk7.0.352-linux_x64
export PATH=$JAVA_HOME/bin:$PATH
java -version
openjdk version "1.7.0_352"
OpenJDK Runtime Environment (Zulu 7.56.0.11-CA-linux64) (build 1.7.0_352-b01)
OpenJDK 64-Bit Server VM (Zulu 7.56.0.11-CA-linux64) (build 24.352-b01, mixed mode)

⚠️ 注意:deploy 客户端与服务器走同一套 OSGi 引导代码,JDK 8 下同样无法运行(见 4.4 节实测),执行本文所有命令前必须先把 JAVA_HOME 指向 JDK 6/7。

二、命令体系总览

Geronimo 3.0.1 的命令入口只有两个脚本,都在安装目录的 bin/ 下:

脚本职责典型形态
bin/geronimo服务器进程生命周期:前台/后台启动、停止、调试./bin/geronimo start
bin/deploy连接运行中(或离线)服务器,做模块部署、查询、启停、加密等./bin/deploy --user system --password manager deploy x.war

bin/geronimo 不带参数时输出如下(完整 Usage,实测):

cd /opt/geronimo-tomcat7-javaee6-3.0.1
./bin/geronimo
Using GERONIMO_HOME:   /opt/geronimo-tomcat7-javaee6-3.0.1
Using GERONIMO_SERVER: /opt/geronimo-tomcat7-javaee6-3.0.1
Using GERONIMO_TMPDIR: /opt/geronimo-tomcat7-javaee6-3.0.1/var/temp
Using JRE_HOME:        /opt/zulu7.56.0.11-ca-jdk7.0.352-linux_x64/jre
Usage: geronimo command [geronimo_args]
commands:
  debug             Debug Geronimo in jdb debugger
  jpda run          Start Geronimo in foreground under JPDA debugger
  jpda start        Start Geronimo in background under JPDA debugger
  run               Start Geronimo in the foreground
  start             Start Geronimo in the background
  stop              Stop Geronimo
  stop --force      Stop Geronimo (followed by kill -KILL)

args for debug, jpda run, jpda start, run and start commands:
  -q     --quiet           No startup progress
  -l     --long            Long startup progress
  -c     --clean           Clean OSGi bundle cache
  -v     --verbose         INFO log level
  -vv    --veryverbose     DEBUG log level
  -vvv   --veryveryverbose Trace log level
  -o     --override        Override configurations. USE WITH CAUTION!
  -h     --help            Detailed help.
  -s     --secure          Enable Geronimo for two way secure JMX communication.

args for stop command:
   -u     --user          Admin user
   -p     --password      Admin password
          --host          Hostname of the server
          --port          RMI port to connect to

注意实测结论:status 不是合法子命令,./bin/geronimo status 不会报错也不会显示状态,只会打印上面这段 Usage——判断服务器是否起来要用端口探测(如 curl http://localhost:8080/console/)。

bin/deploy 不带任何参数时输出:

No command has been provided.

usage: java -jar bin/deployer.jar [general options] command [command options]

The general options are:
 -d,--driver <driver.jar>
 -port,--port <port>
 -U,--uri <uri>
 -host,--host <hostname>
 -h,--help
 -o,--offline
 -p,--password <password>
 -s,--syserr
 -secure,--secure
 -u,--user <username>
 -v,--verbose
 -vv,--veryverbose
 -vvv,--veryveryverbose

The available commands are:
    1. Common Commands
        deploy
        login
        redeploy

./bin/deploy help all 可以输出全部 18 条命令的完整帮助,实测清单如下(本文实测展开的命令标 ✔,仅引帮助原文未展开的标 ✖):

命令用途(依 help 原文)本文实测
deploy部署模块(可带 plan),部署后自动启动✔
distribute只把模块加工进服务器、不启动✔
list-modules列出服务器上的模块,--all/--started/--stopped 过滤✔
list-targets列出配置存储目标✔
start启动已存在但未运行的模块✔
stop停止运行中的模块(部署信息保留)✔
undeploy停止并删除模块的部署文件✔
redeploy卸载旧版并部署新版✔
login保存连接凭据到 ~/.geronimo-deployer✔
encrypt为部署 plan 加密字符串(--offline 免服务器)✔
help显示某条命令或 all 的帮助✔
restart重启模块(先 stop 后 start 的组合)✖
search-plugins从 Maven 仓库检索可安装的 Geronimo 插件✖
install-plugin安装 CAR 格式插件✖
install-library把 jar 安装进服务器仓库(可指定 groupId)✖
install-bundle安装 OSGi bundle 到 repository✖
uninstall-bundle从 repository 卸载 OSGi bundle✖
unlock-keystore解锁密钥库及其私钥✖

💡 技术拓展:与 Tomcat 的 catalina.sh + 手工拷贝 webapps/ 不同,Geronimo 的部署是「先注册为内核模块(configuration),再启动该模块」的两段模型,因此 deploy(注册+启动)、distribute(仅注册)、start(仅启动)三个动作可以拆开做,这也是 5.2 节 distribute 实测的行为来源。

三、服务器控制命令(bin/geronimo)

3.1 后台启动 start

export JAVA_OPTS="-Xmx512m -XX:MaxPermSize=256m"
./bin/geronimo start
Using GERONIMO_HOME:   /opt/geronimo-tomcat7-javaee6-3.0.1
Using GERONIMO_SERVER: /opt/geronimo-tomcat7-javaee6-3.0.1
Using GERONIMO_TMPDIR: /opt/geronimo-tomcat7-javaee6-3.0.1/var/temp
Using JRE_HOME:        /opt/zulu7.56.0.11-ca-jdk7.0.352-linux_x64/jre
Using GERONIMO_OUT:    /opt/geronimo-tomcat7-javaee6-3.0.1/var/log/geronimo.out

Geronimo started in background. PID: 5108

启动进度写入 var/log/geronimo.out,首次启动完整打出 65 个模块的加载过程,关键逐行:

Booting Geronimo Kernel (in Java 1.7.0_352)...
Module  1/65 org.apache.geronimo.framework/j2ee-system/3.0.1/car              started in   .000s
Module  2/65 org.apache.geronimo.framework/rmi-naming/3.0.1/car               started in   .094s
Module  3/65 org.apache.geronimo.framework/plugin/3.0.1/car                   started in   .055s
Module  4/65 org.apache.geronimo.framework/j2ee-security/3.0.1/car            started in   .279s
Module 12/65 org.apache.geronimo.configs/tomcat7/3.0.1/car                    started in   .580s

日志尾部给出内置 Web 上下文清单与完成标志:

  Web Applications:
    /
    /activemq
    /console
    /console-base
    /debug-views
    /juddi
    /monitoring
    /openejb-server
    /plan-creator
    /plugin
    /remote-deploy
    /system-database

Geronimo Application Server started

实测完整包首次启动到 8080 可用约 1.5~2 分钟。验证:

curl -s -o /dev/null -w "%{http_code}\n" --max-time 5 http://localhost:8080/console/
403

返回 403(未带凭据访问控制台被拒)即表示 HTTP 栈已就绪。

⚠️ 注意:JAVA_OPTS 必须带 -XX:MaxPermSize=256m。实测仅设 -Xmx512m 时,JDK 7 会因 PermGen 耗尽抛 java.lang.OutOfMemoryError: PermGen space 导致启动失败。脚本默认值 -XX:MaxPermSize=128m 偏小,建议显式覆盖为 256m。

3.2 前台启动 run

./bin/geronimo run 在前台运行并直接把启动日志打到终端,日志内容与 3.1 的 geronimo.out 一致,Ctrl+C 或 kill 会终止服务器。排查启动失败时优先用 run 观察实时输出;-c/--clean 参数可先清理 OSGi bundle 缓存再启动(实测在服务器异常退出后的恢复场景使用,详见第 8 篇安装指南 FAQ)。

3.3 停止服务器 stop

./bin/geronimo stop --user system --password manager
Locating server on localhost:1099... Server found.
Server shutdown started
Server shutdown completed

停止后探测端口:

curl -s -o /dev/null -w "after-server-stop http=%{http_code}\n" --max-time 5 http://localhost:8080/console/
after-server-stop http=000

000 表示连接被拒,服务器已完全退出。停止动作走 1099 端口的远程关闭协议,所以 stop 也需要管理员凭据;凭据错误时的实测回显见 4.3 节。

./bin/geronimo stop --force 按 Usage 原文是先正常停止、失败再补 kill -KILL 的兜底手段。

3.4 debug 与 jpda

debug(jdb 调试器内运行)与 jpda run/jpda start(JPDA 调试端口下运行)属于开发态命令,参数集与 run/start 相同(见第二节 Usage)。日常运维使用 start/run/stop 三个即可覆盖。

四、deploy 工具连接与凭据

4.1 全局选项与调用顺序

实测发现最重要的规则:全局选项(--user、--password、--host、--port 等)必须写在子命令之前。选项放到子命令后面会被当成子命令参数,直接报错:

./bin/deploy deploy demo.war --user system --password manager
Too many arguments

正确写法:

./bin/deploy --user system --password manager deploy demo.war

4.2 login:免凭据连接

./bin/deploy --user system --password manager login
    Saved login for: deployer:geronimo:jmx://localhost:1099

此后对同一 host:port 的连接自动读取保存的凭据(按 help 原文保存到用户主目录的 .geronimo-deployer 文件,且明文密码不会直接落盘但也不是强加密)。实测免凭据调用:

./bin/deploy list-modules
Found 85 modules

💡 技术拓展:保存是按连接 URL 区分的(help 原文),用 --host/--port 连第二台服务器时需要再 login 一次;--offline 离线模式不走这套凭据。

4.3 凭据错误实测

./bin/deploy --user system --password wrongpass list-modules
2026-10-15 09:37:21,855 ERROR [DeployTool] Error:
org.apache.geronimo.common.DeploymentException: Login Failed
        at org.apache.geronimo.deployment.cli.OnlineServerConnection.tryToConnect(OnlineServerConnection.java:126)
        at org.apache.geronimo.deployment.cli.OnlineServerConnection.<init>(OnlineServerConnection.java:75)
        at org.apache.geronimo.deployment.cli.OnlineServerConnection.<init>(OnlineServerConnection.java:50)
        at org.apache.geronimo.deployment.cli.DeployTool.execute(DeployTool.java:171)
        at org.apache.geronimo.system.main.MainBridge.execute(MainBridge.java:64)
        at org.apache.geronimo.main.Bootstrapper.start(Bootstrapper.java:88)
        at org.apache.geronimo.main.Bootstrapper.execute(Bootstrapper.java:61)
        at org.apache.geronimo.cli.AbstractCLI.executeMain(AbstractCLI.java:65)
        at org.apache.geronimo.cli.deployer.DeployerCLI.main(DeployerCLI.java:32)

./bin/geronimo stop 在凭据错误时同样失败,回显:

Could not communicate with the server.  The server may not be running or the port number may be incorrect (Invalid login)

4.4 JDK8 下 deploy 客户端直接失败

把 JAVA_HOME 切到 JDK 8 后执行任何 deploy 子命令,实测只输出四行 Using 信息即失败:

Using GERONIMO_HOME:   /opt/geronimo-tomcat7-javaee6-3.0.1
Using GERONIMO_SERVER: /opt/geronimo-tomcat7-javaee6-3.0.1
Using GERONIMO_TMPDIR: /opt/geronimo-tomcat7-javaee6-3.0.1/var/temp
Using JRE_HOME:        /opt/java/openjdk/jre
Main not found

原因与服务器本体一致:deploy 客户端同样经由 Bootstrapper/OSGi 引导查找 Main 服务,pax-url wrap 等 bundle 在 JDK 8 上解析失败导致服务未注册(详细失败链见第 1 篇安装指南 FAQ)。结论:一切 Geronimo 自带命令行工具都必须在 JDK 6/7 的 JAVA_HOME 下执行。

五、模块查询与部署命令

5.1 list-modules:模块清单

./bin/deploy --user system --password manager list-modules
Found 84 modules

输出每行一个模块,行首 + 表示已启动,无 + 表示已部署但未运行。实测样例(截取):

  + demo/dbdemo/1.0/war
  + demo/demo-derby-pool/1.0/car
  + org.apache.geronimo.configs/activemq-broker-blueprint/3.0.1/car
  + org.apache.geronimo.configs/aries/3.0.1/car

未启动模块的样式(截取):

    org.apache.geronimo.framework/client-system/3.0.1/car
    org.apache.geronimo.framework/jsr88-cli/3.0.1/car
    org.apache.geronimo.framework/offline-deployer/3.0.1/car
    org.apache.geronimo.framework/online-deployer/3.0.1/car

过滤参数实测可用组合:list-modules --all(同默认)、--started、--stopped;grep demo 这类管道过滤在脚本中最常用。

5.2 list-targets:部署目标

./bin/deploy --user system --password manager list-targets
  org.apache.geronimo.framework/j2ee-system/3.0.1/car?ServiceModule=org.apache.geronimo.framework/j2ee-system/3.0.1/car,j2eeType=ConfigurationStore,name=Local

单机环境只有一个 MasterConfigurationStore 目标;该命令主要用于集群/多存储场景的 target 参数取值。

5.3 deploy:部署并启动

对不含 Geronimo 部署 plan 的 WAR,直接给 war 路径即可,moduleId 与 context-root 自动推断:

./bin/deploy --user system --password manager deploy /opt/war2/geronimo-demo2.war
    Deployed default/geronimo-demo2/1792056978362/war @ /geronimo-demo2

moduleId 三段 default/geronimo-demo2/1792056978362/war 的含义:default 为默认 groupId,geronimo-demo2 取自 war 文件名,第三段是部署实例 ID(毫秒时间戳)——同一 war 每次部署都会生成新实例 ID,@ /geronimo-demo2 是推断出的 context-root。

带 plan 的资源适配器(RAR+plan 联合部署)实测:

./bin/deploy --user system --password manager deploy $G/repository/org/tranql/tranql-connector-derby-embed-local/1.8/tranql-connector-derby-embed-local-1.8.rar /opt/dbplan/demo-derby-pool-plan.xml
    Deployed demo/demo-derby-pool/1.0/car

plan 中声明的 moduleId(demo/demo-derby-pool/1.0/car)优先于文件名推断。部署成功即自动启动,重复 start 会得到:

    Module demo/dbdemo/1.0/war is already running

⚠️ 注意:deployer 部署失败常见于 plan 解析错误(命名空间、缺元素等),完整六坑现场见第 5 篇数据源详解第 4 章,此处不展开。

5.4 distribute:只注册不启动

./bin/deploy --user system --password manager distribute /opt/war2/geronimo-demo2.war
    Distributed default/geronimo-demo2/1792057005651/war

随后查询模块状态(实测,两条历史实例并存且都未启动):

./bin/deploy --user system --password manager list-modules | grep geronimo-demo2
    default/geronimo-demo2/1792056982551/war
    default/geronimo-demo2/1792057005651/war

行首无 +,说明 distribute 只完成了「注册进配置存储」。用 start 指定实例 ID 启动:

./bin/deploy --user system --password manager start default/geronimo-demo2/1792056982551/war
    Started default/geronimo-demo2/1792056982551/war @ /geronimo-demo2
curl -s -o /dev/null -w "after-distribute-start http=%{http_code}\n" --max-time 10 http://localhost:8080/geronimo-demo2/hello
after-distribute-start http=200

这一组合适用于「先把包铺到位、择机统一启动」的发布流程。

六、模块生命周期命令

6.1 stop / start:停与起单个模块

./bin/deploy --user system --password manager stop default/geronimo-demo2/1792056978362/war
    Stopped default/geronimo-demo2/1792056978362/war
curl -s -o /dev/null -w "after-stop http=%{http_code}\n" --max-time 10 http://localhost:8080/geronimo-demo2/hello
after-stop http=404

再启动:

./bin/deploy --user system --password manager start default/geronimo-demo2/1792056978362/war
    Started default/geronimo-demo2/1792056978362/war @ /geronimo-demo2
after-start http=200

按 help 原文语义,stop 后模块的部署信息仍在服务器上,只是不运行;服务器重启时未手动 stop 过的模块会随服务器自动启动,被 stop 过的则保持停止。

6.2 undeploy:卸载模块

./bin/deploy --user system --password manager undeploy demo/dbdemo/1.0/war
    Module demo/dbdemo/1.0/war unloaded.
    Module demo/dbdemo/1.0/war uninstalled.

    Undeployed demo/dbdemo/1.0/war

卸载后应用立刻不可访问(实测 http=404)。moduleId 可以不写时间戳实例段(如上例),deployer 会自动匹配该 artifact 的全部实例。

对不存在的模块执行 undeploy 的实测报错(原文含 Geronimo 源码中的错字 "a the name",照抄):

org.apache.geronimo.common.DeploymentException: demo/dbdemo/1.0/war does not appear to be a the name of a module available on the selected server. Perhaps it has already been stopped or undeployed?  If you're trying to specify a TargetModuleID, use the syntax TargetName|ModuleName instead. If you're not sure what's running, try the list-modules command.

6.3 redeploy:就地替换

./bin/deploy --user system --password manager redeploy /opt/war2/geronimo-demo2.war

实测输出(自动猜测 moduleId + 部署新实例):

    No ModuleID or TargetModuleID provided.  Attempting to guess based
    on the content of the archive.
    Unable to locate Geronimo deployment plan in archive.  Calculating
    default ModuleID from archive name.
    Attempting to use ModuleID 'default/geronimo-demo2//'
    Redeployed default/geronimo-demo2/1792056982551/war
2026-10-15 09:36:23,006 ERROR [DeployTool] Error:
org.apache.geronimo.common.DeploymentException: Operation failed: restart of default/geronimo-demo2/1792056982551/war failed
        Error starting configuration gbean default/geronimo-demo2/1792056982551/war
reason: bundleContext is null in configurationData: default/geronimo-demo2/1792056982551/war
java.lang.NullPointerException: bundleContext is null in configurationData: default/geronimo-demo2/1792056982551/war
        at org.apache.geronimo.kernel.config.ConfigurationData.getBundleContext(ConfigurationData.java:218)
        at org.apache.geronimo.kernel.config.Configuration.<init>(Configuration.java:203)

实测结论(重要):

  1. redeploy 会把新 war 部署成新实例 ID(1792056982551)并尝试重启;
  2. 重启阶段在 3.0.1 上必现 bundleContext is null 的 NullPointerException 报错;
  3. 报错并不影响旧实例继续对外服务——报错后 curl 应用仍返回 200 与正确内容;
  4. 新实例处于未启动状态,留在 list-modules 清单里(无 + 行)。

生产建议:3.0.1 上做应用更新时,优先用 undeploy + deploy 的干净两步,或接受 redeploy 的报错但必须用 list-modules 核对实例状态后再 start,不要被 ERROR 字样直接误导为部署失败。

七、encrypt 与其他辅助命令

7.1 encrypt:字符串加密

在线模式(连接运行中服务器,用服务器当前加密配置加密):

./bin/deploy --user system --password manager encrypt q1w2e3r4
    String to encrypt: q1w2e3r4
    Online encryption result:
    {Simple}rO0ABXNyABlqYXZheC5jcnlwdG8uU2VhbGVkT2JqZWN0PjY9psO3VHACAARbAA1lbmNvZGVkUGFyYW1zdAACW0JbABBlbmNyeXB0ZWRDb250ZW50cQB+AAFMAAlwYXJhbXNBbGd0ABJMamF2YS9sYW5nL1N0cmluZztMAAdzZWFsQWxncQB+AAJ4cHB1cgACW0Ks8xf4BghU4AIAAHhwAAAAEB99EdsvswE99QlYm7RBQtxwdAADQUVT

离线模式(--offline 为全局选项,免连接服务器):

./bin/deploy --offline encrypt q1w2e3r4
    String to encrypt: q1w2e3r4
    Offline encryption result:
    {Simple}rO0ABXNyABlqYXZheC5jcnlwdG8uU2VhbGVkT2JqZWN0PjY9psO3VHACAARbAA1lbmNvZGVkUGFyYW1zdAACW0JbABBlbmNyeXB0ZWRDb250ZW50cQB+AAFMAAlwYXJhbXNBbGd0ABJMamF2YS9sYW5nL1N0cmluZztMAAdzZWFsQWxncQB+AAJ4cHB1cgACW0Ks8xf4BghU4AIAAHhwAAAAEB99EdsvswE99QlYm7RBQtxwdAADQUVT

两种模式输出逐字符一致,且与 var/security/users.properties 中的密文条目一致——说明默认 {Simple} 加密对同一明文结果是确定的(同明文同密文)。密文写入 users.properties 的完整流程见第 5 篇第 6 章。

7.2 仅引帮助原文的命令

以下命令 help all 有原文用法但本文未实测执行,列出原文签名备查(输出形态不做描述,避免误导):

  • restart [ModuleID|TargetModuleID]+
  • search-plugins [MavenRepoURL]
  • install-plugin PluginFile
  • install-library [--groupId grp] LibraryFile
  • install-bundle [--groupId groupId] [--startLevel number] [--start] bundleFile
  • uninstall-bundle bundleId
  • unlock-keystore [keyStoreName][AliasName1][AliasName2]....

需要时可随时用 ./bin/deploy help <command> 查看原文(实测可用)。

八、注意事项与常见问题

8.1 所有命令必须 JDK 6/7

服务器与 deploy 客户端共用 OSGi 引导,JDK 8 下都是 Main not found(4.4 节实测)。把 export JAVA_HOME=/opt/zulu7.56.0.11-ca-jdk7.0.352-linux_x64 写进运维环境脚本是第一道保险。

8.2 全局选项必须在子命令之前

deploy demo.war --user system --password manager 会报 Too many arguments(4.1 节实测)。记不住时用 --host/--port 的默认值习惯:默认连 localhost:1099,单机运维通常只需 --user/--password。

8.3 实例 ID 时间戳导致的多实例并存

同一个 war 反复 deploy/distribute 会积累多个实例(5.4 节实测出现两条 default/geronimo-demo2/...)。undeploy 时不带时间戳可以一次清掉同 artifact 的全部实例;要精确操作某个实例则必须带完整三段 ID。

8.4 deploy 自动启动、distribute 不启动

deploy 成功即运行(对已运行模块再 start 会提示 already running);distribute 只注册,必须显式 start(5.4 节实测)。写发布脚本时不要混淆两者。

8.5 stop 返回 ≠ 端口已释放

bin/geronimo stop 打印 Server shutdown completed 后,JVM 退出需要数秒。实测完整包场景停后 3 秒探测 8080 得到 000(连接拒),而 web 精简包场景同一时点仍可能得到 403 的瞬时响应——脚本化停机后建议轮询端口直到拿到 000 再做下一步。

8.6 日志与缓存的位置

  • 启动/运行日志:var/log/geronimo.out(后台启动)与 var/log/geronimo.log
  • OSGi 引导失败日志:var/cache/<时间戳>.log(JDK 8 失败排查的关键证据,见第 1 篇 FAQ)
  • 清缓存重启:./bin/geronimo start -c 或手工清空 var/cache/

九、参考链接

  • Geronimo 归档下载(含 3.0.1 全部发行包与校验文件):https://archive.apache.org/dist/geronimo/3.0.1/
  • 本地完整帮助:/opt/geronimo-tomcat7-javaee6-3.0.1 目录下执行 ./bin/deploy help all
  • 版本发布说明(含系统要求与已知问题):安装目录 RELEASE_NOTES-3.0.1.txt
  • Apache Geronimo 官方文档主页:http://geronimo.apache.org/documentation.html
  • 同专栏实操篇:《Apache Geronimo 3.0.1 快速入门与集成示例》(WAR 全流程)、《Apache Geronimo 3.0.1 数据源与安全配置进阶详解》(部署 plan 六坑与 users.properties 实战)