You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »

Prerequisites on Linux

The Perl support of JobScheduler engine should be switched to the latest Perl release (currently 5.18.2) (http://www.sos-berlin.com/jira/browse/JS-1096).

The JobScheduler needs a library ./lib/libsosperlscript.<perl-version>.so which is included in the setup.

Since JobScheduler release 1.6.4043 the library ./lib/libsosperlscript.5.18.2.so is included which is compiled with Perl 5.18.2.

This library works with Perl versions 5.12.x, 5.14.x, 5.16.x too.

32Bit JobScheduler

  1. You have to install a 32Bit Perl or a 64Bit Perl with a additional 32Bit Perl interpreter
  2. Create 2 symlinks in the ./lib directory of the JobScheduler installation
    1. The first symlink with the name libperl.so have to point to the 32Bit Perl interpreter libperl.so of the Perl installation
    2. The second symlink with the name libsosperlscript.so have to point to the ./lib/libsosperlscript.<perl-version>.so.

In the ./lib directory of the JobScheduler installation you find the following libsosperlscript.<perl-version>.so.

  • libsosperlscript.5.18.2.so
  • libsosperlscript.5.14.0.so (deprecated)
  • libsosperlscript.5.12.0.so (deprecated)
  • libsosperlscript.5.10.0.so (deprecated)
  • libsosperlscript.5.8.8.so (deprecated)

For example you have a Perl installation with version 5.12.3 and the 32Bit libraries are located in /usr/lib/perl5.
Then go to the ./lib directory of the JobScheduler installation and create the following symlinks:

 > ln -s /usr/lib/perl5/5.12.3/i586-linux-thread-multi/CORE/libperl.so libperl.so
 > test -f libsosperlscript.so && rm libsosperlscript.so
 > ln -s libsosperlscript.5.12.0.so libsosperlscript.so

Since JobScheduler Release 1.6.4043 you have to point the second symlink to libsosperlscript.5.18.2.so.

 > ln -s libsosperlscript.5.18.2.so libsosperlscript.so

Otherwise you get an error like

 [ERROR]  COM-80020009  DISP_E_EXCEPTION [begin] [] [COM-800401F8  CO_E_DLLNOTFOUND [CoGetClassObject] [perlScript], in Remote_module_instance_server::begin], method=call
 [info]   dlopen("libsosperlscript.so"): /install/path/of/jobscheduler/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /install/path/of/jobscheduler/lib/libsosperlscript.so)

64Bit JobScheduler

  1. You have to install a 64Bit Perl
  2. Create 2 symlinks in the ./lib directory of the JobScheduler installation
    1. The first symlink with the name libperl.so have to point to the 64Bit Perl interpreter libperl.so of the Perl installation
    2. The second symlink with the name libsosperlscript.so have to point to the ./lib/libsosperlscript.<perl-version>.so.

In the ./lib directory of the JobScheduler installation you find the following libsosperlscript.<perl-version>.so.

  • libsosperlscript.5.18.2.so
  • libsosperlscript.5.8.8.so (deprecated)

For example you have a Perl installation with version 5.12.3 and the 64Bit libraries are located in /usr/lib/perl5.
Then go to the ./lib directory of the JobScheduler installation and create the following symlinks:

 > ln -s /usr/lib/perl5/5.12.3/x86_64-linux-thread-multi/CORE/libperl.so libperl.so
 > test -f libsosperlscript.so && rm libsosperlscript.so
 > ln -s libsosperlscript.5.18.2.so libsosperlscript.so

Set $PERL5LIB

The libsosperlscript.<perl-version>.so set the @INC variable from the environment where libsosperlscript.<perl-version>.so was compiled.
It can be different from your own Perl environment.
Type

   perl -e 'print join "\n", @INC'

to get the content of @INC of your own Perl environment.

In the JobScheduler you have (e.g. for libsosperlscript.5.18.2.so) the following content of @INC

  /usr/local/perl-5.18.2/lib/site_perl/5.18.2/i686-linux-thread-multi
  /usr/local/perl-5.18.2/lib/site_perl/5.18.2
  /usr/local/perl-5.18.2/lib/5.18.2/i686-linux-thread-multi
  /usr/local/perl-5.18.2/lib/5.18.2
  .

You can test it with a JobScheduler job like

  <job>
    <script language="perlScript">
    <![CDATA[
        
#!/usr/bin/perl
print join "\n", @INC;
        
    ]]>

   </script>
   <run_time/>
  </job>

You have to set the PERL5LIB environment variable for the JobScheduler if the @INC has different content.
For this edit the ./user_bin/jobscheduler_environment_varibales.sh with

  export PERL5LIB=`perl -e 'print join ":", @INC'`

Look at the article How I add_environment variables for more information how you change the environment of the JobScheduler.

Prerequisites on Windows

You have to install an current ActivePerl with the same number of bits like the JobScheduler.

Job Example

Now you can test the JobScheduler-Perl-API with e.g. the following job.

<job>
	<script language="perlScript">
	<![CDATA[
		sub spooler_init {
    			my $rc = 1;
    
    			$spooler_log->info("spooler_init");  
    
    			return $rc;
  		}
  			
  			
  		sub spooler_process {
    			my $rc = 1;
    
    			$spooler_log->info("spooler_process");
    			$spooler_log->info($spooler_job->name . " is running"); 

    			return signal_return($rc);
  		}
  			
  			
  		sub spooler_exit {
     
     			$spooler_log->info("spooler_exit"); 

  		}
  			
  			
  		###################################################
  		# This method provides that the method   
  		# spooler_process is called only for one time.
  		#
  		# Standalone Jobs: 
  		# JobScheduler continues calling the spooler_process 
  		# method until it returns 0.
  		#  
  		# Order Jobs in a Job Chain: 
  		# The Order acquires the next node in the Job Chain 
  		# if spooler_process returns 1
  		# and the error node if spooler_process returns 0
  		#
  		# see http://www.sos-berlin.com/doc/en/scheduler.doc/api/Job_impl-perl.xml#method__spooler_process
  		###################################################
  		sub signal_return {
    			my ($rc) = @_;
    			if(defined($spooler_task->order)) { #is an Order Job
    	 			return $rc;
    			}
    			return 0;
  		}
  			
        ]]>
	</script>
	<run_time/>
</job>

For more information about the JobScheduler API look at http://www.sos-berlin.com/doc/en/scheduler.doc/api/api-perl.xml

 

  • No labels