WAS CE 即WebSphere Application Server Community Edition 的简称,它是一个轻量级的 Java™ 2 Platform Enterprise Edition (J2EE) 应用服务器。有关 WAS CE 的基本概念和目录结构更详细的信息,请参阅参考资料。
本部分主要介绍 WAS CE 的部署工具,常用的三种部署方法:命令行部署、控制台部署和热部署,以及两种部署模式:本地部署和远程部署。
WAS CE 提供的部署工具,可用来安装、卸载、重安装、启动、停止应用和模块,也可用来安装、卸载配置信息,如部署计划的配置、安全域以及数据库连接池的配置信息等。可由命令行的方式调用部署工具,也可通过基于图形界面的控制台访问。下面分别介绍。
本文描述的部署方法和部署模式适用于 WAS CE V1.0.1.2或更新版本。
注:本文中%WASCE_HOME%表示 WAS CE 的安装目录;%Sample_HOME%代表预部署示例的存放目录。文中的例子各种命令的使用以 Windows 下的用法为例。
|
|
当 WAS CE server 启动后,进入 WAS CE 安装目录下的bin目录,在这里可由两种方式激活部署工具:
java -jar deployer.jar <general_options> <command> <command_options> |
deploy[.bat|sh] <general_options> <command> <command_options> |
general_options 定义了常规选项,适用于所有的命令。command_options 则指出针对各个指令的特殊选项。
1.1 常规选项
--uri <identifier>
可选项。常用于远程部署。
<identifier>是一个服务器要连接到的URI。如果<identifier>没有定义,部署工具将试图用本机 localhost 的标准端口 1099 连接服务器。
URI有严格的使用格式:
deployer:geronimo:jmx:rmi:///jndi/rmi:[//host[port]]/JMXConnector |
--host <host>
可选项。
既可用于本地部署,也可用于远程部署。
在本地部署时,其默认值 localhost。而在远程部署中,<host>即是应用和资源将要部署到的服务器所在的主机名或 IP。
--port <port>
可选项。
<port>即 server 的端口号,默认值 1099。如果在部署应用或资源之前,修改了 config.xml 文件中对应应用或资源的 port 值,则在部署时,必须用--port <port>明确说明。
--driver <driver_path>
可选项。
您不仅可以在 WAS CE 上使用部署工具,也可以在任何遵循 JSR-88 的服务器上使用部署工具。对于非 WAS CE 服务器,必须由<driver_path>提供包含 JSR-88 部署实现类的 jar 文件。
--user <username>
必选项。
这是身份验证时使用的用户名。如果没有提供用户名,则会提示您输入一个用户名。WAS CE 的缺省管理员用户名是"system"。
--password <password>
必选项。
这是身份验证时使用的密码。如果没有提供密码,则 WAS CE 会尝试不用密码进行连接。如果连接失败,则会提示您输入一个密码。WAS CE 对于"system"管理员用户的缺省密码是"manager"。
--syserr <select>
可选项。
<select>对应Boolean,如果为true,则将错误记录到syserr设备中。缺省值为false。
--verbose <select>
可选项。
<select>对应 Boolean,如果为 true,则将调试信息输出到标准输出。缺省值为 false。
要获得常规选项的所有列表,请输入:
deploy[.bat|sh] help options |
1.2 常用命令--command
WAS CE 提供了多种指令用于管理应用程序部署。
常用的指令如下:
deploy
login
redeploy
start
stop
undeploy
其他的指令:
distribute
list-modules
另外,您可以用 help 指令查看某个指令的更详细的信息。具体格式为:
deploy[.bat|sh] help <command> |
1.2.1 deploy
deploy 既可用于本地部署,也可用于远程部署。
同时,deploy 必须在 WAS CE Server 已经启动后才能使用。
进入 WAS CE 安装目录下的bin目录,双击startup.bat 启动server。
WAS CE Server 启动后,将显示已经启动的 module,Web Application,以及各个 Connector 和对应的侦听端口。如下图所示:
1.2.1.1 deploy 的使用格式:
java -jar deployer.jar <general_options> deploy <module> <deployment_plan> |
或
deploy[.bat|sh] <general_options> deploy <module> <deployment_plan> |
1)<general_options>
<general_options>的详细使用参考前面的常用选项说明。
如果不更改 port 属性值,则系统默认 deploy 使用的端口为 1099;如果更改了 port 值,则需要明确指明 port 属性值。
在 WAS CE 安装目录的 var/config 下,有一个 config.xml 文件,该文件记录了系统应用和系统模块,已经部署的应用和模块,及其对应的端口。在 server 启动之前你可以更改这里的端口,但是在使用部署工具时,必须用-- port 参数明确指出端口号。
注:由于在启动 WAS CE Sever 时,将读取 config.xml,在停止 WAS CE Sever 时,各个 GBean 的状态将回写到 config.xml 文件,因此在 WAS CE Sever 运行过程中所作的任何修改均不起作用,不能保存下来,必须在 server 启动之前修改有关属性值。
如将RMI端口由 1099 改为 1090。
修改前:
<configuration name="geronimo/rmi-naming/1.0/car"> <gbean name="RMIRegistry"> <attribute name="port">1099</attribute> </gbean> <gbean name="NamingProperties"> <attribute name="namingProviderUrl">rmi://0.0.0.0:1099</attribute> </gbean> </configuration> |
修改后:
<configuration name="geronimo/rmi-naming/1.0/car"> <gbean name="RMIRegistry"> <attribute name="port">1090</attribute> </gbean> <gbean name="NamingProperties"> <attribute name="namingProviderUrl">rmi://0.0.0.0:1090</attribute> </gbean> </configuration> |
此时,在server启动的窗口中,侦听端口也改变为 1090。
Listening on Ports: 1090 0.0.0.0 RMI Naming 1527 0.0.0.0 Derby Connector 4201 0.0.0.0 ActiveIO Connector EJB 4242 0.0.0.0 Remote Login Listener |
此时,在使用部署工具时,也要明确指明端口。如部署 hello-1.0.war 如下:
deploy --user system --password manager --port 1090 deploy %Sample_HOME%/hello-1.0.war |
2) <module>
<module>对应要部署的应用或资源的文件名和位置,一个 module 文件可以是以下类型的任何一种:
- J2EE Enterprise Application Archive (EAR) file
- J2EE Web Application Archive (WAR) file
- J2EE Enterprise JavaBean Archive (JAR) file
- J2EE Java Resource Archive (RAR) file
3) <deployment_plan>
<deployment_plan>是一个 xml 格式的文件,定义了部署应用或资源时要用到的部署计划。有些简单的应用,部署计划已经包含在 ear 或 war 包中,或者不需要部署计划,此时部署计划省略,我们称前者为内嵌部署计划。
下面举例说明 deploy 的用法:
deploy --user system --password manager deploy /%Sample_HOME%/hello-1.0.war |
在复杂的应用中,部署计划需要单独给出;或者,用显示给出的部署计划覆盖内嵌的部署计划。
deploy --user system --password manager deploy %WASCE_HOME% /repository/tranql/rars/tranql-connector-derby-embed-xa-1.1.rar %Sample_HOME%/Cloudscape-db-plan.xml |
当部署成功后,窗口给出部署成功的提示:
Deployed com/ibm/websphere/ce/samples/hello @ http://<hostname>:<port>/hello |
注:deploy 也可以仅部署 xml 格式的文件,而不需 WAR 或 EAR 等格式的文件;此时的 xml 文件用于配置已经存在的 GBean。详情请参考示例文档关于 LDAP 的说明。
1.2.1.2 deploy 的部署模式
1)本地部署
详细请参考 1.2.1.1 deploy 的使用格式。
2)远程部署
其使用格式:
java -jar deployer.jar --uri deployer:geronimo:jmx:rmi:///jndi/rmi:[//host[port]]/JMXConnector <general_options> deploy <module> <deployment_plan> |
或
deploy.bat --uri deployer:geronimo:jmx:rmi:///jndi/rmi:[//host[port]]/JMXConnector <general_options> deploy <module> <deployment_plan> |
例:
deploy --uri deployer:geronimo:jmx://hostname --user system --password manager deploy %Sample_HOME%/hello-1.0.war |
窗口显示执行的操作和部署结果:
Uploading 1 file(s) to server File upload complete (Server :OK) 1 file(s) transferred to server. Resuming deployment operation. Deploy com/ibm/websphere/ce/samples/hello @ http://<hostname>:<port>/hello |
此时,访问 http://<hostname>:<port>/hello 即可看到预期的内容。
1.2.2 login
这个指令用来为当前的连接保存用户名和密码,并把这个认证信息保存到位于用户目录下的 .geronimo-deployer 文件中。以后到同一个服务器的连接都尽可能地使用已经保存下来的认证信息,而不再给出提示。
连接到不同服务器的认证信息将单独保存,因此,您可以在命令行中用 --port 或 --host 或 --url 来指出连接到不同服务器的认证信息。
格式为:
deploy[.bat|sh] --user <user_name> --password <password> login |
login 之后,当您下次使用不同的指令时,就不用再输入用户名和密码,可以直接使用了。如:
deploy[.bat|sh] list-modules |
1.2.3 redeploy
使用这个指令来停止、重新部署、启动先前已经部署的模块。
格式为:
deploy[.bat|sh] <general_options> redeploy <module> <deployment_plan> |
和 deploy 指令一样,redeploy 可以部署以下类型的模块:
- J2EE Enterprise Application Archive (EAR) file
- J2EE Web Application Archive (WAR) file
- J2EE Enterprise JavaBean Archive (JAR) file
- J2EE Java Resource Archive (RAR) file
1.2.4 start
start 指令用来启动已经部署的模块。
格式为:
deploy[.bat|sh] <general_options> start <moduleIDs> |
可以同时启动多个模块,此时,moduleIDs 用空格间隔即可。
可以用 list-modules 指令来查看各个模块的 moduleID;也可查看各个模块的部署计划以得到 moduleID 的有关信息。
1.2.5 stop
停止正在运行的模块。
格式为:
deploy[.bat|sh] <general_options> stop <moduleIDs> |
可以同时停止多个模块,此时,moduleIDs 用空格间隔即可。
可以用 list-modules 指令来查看各个模块的 moduleID;也可查看各个模块的部署计划以得到 moduleID 的有关信息。
1.2.6 undeploy
从服务器上停止、删除模块及其所有的部署信息,而不管该模块当前是否正在运行。 格式为:
deploy[.bat|sh] <general_options> undeploy <moduleIDs> |
可以同时删除多个模块,此时,moduleIDs 用空格间隔即可。
可以用 list-modules 指令来查看各个模块的 moduleID;也可查看各个模块的部署计划以得到 moduleID 的有关信息。
1.2.7 distribute
用来部署一个新的模块。与 deploy 不同的是,distribute 不启动模块,当需要运行通过 distribute 指令部署的模块时,需要执行 start 指令。而 deploy 则启动模块,相当于在部署的同时执行了 start 操作。
格式为:
deploy[.bat|sh] <general_options> distribute <module> <deployment_plan> |
有关<module>和<deployment_plan>的说明请参考 1.2.1.1 deploy 指令。
1.2.8 list-modules
列出在服务器上所有可用的模块。必须在服务器运行时才能使用该指令。
格式为:
deploy[.bat|sh] <general_options> list-modules [--all | --started | --stopped] |
--all
默认值。列出所有可用的模块。
--started
列出正在运行的模块。
--stopped
列出停止的模块。
|
WAS CE 控制台是基于 web方式的图形操作界面,给您提供方便友好的管理 WAS CE 服务器的方式。既可用于本地部署,也可用于远程部署。
只要 WAS CE 服务器已经启动,就可以通过 http://localhost:8080/console 访问控制台。
首页面如图所示:
输入 WAS CE 的 administrator 用户名 system 和密码 manager,即可登录到 WAS CE 的欢迎页面。
对于一些需要访问数据库的复杂应用,部署的基本步骤是:
1)创建数据库和表
2)配置、部署数据源
3)部署应用
对于一些简单的部署,不需要数据源,直接部署应用即可。
WAS CE 的下载网站提供了示例程序包(wasce_samples-1.0.1.2.zip)可供用户下载,在这个示例程序包中有一个用于演示员工信息的 empdemo 的示例,本文以 empdemo 为例说明如何通过控制台配置数据库,以及部署应用程序。
WAS CE 内嵌了 IBM Cloudscape 数据库,因此可以在控制台使用 DB Manager 创建 IBM Cloudscape 数据库如 Employee,并完成建表的操作。
对于其他非内嵌的数据库如 oracle,DB2 等,需由数据库自带的工具来完成创建数据库,建表的功能。
在 Database Pools 下用 Geronimo database pool wizard 为数据库 Employee 建立数据源 jdbc/EmployeeDataSource。
首先命名数据源,并选择正确的数据库类型。
点击"next",为数据源选择驱动,配置最大连接数,最小连接数等。
当选择配置完成后,点击"show plan"查看数据源部署计划,点击"Deploy"部署数据源。 IBM Cloudscape 数据源部署计划 Cloudscape-db-plan.xml 如下(部分):
<dependency> <uri>org.apache.derby/derby/10.1.2.ibm/jar</uri> </dependency> <dependency> <uri>org.apache.derby/derbynet/10.1.2.ibm/jar</uri> </dependency> <resourceadapter> <outbound-resourceadapter> <connection-definition> <connectionfactory-interface>javax.sql.DataSource </connectionfactory-interface> <connectiondefinition-instance> <name>jdbc/EmployeeDatasource</name> <config-property-setting name="UserName"></config-property-setting> <config-property-setting name="Password"></config-property-setting> <config-property-setting name="DatabaseName">Employee </config-property-setting> <config-property-setting name="CreateDatabase">true </config-property-setting> |
对于非内嵌的数据库,需将数据库驱动添加到 WAS CE 的存储库(repository)。如向 WAS CE 存储库添加 IBM DB2 的 JDBC 驱动。
%WASCE_HOME%/repository/com.ibm.db2/jars/db2jcc-8.2.jar
%WASCE_HOME%/repository/com.ibm.db2/jars/db2jcc_license_cu-8.2.jar
DB2 数据源部署计划 DB2-db-plan.xml 如下:(部分)
<dependency> <uri>com.ibm.db2/db2jcc/8.2/jar</uri> </dependency> <dependency> <uri>com.ibm.db2/db2jcc_license_cu/8.2/jar</uri> </dependency> <resourceadapter> <outbound-resourceadapter> <connection-definition> <connectionfactory-interface>javax.sql.DataSource </connectionfactory-interface> <connectiondefinition-instance> <name>jdbc/EmployeeDatasource</name> <config-property-setting name="UserName">db2inst1 </config-property-setting> <config-property-setting name="Password">password </config-property-setting> <config-property-setting name="Driver">com.ibm.db2.jcc.DB2Driver </config-property-setting> <config-property-setting name="ConnectionURL"> jdbc:db2://localhost:50000/Employee </config-property-setting> |
在WAS CE 中,数据源与应用一样,都作为一个模块处理,因此部署数据源,既可以像上面那样直接点击"Deploy"完成部署,也可以使用命令行部署,或者在控制台用 Deploy New 指定驱动和部署计划完成部署。
使用 Deploy New,指定要部署的模块和部署计划,点击 install 按钮就可完成部署任务。
|
热部署是 WAS CE 提供的另一种部署方式。仅用于本地部署。
在 WAS CE 安装目录下,有个 deploy 目录,所有需要部署的应用或模块都可以放在该目录下,WAS CE 会自动检测到该目录下的文件,并部署。
例如:将需要部署的 hello 应用程序对应的文件 hello-1.0.war 拷贝到 deploy 目录,则在 Serve Window 下将提示模块部署成功,同样,在 Commad Line 下,用 list-modules 命令也可看到该应用已经部署成功。
用 list-modules 查看结果如下:
+ com/ibm/websphere/ce/samples/hello @ http://<hostname>:<port>/hello |
访问 http://<hostname>:<port>/hello 即可看到显示预期的内容,表明热部署成功。
对于有部署计划的应用或模块,在热部署时,需要将部署计划和程序一同打包成支持的一种类型,然后放到deploy目录。
有关部署计划的格式和存放位置详细信息,请参考 WAS CE部署计划。
通过热部署部署的应用或资源,要删除时,可以直接删除 deploy 目录下相应的文件,即可完成卸载。
|
本文详细介绍了 WAS CE 的部署工具,两种部署模式和三种部署方法,并举例加以说明。对初级读者,希望本文能有所帮助。在本文的基础上,相信读者应该能够着手部署自己的应用程序了。