【仅供内部供应商使用,不提供对外解答和培训】
【仅供内部供应商使用,不提供对外解答和培训】
1、服务类型接口代码
public interface PluginServiceCreator{ //提供启动服务的方法,具体服务类被加载的时候,会调用该方法 public void startService(); //提供销毁服务的方法,关闭设计器或者tomcat服务器,或者切换环境时会调用该方法 public void destroyService(); //提供从服务中获取数据的方法 public String serviceAction(String req) throws Exception; //判断服务是否启动 public boolean serviceStarted(); //提供一个可以清除服务日志信息的接口,可以处理可能存在的日志信息文件 public void cleanServiceLog(); }
2、phantom服务配置示例
<!--依赖类型可选择service--> <!--文件类型的依赖的根目录从WebInfo开始--> <!--如果想要开启多个服务,则在依赖中添加多个dependence节点> <!--dependenceID : 服务ID号;dependenceType :依赖类型;dependenceDir:服务安装地址; class:具体服务类--> <!--主意,服务是一种插件的依赖,必须寄存在插件的配置文件中--> <dependence> <DependenceUnit dependenceID="plugin.phantomjs" dependenceType="service" dependenceDir="/resources/phantomjs" class="com.fr.plugin.chart.phantom.PhantomService"/> </dependence>
3、phantom服务ID说明
每个都有自己独特的ID,服务被加载时,会将ID和服务加入到Map管理起来。故而,要想使用某个服务,必须要知道该服务的ID。
3、phantom服务代码示例
package com.fr.plugin.chart.phantom; import com.fr.base.FRContext; import com.fr.plugin.chart.phantom.serverpool.PhantomServerFactory; import com.fr.plugin.dependence.PluginServiceCreator; public class PhantomService implements PluginServiceCreator { public PhantomServerFactory phantomServerFactory = null; public static final String DEFAULT_EXE = "default server"; public static final String LOG_PATH = FRContext.getCurrentEnv().getPath() + "/service"; //配置服务器,后续可通过配置文件配置 private String ip = "127.0.0.1"; private int port = 8088; private int serverNum = 2; private String exe = DEFAULT_EXE; //启动服务 @Override public void startService() { if (phantomServerFactory == null) { phantomServerFactory = new PhantomServerFactory(); //初始化 phantomServerFactory.init(ip, port, serverNum, exe); //启动服务器 if (phantomServerFactory.hasServer()) { return; } phantomServerFactory.startServer(); } } @Override public void destroyService() { if (phantomServerFactory != null) { phantomServerFactory.destroyServer(); } } /** * 获取本地数据 * @param req * @return * @throws Exception */ @Override public String serviceAction(String req) throws Exception { return phantomServerFactory.requestServer(req); } @Override public boolean serviceStarted() { return phantomServerFactory != null; } @Override public void cleanServiceLog() { phantomServerFactory.cleanServerLog(); } }
4、phantom服务调用示例:
//获取相应服务,要想获得服务,必须要知道服务的ID try { //这样就能获取服务提供回来的数据 response = FRContext.getCurrentEnv().pluginServiceAction("plugin.phantomjs", json.toString()); } catch (Exception e) { response = null; FRContext.getLogger().info(e.getMessage()); }