Details
-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
jBPM 6.2.0.Final
-
None
-
NEW
-
NEW
-
Description
On Windows systems, the *-jbpmSessionId.ser file (usually located in jboss.server.data.dir) cannot be accessed. This is due to the format of the filename, which contains ":" (colons are invalid characters in Windows filenames, but not in Linux) as separators between GROUP, ARTIFACT, VERSION (and also kbasename and ksessionname if provided) e.g.:
standalone\data\com.myCompany:myArtifact:1.2.3-jbpmSessionId.ser.
The filename (called identifier) is set in KModuleDeploymentUnit, in getIdentifier(),
and used in SingletonRuntimeManager in getPersistedSessionId() and persistSessionId():
protected void persistSessionId(String location, String identifier, Long ksessionId) { if (location == null) { return; } FileOutputStream fos = null; ObjectOutputStream out = null; try { fos = new FileOutputStream(location + File.separator + identifier + "-jbpmSessionId.ser"); out = new ObjectOutputStream(fos); out.writeObject(Long.valueOf(ksessionId)); out.close(); } catch (IOException ex) { // logger.warn("Error when persisting known session id", ex); } finally {
The implication by not persisting this file is: No old session can be restored (server restart) thus each time a new one is created - which means that no timers connected to the session can be triggered after a restart.
Update: This only happens when using the default schedulerService (using ThreadPoolSchedulerService). As soon as you switch to QuartzSchedulerService, Timers will start working (because the dont need to be persisted in the SessionInfo anymore).