1、插件依赖类型:
插件的依赖类型分为三种:插件、资源文件、服务文件
2、插件依赖的加载逻辑
工程启动时,会检测插件的依赖,并通过日志信息,告知用户所依赖的是否存在。如果插件
依赖为插件或者资源文件时,会等到所有插件加载结束时,再判断插件依赖是否存在。如果插件
依赖为服务文件时,会在加载依赖的同时,启动服务。如果希望插件加载之前,服务就已经启动,
则在配置文件中,将依赖配置到需要依赖该服务的插件之前。
3、设计器端更新插件说明:
当插件的依赖类型为插件时,用户在更新插件或者下载插件时,不会及时提醒用户下载依赖,
而是当设计器重新启动时,通过日志告知需要依赖某个插件,此时,用户可以根据日志信息继续
下载依赖的插件。
当插件依赖的类型为资源文件或者服务文件是,用户在更新插件或者下载插件时,会提醒用户
需要依赖的资源文件或服务文件。用户可以选择下载或者不下载依赖。
4、平台更新插件说明:
当插件的依赖类型为插件时,用户在更新插件或者下载插件时,不会同时下载依赖的插件。
当插件依赖的类型为资源文件或者服务文件是,用户在更新插件或者下载插件时,会默认将依
赖同插件一起下载。
5、插件依赖配置说明:
添加依赖的方法是在插件配置文件的dependence属性中添加依赖节点DependenceUnit,节点的
属性为依赖的标志号dependenceID、依赖的类型dependenceType、依赖的安装地址dependenceDir,
如果插件的类型为service时,可设置启动服务的处理类class,
6、插件配置示例:
<dependence>
<DependenceUnit dependenceID="plugin.geojson" dependenceType="file" dependenceDir="/resources/geojson"/>
<DependenceUnit dependenceID="plugin.phantomjs" dependenceType="service" dependenceDir="/resources/phantomjs" class="com.fr.plugin.chart.export.pool.ServerObjectFactoryInterface"/>
</dependence> |
7、插件依赖类型为服务时的使用方法:
a:管理
所有的服务都在服务管理器中进行管理,插件启动时,会启动插件中定义好的具体服务,并加入
到管理器中统一管理,每个服务都有一个独特的ID
b:接口说明
使用服务时,调用服务的fetchServiceData方法,传入请求携带的数据。设计器会检测是本地环境
还是远程环境,如果是本地环境,会调用服务的localServiceAction方法,如果是远程环境,则会调用
服务的remoteServiceAction方法。方法的具体实现由具体的服务实现。接口如下:
public interface PluginServiceCreator{
public void startService();
public void destroyService();
public String localServiceAction(String req) throws Exception;
public String remoteServiceAction(String req) throws Exception;
public String fetchServiceData(String req);
} |
c:使用方法
具体服务时,只需要继承已经写好的抽象类PluginService,实现其中的本地方法,已经返回一个自定义
服务的ID,即可支持本地和远程服务。具体服务类实现方法如下:
import com.fr.dependservice.PluginService;
public class MyService extends PluginService {
@Override
public void startService() {
//自定义启动服务代码
}
@Override
public void destroyService() {
//自定义销毁服务代码
}
@Override
public String localServiceAction(String req) throws Exception {
//本地服务处理方法
return null;
}
@Override
protected String getServiceID() {
//自定义服务ID
return null;
}
}
|
8、可能存在的问题
当两台主机相互远程时,可能会有问题