Create and Install Timer Job in MOSS 2007
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
- Create OWSTimer.EXE.Config file in bin folder C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\bin
- 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
- AccountName, Password and Domain keys
Account should be the same as account which is used to run Windows SharePoint Services Timer service
- CustomWebServiceUrls key
It means customwebServiceUrls which you will use in several WFE, you have to configure these several links which is split by " ; ".
- MaxRecords key
It means how many records will get back when user keys in characters.
- TimerJobSchedule key
It stands for when timer job runs
- 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的更多相关文章
- How to upgrade workflow assembly in MOSS 2007
This problem generally start when you are having an existing custom workflow and there are instances ...
- Custom Web Servic In MOSS 2007
Tools: Visual Studio 2008,Visual Studio 2008 Command Prompt, Sharepoint Server 2007 Generate .disco ...
- MOSS 2007 错误0x80040E14解决
今天公司内网莫名的出现错误,只能新建列表条目,不能创建网站,到后来列表条目也不能创建了,一直报0x80040E14错误.于是Google一把,搜索这个错误号,然后在apearce 的Blog找到了原因 ...
- 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 ...
- 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 ...
- 转贴:sudo apt-get install 可以安装的一些软件
Ubuntu 下的一些软件安装sudo apt-get install virtualbox#华主席推荐 2007年年度最佳软件,最佳编辑选择奖得主.....sudo apt-get install ...
- SharePoint 2007 页面定制(一)
转:http://www.nanmu.net/SharePoint-MOSS-WSS-Silverlight/Lists/Posts/Post.aspx?ID=74 本文主要包括以下几方面内容: 1. ...
- C#中npoi操作Excel[版本2.0.1读写2003、2007格式]
下载npoi2.0.1dll文件:http://download.csdn.net/detail/pukuimin1226/5851747 public static void test1() ...
- NPOI兼容 excel2003,2007版本
根据项目需要,需要对excel进行导入导出,所以选择NPOI,优点在这里就不详细介绍了,下面进入正题. public int Import(string path) { IList<Studen ...
随机推荐
- SQL Server 在task manager里面显示CPU 使用率过高
发现一篇好文章 https://mssqlwiki.com/2012/10/04/troubleshooting-sql-server-high-cpu-usage/
- 生成javadoc
javadoc可以很方便的用来生成一些接口文档. 操作步骤: 1.export->javadoc 2.选择导出的位置 3.确定导出 常见异常: 1. 软件包 javax.servlet.http ...
- Java 基础 Map 练习题
第一题 (Map)利用Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队.如果该 年没有举办世界杯,则输出:没有举办世界杯. 附:世界杯冠军以及对应的夺冠年 ...
- phpMyAdmin的配置
好久没写东西了,上来记录一下今天学的一点小东西吧~ 之前搞php开发的时候,一直用的是SQLyog来操作mysql数据库的,但是今天发现sqlyog功能不是很完善,主要是我想修改数据库名,但是sqly ...
- CSS中的浮动
这是一个重点内容,在做网页布局的时候,经常用到,所以在这里单独将其列出来小结!
- 【Normal Form】数据库表结构设计所遵从的范式
参考的优秀文章 数据库(第一范式,第二范式,第三范式) 数据库设计是件严肃.关键的事儿,一毕业,加入一个大型的行业项目,那儿的前辈资深工程师,就给我灌输数据库如何关键.神圣.深不可测的观念,所以,我一 ...
- JS汉语转拼音脚本
测试代码: var anhui = "安徽"; //获得全拼 pinyin.getFullChars(anhui); //获得首拼 pinyin.getCamelChars(anh ...
- 浏览器禁止js打开新窗口
在项目中,有个需求是需要ajax获取新地址,然后去打开该页面地址,这样会被浏览器拦截,可以采取以下方式:1.再ajax请求先前,先创建一个新窗口 var newTab = window.open('' ...
- 利用JS制作简便计算器
var d; var a=prompt("请输入数字"); a=parseInt(a); if(isNaN(a)){ alert("請輸入正確數字"); } e ...
- 前端中sprite.png的实现
通过background-position来控制X轴和Y轴,从而实现显示sprite.png中想要的ico或图案. 如下图所示: