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. C# DllImport“调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配 ”

    调用外部dll时,出现如下问题 C# DllImport“调用导致堆栈不对称.原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配.请检查 PInvoke 签名的调用约定和参数与非托管的目标 ...

  2. C# ASP.NET 读取EXCEL 单元格 读取 空值 不显示

    跟大家分享一下,[摘自]:http://blog.csdn.net/li185416672/article/details/8213729 读取excel时,某些单元格为空值 原来如此: 当我们用ol ...

  3. Android存储

    Android的四种数据存储方式: 1.SharedPrefrences 2.SQLite 3.Content Provider 4.File SharedPrefrences: 1.是一种轻型的数据 ...

  4. ICTCLAS20160405分词系统调试过程

    一.前期准备: 1.下载最新版本的资源包:CTCLAS20160405171043_ICTCLAS2016分词系统下载包 2.下载最新版本的licence:https://github.com/NLP ...

  5. 市面上主流服务器简单介绍(apache、IIS、tomcat..)

    apache:apache(阿帕奇)的具体介绍可以参看apache的网站(http://www.apache.org/),或者在网上随便搜搜吧.apache是世界使用排名第一的web服务器软件:它可以 ...

  6. [ASM C/C++] C语言数组

    固定长度的数组: 可以具有任何的存储类别. 长度可变的数组: 只能具有自动的生存周期(定义于语句块内,眀没有static修饰符). 名字必须为一般的标识符,因此结构或联合的成员不能是数组的标识符. 读 ...

  7. Java SE 基础:标识(zhì)符

    Java SE 基础:标识(zhì)符 一.标识符定义 标识符,就是给类.接口.方法.变量等起名字时的字符序列 二.组成规则与注意事项 1.组成规则 英文大小写字母 数组 $ 和 _ 2.注意事项 不 ...

  8. 关于bootstrap的一些运用

    bootstrap用起来很方便,代码量少,写自适应网站最合适了! 关于bootstrap你必须要知道的几点: “行(row)”必须包含在 .container (固定宽度)或 .container-f ...

  9. 学习git与github的二三bug

    前期概要:git也装好啦,github的账号也注册好啦,ssh key也加了,第一次 git push -u origin master也没问题了 然而 第二次push的时候,提示 Error: Pe ...

  10. Dom中的继承关系

    首先声明,一些内容基于个人猜测,如果哪里有错误,请立即联系在下! 我们用js操作Dom时,会经常用到一些个方法比如基于获取到的元素选择其子元素: <!DOCTYPE html> <h ...