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 = ; 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("", "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

  1. Create OWSTimer.EXE.Config file in bin folder C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\bin
  2. Add these infomation in the file or you can put the 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>

Explanation of Key, Value in Configuration files

  1. AccountName, Password and Domain keys

Account should be the same as account which is used to run Windows SharePoint Services Timer service

  1. CustomWebServiceUrls key

It means customwebServiceUrls which you will use in several WFE, you have to configure these several links which is split by " ; ".

  1. MaxRecords key

It means how many records will get back when user keys in characters.

  1. TimerJobSchedule key

It stands for when timer job runs

  1. Detail_PeopleSearch_Debug and PeopleSearch_Exception keys

They are used to enable to note down log when they are set as “True”.

Create and Install Timer Job in MOSS 2007的更多相关文章

  1. How to upgrade workflow assembly in MOSS 2007

    This problem generally start when you are having an existing custom workflow and there are instances ...

  2. Custom Web Servic In MOSS 2007

    Tools: Visual Studio 2008,Visual Studio 2008 Command Prompt, Sharepoint Server 2007 Generate .disco ...

  3. MOSS 2007 错误0x80040E14解决

    今天公司内网莫名的出现错误,只能新建列表条目,不能创建网站,到后来列表条目也不能创建了,一直报0x80040E14错误.于是Google一把,搜索这个错误号,然后在apearce 的Blog找到了原因 ...

  4. Using XSLT and Open XML to Create a Word 2007 Document

    Summary: Learn how to transform XML data into a Word 2007 document by starting with an existing docu ...

  5. Embedding Documents in Word 2007 by Using the Open XML SDK 2.0 for Microsoft Office

    Download the sample code This visual how-to article presents a solution that creates a Word 2007 doc ...

  6. 转贴:sudo apt-get install 可以安装的一些软件

    Ubuntu 下的一些软件安装sudo apt-get install virtualbox#华主席推荐 2007年年度最佳软件,最佳编辑选择奖得主.....sudo apt-get install ...

  7. SharePoint 2007 页面定制(一)

    转:http://www.nanmu.net/SharePoint-MOSS-WSS-Silverlight/Lists/Posts/Post.aspx?ID=74 本文主要包括以下几方面内容: 1. ...

  8. C#中npoi操作Excel[版本2.0.1读写2003、2007格式]

    下载npoi2.0.1dll文件:http://download.csdn.net/detail/pukuimin1226/5851747 public static void test1()     ...

  9. NPOI兼容 excel2003,2007版本

    根据项目需要,需要对excel进行导入导出,所以选择NPOI,优点在这里就不详细介绍了,下面进入正题. public int Import(string path) { IList<Studen ...

随机推荐

  1. Node包管理工具

    Node包管理工具 只是简单的介绍一些工具的使用,有利于开发过程.除了介绍Node包管理工具,还介绍了前端打包工具,前端模块管理工具 Node包管理工具:    --npm    --cnpm    ...

  2. angularjs的三目运算

    前言:前几天写代码的时候遇到一个问题,有一个按钮,有"已关注"和"+关注"两种状态,需要对这两种状态的按钮的背景颜色进行区分,单后点击"已关注&quo ...

  3. jQuery概述

    JQUERY   JS语法字典---网友总结 1.document.write(""); 输出语句2.JS中的注释为//3.传统的HTML文档顺序是:document->ht ...

  4. Mac OS Terminal 几个快捷键

    在Mac系统中几个键位组合可以使Terminal的操作更加灵活方便. 1.将光标移动到行首:ctrl + a 2.将光标移动到行尾:ctrl + e 3.清除屏幕:            ctrl + ...

  5. EF事务嵌套

    EF中采用的是数据上下文DbContext,当针对数据库的所有操作共用一个数据上下文的时候,会使用同一个连接对象,因此连接打开一次,最后Save的时候关闭连接,避免了频繁的创建连接对象打开关闭,这在一 ...

  6. java full gc

    转自:http://blog.sina.com.cn/s/blog_7a351012010163a1.html

  7. PCB走线分析——直角、差分、蛇形线

    PCB直角走线的影响   布线(Layout)是PCB设计工程师最基本的工作技能之一.走线的好坏将直接影响到整个系统的性能,大多数高速的设计理论也要最终经过 Layout 得以实现并验证,由此可见,布 ...

  8. 自建数据源(RSO2),并支持增量

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  9. python用来压缩目录的脚本

    import zipfile,os,sys def zip_dir(dirname, zipfilename): filelist = [] if os.path.isfile(dirname): f ...

  10. Node.js 基础库

    全局对象 Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global对象的属性. 我们在 Node.js 中能够直接访问到对象通常都是 global ...