管理员向导
介绍
Avalon 是一个服务器框架(Framework),它提供了或将要为中心行政部门、服务池、及时市场行情提供服务。该框架为凑合服务组件和创建应用服务器定义了一套标准的方法。
目标人群
本文档将以管理员的角度阐述管理Avalon Phenix的核心。
启动和停止
应用脚本
你可以用以下命令启动Phoenix:>bin/run.[bat|sh]
在Windows环境下,不包括NT,你需要首先设置PHOENIX_HOME环境变量。在UNIX环境下,你可以用phoenix.sh脚本停止Phoenix:>phoenix.sh stop
phoenix.sh脚本接收以下命令:start、stop、run、restart、check。
在Windows中,按下CONTROL-C将使phoenix彻底关闭。
使用Java Service Wrapper
另外一个开始/关闭Phoenix的选择就是利用Java Service Wrapper 的支持构建一个新的Phoenix。
使用Java Service Wrapper的主要益处是可以将Phoenix做为一个NT的服务。它能够检测JVM是否冻结或者垮台并立即重新启动应用程序。
要用Java Service Wrapper建造Phoenix,请下载并检查它的最新版本。然后,在源程序的根目录下创建或者编辑ant.properties,像如下所示:
# ${base.path} points to the root of the Phoenix source tree
wrapper.home=${base.path}/wrapper_linux_3.0.0
wrapper.jar=${wrapper.home}/lib/wrapper.jar
# If you're using Linux/Solaris:
wrapper.exe=${wrapper.home}/bin/wrapper
wrapper.dll=${wrapper.home}/lib/libwrapper.so
# If you're using Windows:
wrapper.exe=${wrapper.home}/bin/Wrapper.exe
wrapper.dll=${wrapper.home}/lib/Wrapper.dll
然后像一般工程一样build。
若想使用指令,则将当前路径移动之bin目录,然后键入:>wrapper
wrapper的配置文件通常命名为conf/wrapper.conf。
使用JMX
JMX概述
Phoenix是和JMX(Java Management Extensions)紧密结合的。请参看 JMX 信息
如何使你的block成为一个MBean
事实上这很简单。假设你想暴露来自WebServer block的接口,WebServer block在Block 配置人员中有描述。你仅需要做两件事.
首先,创建一个MBean 接口,可以如下所示:
package examplecomp.block;
public interface WebServerMBean {
void mountWar(String contextName, URL pathToWar);
void unMountWar(String contextName);
}
注意MBean的接口和WebServer的接口是一样的。在大多数情况下都是这样的。
现在编写WebServerBlock实现WebServerMBean
package examplecomp.block;
/**
* TODO: describe PhoenixXDoclet setup.
* @phoenix:mx name="examplecomp.block.WebServerMBean"
*/
public class WebServerBlock
extends AbstractLoggable
implements WebServer, WebServerMBean, Startable, Configurable, Initializable {
// ...
}
使用Http适应器
MX4J Http 适应器允许使用任何浏览器访问运行的Phoenix服务器。
使用RMI适应器
如果你想写一个代理程序管理phoenix程序,你可以使用MX4J RMI适应器。本节主要重复一下MX4J文档中的可用信息。Phoenix使用JRMP RMI适应器。
请确保在kernal.xml中MX4J RMI适应器有效。
<component role="org.apache.avalon.phoenix.interfaces.SystemManager"
class="org.apache.avalon.phoenix.components.manager.MX4JSystemManager"
logger="manager" >
<enable-rmi-adaptor>true</enable-rmi-adaptor>
[other enabled adaptors]
</component>
请在你的classpath中设置mx4j-jmx.jar、mx4j-tools.jar和jini.properties路径,假设你想关闭phoenix。创建下面的类:
import mx4j.connector.rmi.jrmp.JRMPConnector;
import mx4j.connector.RemoteMBeanServer;
import javax.management.ObjectName;
public class JrmpShutdown {
public static void main(String[] args) throws Exception
{
// Create a JRMPConnector
JRMPConnector connector = new JRMPConnector();
// Pass in the adaptor's JNDI name, no properties
String jndiName = "jrmp";
connector.connect(jndiName, null);
// Get the remote MBeanServer from the connector
// And use it as if it is an MBeanServer
RemoteMBeanServer server = connector.getRemoteMBeanServer();
ObjectName objName = new ObjectName("Phoenix:component=Embeddor,topic=Embeddor");
server.invoke(objName, "shutdown", new Object[0], new String[0]);
}
}
编译并运行――很快!服务器便停止了。
解决疑问
Phoenix启动后很快停止并没有报任何错误信息。
确保在app文件夹内有一个sar文件。如果没有任何服务在运行Phoenix会很快退出。事实上你可以通过JMX不配置任何应用来停止Phoenix服务(尽管这种方式十分奇特)。
David W. 编写