Questions & Answers

SOLVED
marcfr
Elite Observer

CorporateContent per Beanshell-Skript

Jump to solution

Hallo zusammen,

wir rufen per Skript die CorporateContent-Funktionalitรคt auf. Das funktioniert soweit auch. Allerdings, wenn wรคhrend das Skript lรคuft, der Auftrag abgebrochen wird, dann ist das Paket gesperrt und kann nicht wieder entsperrt werden (nur ein FS-Server-Neustart lรถst das Problem).

Das Skript sieht wie folgt aus:






us = context.getUserService();

ps = us.getStore(de.espirit.firstspirit.access.store.Store.Type.PAGESTORE, false);

md = us.getStore(de.espirit.firstspirit.access.store.Store.Type.MEDIASTORE, false);

children = ps.getChildren();

mediaFolder = md.getStoreElement("images", IDProvider.UidType.MEDIASTORE_FOLDER);

mediaPackage = mediaFolder.getPackage();

if(mediaPackage != null){


try{


//create new version:


if(!mediaPackage.isLocked())


  mediaPackage.lock();



packageVersion = mediaPackage.createVersion("" + new Date().getTime(), "" + new Date().getTime(), true);





packageManager = context.getConnection().getService(PackageManager.SERVICE_NAME);









//save package:





try{



mediaPackage.save();



mediaPackage.unlock();



mediaPackage.publishPackage();


}


catch(Exception e){



context.logError("error: " + e.getMessage());


}


finally {



if(mediaPackage.isLocked())



  mediaPackage.unlock();


}




}

catch(Exception e){

  context.logError("error: " + e.getMessage());

}

finally{


if(mediaPackage.isLocked())



mediaPackage.unlock();

}//finally


}//if

Als Fehler kommt dann:

Target exception: de.espirit.firstspirit.server.NotLockedException: object 3685687 locked in different session (project 2645901, session 3411552831525479586)

-> die Session "3411552831525479586" gibt es aber laut ServerMonitoring nicht mehr.

Mรผsste codetechnisch etwas angepasst werden?

Viele GrรผรŸe,

Marc Friedemann

1 Solution

Accepted Solutions

Lรถsung gefunden:

Lรคuft das Skript mit einer eigenen Verbindung, dann wird der Lock gelรถst.

View solution in original post

4 Replies
marcfr
Elite Observer

รœber eine Antwort wรคre ich sehr dankbar ๐Ÿ™‚

0 Kudos

Ich wรผrde das unlock in den (ersten) finally-block setzen. Ansonsten wรผrdes du z.B. einen Unlock machen, wenn das Paket von wem anders gelockt ist. Eventuell blockt auch der PackageManager selbst das Paket? Die Sitzung sieht man ja nicht unbedingt.

0 Kudos

Ich habe Ihren Vorschlag soeben mal versucht. Das Ergebnis ist leider dasselbe: Das Paket bleibt durch das Abbrechen des Auftrags gelockt.

0 Kudos

Lรถsung gefunden:

Lรคuft das Skript mit einer eigenen Verbindung, dann wird der Lock gelรถst.

Type a product name