Skip to Content
author's profile photo Former Member
Former Member

Scheduler service on EP 6.0 SP2

Hello All,

I try to implement custom schedule task for EP 6.0 SP 2.

I create class CleanJobTask implements ISchedulerTask with default constructor and run method...

Also I create meta config archive and put into

In portalapp.xml I add references to usermanagement, knowledgemanagement,,,,,,,

But when configuration framework try to init ScheduleEntry and exception occured:

#1.5# to load task java.lang.ClassNotFoundException:

at java.lang.ClassLoader.findClass(

at com.sapportals.wcm.crt.CrtClassLoaderRegistry$LinkedClassLoader.findClass(

at java.lang.ClassLoader.loadClass(

at java.lang.ClassLoader.loadClass(


at com.sapportals.wcm.service.scheduler.wcm.SchedulerEntry.init(

at com.sapportals.wcm.service.scheduler.wcm.SchedulerEntry.<init>(

at com.sapportals.wcm.service.scheduler.wcm.Scheduler.configure(

at com.sapportals.wcm.service.scheduler.wcm.SchedulerService.configEvent(

at com.sapportals.config.event.ConfigEventService.dispatchEvent(

at com.sapportals.config.event.ConfigEventService.configEvent(

at com.sapportals.config.event.ConfigWatcher.callConfigListeners(

at com.sapportals.config.event.ConfigWatcher.flushEvents(



#1.5# in configuration event handler: com.sapportals.wcm.crt.configuration.ConfigurationException: com.sapportals.wcm.WcmException: Failed to load task

at com.sapportals.wcm.service.scheduler.wcm.Scheduler.configure(

Can anyone help me to resolve this?

Add a comment
10|10000 characters needed characters exceeded

Related questions

2 Answers

  • author's profile photo Former Member
    Former Member
    Posted on Apr 28, 2004 at 01:30 PM

    Hello All,

    how can be a meta config archive created and which data has to be inside?

    The Config Framework Archiver Plugin just gives me errors like:

    Missing folder local/data

    after creation the message:

    Invalid structure (/..../local/data folder is empty)

    comes out.

    Wow can help me to resolve this?

    Add a comment
    10|10000 characters needed characters exceeded

    • Hi Sven,

      currently the following rules are valid for the ConfigArchive plugins:

      Plugin Version <=1.1.8 --> src.config/data/cm/ & src.config/meta/expanded/cm/

      Plugin Version 1.2.0 --> src.config/local/data/cm/ &


      Plugin Version >1.2.0 --> src.config/install/data/cm/ &


      For Version >1.2.0 the SAP NetWeaver Developer Studio will deliver Plugins for automatic structure creation. In older versions you have to create the structure manually.

      Best regards,


  • author's profile photo Former Member
    Former Member
    Posted on Apr 23, 2004 at 10:02 AM

    Hi Aliaksandr,

    KM's scheduler couldn't access your CleanJobTask because your portal application knows the KM, but the KM does not know your application. But it's a simple task to create a PAR that allows the KM to call your code. All you need is to register your application's class loader in the KM's class loader registry.

    To register an application's class loader it is necessary to have something like a bootstrapper that performs the registration automatically during the deployment and/or start-up phase of the Portal. For this reason a Portal Service that is started at the startup of the Portal Runtime should be added to the PAR files that contains the KM application. This Portal Service could do the registration job.

    Example: A PAR file that contains an application must have a deployment descriptor (portalapp.xml). This file describes the application itself and provides information required at runtime. Portal Services are declared in service elements inside the services element and must have a name attribute. className is the name of the implementation class of the Portal Service. This class must implement the com.sapportals.portal.prt.service.IService interface. startup must be set to "true" to start the service at startup of the Portal Runtime. To register a class loader to the CRT a sharing reference to the CRT PAR must be added.


    <?xml version="1.0" encoding="iso-8859-1"?>

    <application name="" alias="">


    <property name="releasable" value="false"/>

    <property name="startup" value="true"/>

    <property name="ClassLoadingPolicy" value="CoreAccessInAPI,transitive"/>

    <property name="DeploymentPolicy" value="5.0"/>

    <property name="SharingReference" value="<b></b>,,"/>



    <service name="<b></b>" alias="">


    <property name="className" value="Bootstrap"/>

    <property name="classNameFactory" value=""/>

    <property name="classNameManager" value=""/>

    <property name="poolFactory" value="0"/>

    <property name="startup" value="true"/>






    The following code snippet performs the registration in a single line of code. getKey() must return the name of the Portal Service as defined in the deployment descriptor above.


    import com.sapportals.portal.prt.service.IService;

    import com.sapportals.portal.prt.service.IServiceConfiguration;

    import com.sapportals.portal.prt.service.IServiceContext;


    import com.sapportals.wcm.crt.CrtClassLoaderRegistry;


    • Registers the PAR class loader in the CrtClassLoaderRegistry


    public class Bootstrap implements IService {

    public static final String KEY = "<b></b>";

    private static final Location LOC = Location.getLocation(Bootstrap.class);

    private IServiceContext serviceContext;

    public void init(IServiceContext serviceContext) {

    this.serviceContext = serviceContext;

    // register the class loader of this application to the

    // class loader registry

    CrtClassLoaderRegistry.addClassLoader(getKey(), getClass().getClassLoader());

    LOC.debugT("init of " + getKey() + " completed.");


    public IServiceContext getContext() { return this.serviceContext; }

    public String getKey() { return KEY; }

    public void afterInit() {}

    public void configure(IServiceConfiguration serviceConfiguration) {}

    public void destroy() {}

    public void release() {}



    Regards, Jens

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.