1.@PostConstruct說明
被@PostConstruct修飾的方法會在服務器加載Servlet的時候運行,並且只會被服務器調用一次,類似於Serclet的inti()方法。被@PostConstruct修飾的方法會在構造函數之后,init()方法之前運行。
2.@PreDestroy說明
被@PreDestroy修飾的方法會在服務器卸載Servlet的時候運行,並且只會被服務器調用一次,類似於Servlet的destroy()方法。被@PreDestroy修飾的方法會在destroy()方法之后運行,在Servlet被徹底卸載之前。(詳見下面的程序實踐)
package com.yygx.flowinterface.service.impl;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import net.zoneland.uniflow.client.impl.SyncProcessServiceClient;
import net.zoneland.uniflow.client.impl.SyncTaskServiceClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Repository;
/**
*
* 流程引擎客戶端工具類
* @author wuhda
*
*/
@Repository
public class FlowClientUtil {
private final static Logger LOGGER = LoggerFactory.getLogger(FlowClientUtil.class);
/**
* 流程類接口客戶端
*/
private SyncProcessServiceClient processClient;
/**
* 任務類接口客戶端
*/
private SyncTaskServiceClient taskClient;
@PostConstruct
public void init() {
// 接入系統的賬號密碼,在流程管理平台(UniflowAdminConsole)上配置
String username = "ehr";
String password = "password";
// Uniflow的服務地址
String endpoint = "http://172.16.92.50:10081/UniflowControlCenter/rest";
// 構建流程類接口客戶端
processClient = new SyncProcessServiceClient(username, password);
processClient.setServerAddress( endpoint + "/RestProcessService" );
// 構建任務類接口客戶端
taskClient = new SyncTaskServiceClient(username, password);
taskClient.setServerAddress( endpoint + "/RestTaskService" );
}
@PreDestroy
public void close() {
System.out.println("close client ...");
// 應用結束是最好關閉客戶端(內部有HttpClient的連接池)
processClient.close();
taskClient.close();
}
public SyncProcessServiceClient getProcessClient() {
return processClient;
}
public void setProcessClient(SyncProcessServiceClient processClient) {
this.processClient = processClient;
}
public SyncTaskServiceClient getTaskClient() {
return taskClient;
}
public void setTaskClient(SyncTaskServiceClient taskClient) {
this.taskClient = taskClient;
}
}
