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