标签:
Excute Timerjob
public class TriggerLoadCacheTimerJob : SPJobDefinition { string ExceptionFlag = string.Empty; public TriggerLoadCacheTimerJob() : base() { } // Overriding the parameterized constructor public TriggerLoadCacheTimerJob(string jobName, SPService service, SPServer server, SPJobLockType targetType) : base(jobName, service, server, targetType) { } public TriggerLoadCacheTimerJob(string jobName, SPWebApplication webApp) : base(jobName, webApp, null, SPJobLockType.Job) { // create the timer job with the name passed in Constructor and assign title this.Title = Constants.TIMERJOB_NAME; } public override void Execute(Guid targetInstanceId) { TriggerLoadCacheWebService(); } }
private void TriggerLoadCacheWebService() { try { SPWebApplication webApp = this.Parent as SPWebApplication; Configuration config = WebConfigurationManager.OpenWebConfiguration("/", webApp.Name); string CustomWebServiceURLs = config.AppSettings.Settings["CustomWebServiceUrls"].Value; string AccountName = config.AppSettings.Settings["AccountName"].Value; string Password = config.AppSettings.Settings["Password"].Value; string Domain = config.AppSettings.Settings["Domain"].Value; ExceptionFlag = config.AppSettings.Settings[Constants.LogExceptionFlag].Value; string[] customWSURLs = CustomWebServiceURLs.Split(‘;‘); for (int i = 0; i < customWSURLs.Length; i++) { AEnhancement.PSWebService mywebService = new AEnhancement.PSWebService(); mywebService.Url = customWSURLs[i].ToString(); NetworkCredential credential = new NetworkCredential(AccountName, Password, Domain); //mywebService.Timeout=300000; mywebService.Credentials = credential; mywebService.LoadCacheAsync(); } } catch (Exception ex) { if (ExceptionFlag.ToLower() == "true") { TraceLog.Error("Message:" + ex.Message + "Source:" + ex.Source + "TargetSite:" + Convert.ToString(ex.TargetSite), "TriggerLoadCacheWebService Method in Timer Job"); } } }
Timerjob inherited SPJobDefinition, it is based on webapplication(CA). You are able to debug timerjob via OWSTimer.exe.
Install TimerJob-Feature Active
class TimerJobFeatureReceiver : SPFeatureReceiver { string ExceptionFlag = string.Empty; string InfoFlag = string.Empty; public override void FeatureActivated(SPFeatureReceiverProperties properties) { try { TraceLog.Information("Activate Feature Start", "Activate Feature"); SPSite CurrentSite = properties.Feature.Parent as SPSite; if (CurrentSite == null) { TraceLog.Information("Current Site is NULL", "Activate Feature"); return; } else { TraceLog.Information("Current Site " + CurrentSite.Url, "Activate Feature"); } SPWebApplication webapp = CurrentSite.WebApplication; if (webapp == null) { TraceLog.Information("Web APP is NULL", "Activate Feature"); return; } else { TraceLog.Information("WebAPP "+webapp.Name, "Activate Feature"); } // deletes the timer job if already exists foreach (SPJobDefinition job in webapp.JobDefinitions) { if (job.Name == Constants.TIMERJOB_NAME) { job.Delete(); TraceLog.Information("Timer Job Delete Firstly", "Activate Feature"); break; } } // install the job SPSecurity.RunWithElevatedPrivileges(() => { TraceLog.Information("Install Timer Job Begin", "Activate Feature"); TriggerLoadCacheTimerJob customTimerjob = new TriggerLoadCacheTimerJob(Constants.TIMERJOB_NAME, webapp); TraceLog.Information("111", "Activate Feature"); Configuration config = WebConfigurationManager.OpenWebConfiguration("/", CurrentSite.WebApplication.Name); TraceLog.Information("config created", "Activate Feature"); string TimerJobSchedule = config.AppSettings.Settings["TimerJobSchedule"].Value; TraceLog.Information(TimerJobSchedule, "Activate Feature"); ExceptionFlag = config.AppSettings.Settings[Constants.LogExceptionFlag].Value; SPSchedule schedule = SPSchedule.FromString("daily at " + TimerJobSchedule); //SPMinuteSchedule schedule = new SPMinuteSchedule(); //schedule.BeginSecond = 0; //schedule.EndSecond = 59; //schedule.Interval = 5; customTimerjob.Schedule = schedule; TraceLog.Information("Timer Job UPdate Method Start", "Activate Feature"); customTimerjob.Update(); TraceLog.Information("Timer Job UPdate Method End", "Activate Feature"); TraceLog.Information("Install Timer Job End", "Activate Feature"); }); } catch (Exception ex) { if (ExceptionFlag.ToLower() == "true") { TraceLog.Error("Message:" + ex.Message + "Source:" + ex.Source + "TargetSite:" + Convert.ToString(ex.TargetSite), "TriggerLoadCacheWebService Method in Timer Job"); } } } public override void FeatureDeactivating(SPFeatureReceiverProperties properties) { try { SPSite CurrentSite = properties.Feature.Parent as SPSite; if (CurrentSite == null) return; SPWebApplication webapp = CurrentSite.WebApplication; if (webapp == null) return; // deletes the timer job if already exists foreach (SPJobDefinition job in webapp.JobDefinitions) { if (job.Name == Constants.TIMERJOB_NAME) { job.Delete(); break; } } } catch (Exception ex) { if (ExceptionFlag.ToLower() == "true") { TraceLog.Error("Message:" + ex.Message + "Source:" + ex.Source + "TargetSite:" + Convert.ToString(ex.TargetSite), "TriggerLoadCacheWebService Method in Timer Job"); } } } }
Feature base on site
Create Config file in bin Folder
<configuration> <appSettings> <add key="AccountName" value="Jenny" /> <add key="Password" value="c003#" /> <add key="Domain" value="abc" /> <add key="CustomWebServiceUrls" value="http://sp2007:11908/_vti_bin/AWebService/PSWebService.asmx;http://sp2007:11909/_vti_bin/AWebService/PSWebService.asmx" /> <add key="Detail_PeopleSearch_Debug" value="True" /> <add key="PeopleSearch_Exception" value="True" /> </appSettings> </configuration>
Account should be the same as account which is used to run Windows SharePoint Services Timer service
It means customwebServiceUrls which you will use in several WFE, you have to configure these several links which is split by " ; ".
It means how many records will get back when user keys in characters.
It stands for when timer job runs
They are used to enable to note down log when they are set as “True”.
Create and Install Timer Job in MOSS 2007
标签:
原文地址:http://www.cnblogs.com/CrystalWind/p/4435373.html