Author: seanahn
Date: Fri May 1 23:04:00 2009
New Revision: 770855
URL: http://svn.apache.org/viewvc?rev=770855&view=rev
Log:
supporting custom deployment poller
Modified:
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/deploy/DeploymentPoller.java
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
Modified:
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java?rev=770855&r1=770854&r2=770855&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java
(original)
+++
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java
Fri May 1 23:04:00 2009
@@ -21,6 +21,9 @@
import java.io.File;
import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
import java.util.StringTokenizer;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -123,30 +126,30 @@
}
public void init(String contextPath, AxisConfiguration axisConf) throws
ServletException {
- _axisConfig = axisConf;
- String rootDir = System.getProperty("org.apache.ode.rootDir");
- if (rootDir != null) _appRoot = new File(rootDir);
- else _appRoot = new File(contextPath);
+ _axisConfig = axisConf;
+ String rootDir = System.getProperty("org.apache.ode.rootDir");
+ if (rootDir != null) _appRoot = new File(rootDir);
+ else _appRoot = new File(contextPath);
if (!_appRoot.isDirectory())
throw new IllegalArgumentException(_appRoot + " does not exist or
is not a directory");
- TempFileManager.setWorkingDirectory(_appRoot);
+ TempFileManager.setWorkingDirectory(_appRoot);
- __log.debug("Loading properties");
- String confDir = System.getProperty("org.apache.ode.configDir");
- _configRoot = confDir == null ? new File(_appRoot, "conf") : new
File(confDir);
+ __log.debug("Loading properties");
+ String confDir = System.getProperty("org.apache.ode.configDir");
+ _configRoot = confDir == null ? new File(_appRoot, "conf") : new
File(confDir);
if (!_configRoot.isDirectory())
throw new IllegalArgumentException(_configRoot + " does not exist
or is not a directory");
- _odeConfig = new ODEConfigProperties(_configRoot);
+ _odeConfig = new ODEConfigProperties(_configRoot);
- try {
- _odeConfig.load();
- } catch (FileNotFoundException fnf) {
- String errmsg =
__msgs.msgOdeInstallErrorCfgNotFound(_odeConfig.getFile());
- __log.warn(errmsg);
- } catch (Exception ex) {
- String errmsg =
__msgs.msgOdeInstallErrorCfgReadError(_odeConfig.getFile());
+ try {
+ _odeConfig.load();
+ } catch (FileNotFoundException fnf) {
+ String errmsg =
__msgs.msgOdeInstallErrorCfgNotFound(_odeConfig.getFile());
+ __log.warn(errmsg);
+ } catch (Exception ex) {
+ String errmsg =
__msgs.msgOdeInstallErrorCfgReadError(_odeConfig.getFile());
__log.error(errmsg, ex);
throw new ServletException(errmsg, ex);
}
@@ -157,38 +160,41 @@
if (!_workRoot.isDirectory())
throw new IllegalArgumentException(_workRoot + " does not exist or
is not a directory");
- __log.debug("Initializing transaction manager");
- initTxMgr();
- __log.debug("Creating data source.");
- initDataSource();
- __log.debug("Starting DAO.");
- initDAO();
- EndpointReferenceContextImpl eprContext = new
EndpointReferenceContextImpl(this);
- __log.debug("Initializing BPEL process store.");
- initProcessStore(eprContext);
- __log.debug("Initializing BPEL server.");
- initBpelServer(eprContext);
- __log.debug("Initializing HTTP connection manager");
- initHttpConnectionManager();
-
- // Register BPEL event listeners configured in axis2.properties
file.
- registerEventListeners();
- registerMexInterceptors();
- registerExternalVariableModules();
+ __log.debug("Initializing transaction manager");
+ initTxMgr();
+ __log.debug("Creating data source.");
+ initDataSource();
+ __log.debug("Starting DAO.");
+ initDAO();
+ EndpointReferenceContextImpl eprContext = new
EndpointReferenceContextImpl(this);
+ __log.debug("Initializing BPEL process store.");
+ initProcessStore(eprContext);
+ __log.debug("Initializing BPEL server.");
+ initBpelServer(eprContext);
+ __log.debug("Initializing HTTP connection manager");
+ initHttpConnectionManager();
+
+ // Register BPEL event listeners configured in axis2.properties file.
+ registerEventListeners();
+ registerMexInterceptors();
+ registerExternalVariableModules();
- _store.loadAll();
+ _store.loadAll();
- try {
- _bpelServer.start();
- } catch (Exception ex) {
- String errmsg = __msgs.msgOdeBpelServerStartFailure();
- __log.error(errmsg, ex);
- throw new ServletException(errmsg, ex);
- }
+ try {
+ _bpelServer.start();
+ } catch (Exception ex) {
+ String errmsg = __msgs.msgOdeBpelServerStartFailure();
+ __log.error(errmsg, ex);
+ throw new ServletException(errmsg, ex);
+ }
- _poller = new DeploymentPoller(_store.getDeployDir(), this);
+ _poller = getDeploymentPollerExt();
+ if( _poller == null ) {
+ _poller = new DeploymentPoller(_store.getDeployDir(), this);
+ }
- _mgtService = new ManagementService();
+ _mgtService = new ManagementService();
_mgtService.enableService(_axisConfig, _bpelServer, _store,
_appRoot.getAbsolutePath());
try {
@@ -198,17 +204,52 @@
throw new ServletException(e);
}
- __log.debug("Starting scheduler");
- _scheduler.start();
+ __log.debug("Starting scheduler");
+ _scheduler.start();
- __log.debug("Initializing JCA adapter.");
- initConnector();
+ __log.debug("Initializing JCA adapter.");
+ initConnector();
- _poller.start();
-
__log.info(__msgs.msgPollingStarted(_store.getDeployDir().getAbsolutePath()));
- __log.info(__msgs.msgOdeStarted());
- }
+ _poller.start();
+
__log.info(__msgs.msgPollingStarted(_store.getDeployDir().getAbsolutePath()));
+ __log.info(__msgs.msgOdeStarted());
+ }
+
+ @SuppressWarnings("unchecked")
+ private DeploymentPoller getDeploymentPollerExt() {
+ DeploymentPoller poller = null;
+
+ InputStream is = null;
+ try {
+ is =
ODEServer.class.getResourceAsStream("/deploy-ext.properties");
+ if( is != null ) {
+ __log.info("A deploy-ext.properties found; will use the
provided class if applicable.");
+ try {
+ Properties props = new Properties();
+ props.load(is);
+ String deploymentPollerClass =
props.getProperty("deploymentPoller.class");
+ if( deploymentPollerClass == null ) {
+ __log.warn("deploy-ext.properties found
in the class path; however, the file does not have 'deploymentPoller.class' as
one of the properties!!");
+ } else {
+ Class pollerClass =
Class.forName(deploymentPollerClass);
+ poller =
(DeploymentPoller)pollerClass.getConstructor(File.class,
ODEServer.class).newInstance(_store.getDeployDir(), this);
+ __log.info("A custom deployment poller:
" + deploymentPollerClass + " has been plugged in.");
+ }
+ } catch( Exception e ) {
+ __log.warn("Deployment poller extension class
is not loadable, falling back to the default DeploymentPoller.", e);
+ }
+ } else if( __log.isDebugEnabled() ) __log.debug("No
deploy-ext.properties found.");
+ } finally {
+ try {
+ if(is != null) is.close();
+ } catch( IOException ie ) {
+ // ignore
+ }
+ }
+ return poller;
+ }
+
private void initDataSource() throws ServletException {
_db = new Database(_odeConfig);
_db.setTransactionManager(_txMgr);
Modified:
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/deploy/DeploymentPoller.java
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/deploy/DeploymentPoller.java?rev=770855&r1=770854&r2=770855&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/deploy/DeploymentPoller.java
(original)
+++
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/deploy/DeploymentPoller.java
Fri May 1 23:04:00 2009
@@ -63,7 +63,7 @@
private PollingThread _poller;
- private ODEServer _odeServer;
+ protected ODEServer _odeServer;
private boolean _onHold = false;
@@ -106,6 +106,10 @@
_poller = null;
}
+ protected boolean isDeploymentFromODEFileSystemAllowed() {
+ return true;
+ }
+
/**
* Scan the directory for new (or removed) files (called mainly from
{...@link PollingThread}) and calls whoever is in charge of
* the actual deployment (or undeployment).
@@ -114,7 +118,7 @@
File[] files = _deployDir.listFiles(_fileFilter);
// Checking for new deployment directories
- if (files != null) {
+ if (isDeploymentFromODEFileSystemAllowed() && files != null) {
for (File file : files) {
File deployXml = new File(file, "deploy.xml");
File deployedMarker = new File(_deployDir, file.getName() +
".deployed");
Modified:
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java?rev=770855&r1=770854&r2=770855&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java
(original)
+++
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java
Fri May 1 23:04:00 2009
@@ -120,6 +120,11 @@
return _duDirectory.getName();
}
+ void setName(String name) {
+ // supports extensibility
+ _name = name;
+ }
+
CBPInfo getCBPInfo(QName typeName) {
return _processes.get(typeName);
}
Modified:
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java?rev=770855&r1=770854&r2=770855&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
(original)
+++
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
Fri May 1 23:04:00 2009
@@ -166,12 +166,23 @@
* Deploys a process.
*/
public Collection<QName> deploy(final File deploymentUnitDirectory) {
+ return deploy(deploymentUnitDirectory, true, null);
+ }
+
+ /**
+ * Deploys a process.
+ */
+ public Collection<QName> deploy(final File deploymentUnitDirectory,
boolean activate, String duName) {
__log.info(__msgs.msgDeployStarting(deploymentUnitDirectory));
final Date deployDate = new Date();
// Create the DU and compile/scan it before acquiring lock.
final DeploymentUnitDir du = new
DeploymentUnitDir(deploymentUnitDirectory);
+ if( duName != null ) {
+ // Override the package name if given from the parameter
+ du.setName(duName);
+ }
try {
du.compile();
} catch (CompilationException ce) {
@@ -305,24 +316,28 @@
}
public Collection<QName> undeploy(final File dir) {
+ return undeploy(dir.getName());
+ }
+
+ public Collection<QName> undeploy(final String duName) {
try {
exec(new Callable<Collection<QName>>() {
public Collection<QName> call(ConfStoreConnection conn) {
- DeploymentUnitDAO dudao =
conn.getDeploymentUnit(dir.getName());
+ DeploymentUnitDAO dudao = conn.getDeploymentUnit(duName);
if (dudao != null)
dudao.delete();
return null;
}
});
} catch (Exception ex) {
- __log.error("Error synchronizing with data store; " +
dir.getName() + " may be reappear after restart!");
+ __log.error("Error synchronizing with data store; " + duName + "
may be reappear after restart!");
}
Collection<QName> undeployed = Collections.emptyList();
DeploymentUnitDir du;
_rw.writeLock().lock();
try {
- du = _deploymentUnits.remove(dir.getName());
+ du = _deploymentUnits.remove(duName);
if (du != null) {
undeployed = toPids(du.getProcessNames(), du.getVersion());
}
@@ -613,7 +628,6 @@
* @param dudao
*/
protected List<ProcessConfImpl> load(DeploymentUnitDAO dudao) {
-
__log.debug("Loading deployment unit record from db: " +
dudao.getName());
File dudir = findDeployDir(dudao);
@@ -621,6 +635,8 @@
if (dudir == null || !dudir.exists())
throw new ContextException("Deployed directory " + (dudir == null
? "(unknown)" : dudir) + " no longer there!");
DeploymentUnitDir dud = new DeploymentUnitDir(dudir);
+ // set the name with the one from database
+ dud.setName(dudao.getName());
dud.scan();
ArrayList<ProcessConfImpl> loaded = new ArrayList<ProcessConfImpl>();