GlassFish中的命令框架(CLI)
[Command Line Interface框架的工作原理]
GlassFish开源服务器中间,提供了CMD命令行机能,服务器的使用者可以通过CMD来发布更新自己的jar包,配置服务器的JDBC连接等等。
那么,到底GlassFish是怎么做到这一步的呢?
我们看到GlassFish实际上是引用了一个开源的命令行框架--- Command Line Interface框架
我们具体可以参照以下URL:
https://glassfish.dev.java.net/javaee5/admin-cli/admin-cli.html
CLI框架的工作流程如下:
1. 在这个框架内部,使用者发送的命令以及参数,会通过CMD窗口传给常驻内存的CLI框架的核心类CLIMain
2. CLIMain通过查找一个名叫[CLIDescriptor.xml]的配置文件,在里面查找具体的执行类,一般来说GlassFish中的执行类都被叫做XXXXCommand之类的名字
3. XXXXCommand之类的执行类,开始访问MBeanServer调用相对应的MBean,访问资源(一般都是config.xml),配置服务器
※MBean相关知识请看我的另外一篇文章
※配置工作中会涉及到对config.xml的容错性检查,这是通过rng技术来实现,这里就不讲了
[实践 自己动手建立一个Command]
长话短说,我们来自己建立一个Command。
1. 找到以下目录,在其中增加自己的Command执行实体类
[glassfish\admin-cli\commands\src\java\com\sun\enterprise\cli\commands]
public class NewListComponentsCommand extends S1ASCommand {
/**
* An abstract method that validates the options on the specification in the
* xml properties file This method verifies for the correctness of number of
* operands and if all the required options are supplied by the client.
*
* @return boolean returns true if success else returns false
*/
public boolean validateOptions() throws CommandValidationException {
return super.validateOptions();
}
/**
* An abstract method that Executes the command
*
* @throws CommandException
*/
public void runCommand() throws CommandException,
CommandValidationException {
// if validateOptions is false, then it must be that --help option
// is provided and there is no need to execute the command since
// either manpage or usage text is displayed
if (!validateOptions())
return;
String objectName = getObjectName();
Object[] params = getParamsInfo();
String operationName = getOperationName();
String[] types = getTypesInfo();
CLILogger.getInstance().printMessage("It is a test From Jiang Biao");
}
}
|
上面的Command唯一干的事情就是在CMD窗口上打出"It is a test From Jiang Biao"这句话
2. 我们找到[CLIDescriptor.xml]文件,在其中加入我们自己的Command配置
<Command name="new-list-components" classname="com.sun.enterprise.cli.commands.NewListComponentsCommand" numberofoperands="1" usage-text="list-components [--terse=false] [--echo=false] [--interactive=true] [--user admin_user] [--passwordfile file_name] [--help] [--type application|ejb|web|connector|webservice] target">
<ValidOption name="user"/>
<ValidOption name="password"/>
<ValidOption name="passwordfile"/>
<ValidOption name="host"/>
<ValidOption name="port"/>
<ValidOption name="secure"/>
<ValidOption name="interactive"/>
<ValidOption name="terse"/>
<ValidOption name="echo"/>
<ValidOption name="type"/>
<properties>
<property name="objectname">
<value>com.sun.appserv:type=applications,category=config</value>
</property>
<property name="operation">
<value>getAllUserDeployedComponents</value>
</property>
<property name="params">
<value>{#1}</value>
</property>
<property name="paramtypes">
<value>java.lang.String</value>
</property>
<property name="displaytype">
<value>name</value>
</property>
<property name="manpage">
<value>com.sun.enterprise.tools.cli.help</value>
</property>
<property name="command-type">
<value>list</value>
</property>
</properties>
</Command>
|
以上配置文件定义了我们自己的Command类,并且规定了控制台上访问该类的命令是[new-list-components]
3. 将我们的修改打成jar包,替换到glassfish的运行环境,我们就能在控制台上运行自己的command命令咯~~~~~
分享到:
相关推荐
### JMX 在GlassFish中的应用 #### JMX与GlassFish:深入理解管理与监控 **JMX(Java Management Extensions)**是一种由Sun Microsystems提出并由Java社区推动的标准,旨在为Java应用程序、系统和网络提供一个...
在Linux环境下,Glassfish服务器的自动化启动...通过以上步骤,你就能够在Linux系统中实现Glassfish服务器的自动启动,从而提高运维效率。当然,更高级的自动化部署和监控可以结合使用如Ansible、Jenkins等工具来实现。
在 GlassFish 中,数据源连接池是通过 JDBC(Java Database Connectivity)来实现的。 配置 GlassFish 数据源连接池的步骤: 1. 打开 GlassFish 管理控制台 首先,需要打开 GlassFish 的管理控制台,可以通过在...
这些命令通常是通过Glassfish的命令行接口(CLI)执行的。 "del.txt"可能是一个删除文件的列表,可能在配置过程中不再需要某些文件,所以将其列出以供清理。 总的来说,"Glassfish单机集群jk_little"的配置涉及到...
在实际应用中,开发者可以将编译好的Java EE 6应用打包成WAR或EAR文件,部署到Glassfish服务器上,从而实现业务逻辑的运行。 总的来说,Glassfish 3.1.2.2作为Java EE 6标准的实现,是开发者构建、测试和部署企业级...
6. **启动与管理**:将Glassfish安装目录的bin路径添加到系统环境变量PATH中,然后使用`asadmin start-domain domain1`命令启动服务器。启动成功后,你可以通过访问`http://localhost:8080`查看默认的域1页面,而...
在开发环境中,GlassFish Server提供了集成开发环境(IDE)的插件,如Eclipse和NetBeans,使得开发者能够无缝地在IDE中进行开发、测试和部署。此外,GlassFish Server还支持多种数据库连接,包括Oracle、MySQL、...
手册中还介绍了对Apache服务器的配置,以实现高效的应用访问和负载均衡。 手册的描述部分使用了重复的语言来强调其内容,即手册是关于Glassfish集群搭建的具体步骤和技巧。通过提及标签“glassfish”,我们可以知道...
安装 GlassFish 需要使用以下命令:`#cd /fishHome#java –jar glassfish-installer-v2.1.1-b31g-linux-ml.jar`。安装完成后,需要将 lib/ant/bin 目录下的文件设置为可执行权限。然后,需要编辑 setup-cluster.xml ...
- **启动Glassfish**: 在 `glassfish/bin` 目录下运行 `asadmin.bat` 命令,使用 `asadmin start-domain domain1` 来启动服务器,其中 `domain1` 是先前配置的域名。 - **访问测试**: 启动后,通过浏览器访问 `...
6. **安全性**:GlassFish提供了丰富的安全特性,包括SSL/TLS加密、JAAS(Java Authentication and Authorization Service)支持、容器管理的身份验证和授权,以及与其他安全框架的集成。 7. **性能优化**:内置了...
GlassFish的常用命令主要包括创建、删除、启动、停止域等操作。例如,创建名为domain1的新域,只需执行`create-domain domain1`;若要删除域,使用`delete-domain domain1`,注意这将彻底移除域目录;启动域,使用`...
GlassFish 是一款开源的应用服务器,它遵循Java EE标准,被广泛应用于开发、测试和生产环境中。本文档将详细介绍如何安装和启动GlassFish应用服务器。 #### 二、安装前准备 1. **JDK环境**:确保系统已安装JDK 5或...
首先,需要在 Eclipse 中创建一个新的 Java 项目,然后将 GlassFish 服务器添加到项目中。在项目中,右键单击项目,然后选择 Debug,选择 Java Remote Application,右键菜单中选择 New,在出现的对话框中将 port 改...
- **安全框架**:GlassFish集成了强大的安全框架,包括身份验证、授权以及数据加密等功能。 - **细粒度控制**:提供对资源访问权限的细粒度控制,使开发者能够更精确地管理应用程序的安全设置。 ##### 性能和可扩展...
1. **启动Glassfish**:在命令行中,进入`$GLASSFISH_HOME/bin`目录,然后运行`asadmin start-domain`命令启动服务器。首次启动可能需要一些时间,因为Glassfish会初始化并加载所有必要的组件。 2. **管理控制台**...
相比于Tomcat,GlassFish提供了更全面的Java EE(现称为Jakarta EE)支持,包括对Servlet、JSP、EJB、JMS、JPA等标准的全面实现,为开发企业级应用提供了强大后盾。 一、GlassFish 5.0 安装 1. 下载:首先,你需要...
在"hello-simple-glassfish"这个压缩包中,可能包含了一个简单的示例项目,用于演示如何在NetBeans IDE中创建并部署一个基于GlassFish的Web服务。通过分析这个项目,开发者可以学习到具体的代码实现、配置文件设置...
为了能够成功安装并配置Glassfish,确保系统环境中已经安装了合适的JDK版本以及Ant工具是非常重要的。 #### 二、准备工作 在开始安装Glassfish之前,请确保以下条件已经被满足: 1. **JDK 5或更高版本**:...