创建自定义计划作业监视器 ATG
Creating a custom Scheduled Job monitor ATG
我目前正在研究如何最终创建一个 Web 应用程序,该应用程序能够监控网站上 运行 的计划作业。它基于 ATG,我一直在研究很多 OOTB 组件,我认为我对它有所了解,但是我真的缺乏关于 ATG 的知识,因为我是一名实习生谁真的只认真看了 1/2 个月。
我目前的想法是通过扩展 SingletonSchedulableService 将我的自定义代码挂接到 performScheduledTask 但是所有当前的计划任务都在扩展 SingletonSchedulableService 并且进入每个 (30+) java 文件并更改它们听起来不是个好主意?我真的不确定。
以下代码是我希望使用预先存在的 performScheduledTask 将我自己的代码添加到其中的粗略想法。当 doScheduledTask 被调用时,我发送一条消息说它正在开始,当它结束时查看是否有错误并发送一条合适的消息。
public void performScheduledTask(Scheduler scheduler, ScheduledJob job) {
boolean gotLock = false;
try {
gotLock = acquireLock();
if (gotLock) {
if (isLoggingDebug())
try {
startTime= getJobTime();
sendToStart(name, description, id, startTime);
doScheduledTask(scheduler, job);
} catch (Exception e){
errorMsg= e.getMessage();
}
if (mErrorMessage == null) {
endTime= getJobTime();
String msg= "This job completed successfully";
sendToSuccess(name, description, id, endTime, msg);
} else {
endtime = getJobTime();
sendToFail(name, description, id, endtime, msg);
}
} else if (isLoggingDebug())
logDebug("sleeping until next scheduled wakeup.");
} finally {
if (gotLock)
releaseLock();
}
}
我现在有点迷茫,因为我从来没有完全靠自己完成过一个网络应用程序,更不用说将它挂接到这些预定的工作中了,所以非常感谢任何帮助。如果您需要任何额外信息,请告诉我。
那么您是否考虑过使用 dyn/admin
来达到这个目的?有一个可以访问的页面 http://<your-host-name:<port>/dyn/admin/nucleus/atg/dynamo/service/Scheduler
,其中有很多您要查找的信息。
此外,计划组件内置了性能监视器,其中实现了方法 startOperation
和 endOperation
。建议您查看使用这些而不是将您的代码挂钩到 performScheduledTask()
方法中。对于计划组件上的 属性,性能监视器可以是 enabled/disabled。
希望对您有所帮助。
大多数 Oracle Commerce 站点将使用某种形式的日志监控来监控和提醒问题,包括计划服务。 Splunk 是一个流行的工具。
识别对站点重要的错误并为它们设置操作可能需要一些迭代过程。
如果您想留在 ATG 框架内,您可以扩展日志系统,创建一个新的 LogEvent 接收器来侦听来自特定 Originator 的消息,然后执行一些操作,例如发送电子邮件。
这是关于日志框架的文档。
https://docs.oracle.com/cd/E41069_01/Platform.11-0/ATGPlatformProgGuide/html/s1102logevents01.html
另一种方法是扩展每个计划服务 classes 并将服务的 $class 属性设置为新的 class。通过这种方式,您可以 "intercept" 调用 performScheduledTask 并添加您的逻辑、捕获异常等。
performScheduledTask(..){
try{
super.performScheduledTask()
}catch(SomeException ex){
//Do something with it
}
}
这样您就不会更改每个现有 classes 中的任何代码,您可以选择您要使用的服务 "monitoring"
我目前正在研究如何最终创建一个 Web 应用程序,该应用程序能够监控网站上 运行 的计划作业。它基于 ATG,我一直在研究很多 OOTB 组件,我认为我对它有所了解,但是我真的缺乏关于 ATG 的知识,因为我是一名实习生谁真的只认真看了 1/2 个月。
我目前的想法是通过扩展 SingletonSchedulableService 将我的自定义代码挂接到 performScheduledTask 但是所有当前的计划任务都在扩展 SingletonSchedulableService 并且进入每个 (30+) java 文件并更改它们听起来不是个好主意?我真的不确定。
以下代码是我希望使用预先存在的 performScheduledTask 将我自己的代码添加到其中的粗略想法。当 doScheduledTask 被调用时,我发送一条消息说它正在开始,当它结束时查看是否有错误并发送一条合适的消息。
public void performScheduledTask(Scheduler scheduler, ScheduledJob job) {
boolean gotLock = false;
try {
gotLock = acquireLock();
if (gotLock) {
if (isLoggingDebug())
try {
startTime= getJobTime();
sendToStart(name, description, id, startTime);
doScheduledTask(scheduler, job);
} catch (Exception e){
errorMsg= e.getMessage();
}
if (mErrorMessage == null) {
endTime= getJobTime();
String msg= "This job completed successfully";
sendToSuccess(name, description, id, endTime, msg);
} else {
endtime = getJobTime();
sendToFail(name, description, id, endtime, msg);
}
} else if (isLoggingDebug())
logDebug("sleeping until next scheduled wakeup.");
} finally {
if (gotLock)
releaseLock();
}
}
我现在有点迷茫,因为我从来没有完全靠自己完成过一个网络应用程序,更不用说将它挂接到这些预定的工作中了,所以非常感谢任何帮助。如果您需要任何额外信息,请告诉我。
那么您是否考虑过使用 dyn/admin
来达到这个目的?有一个可以访问的页面 http://<your-host-name:<port>/dyn/admin/nucleus/atg/dynamo/service/Scheduler
,其中有很多您要查找的信息。
此外,计划组件内置了性能监视器,其中实现了方法 startOperation
和 endOperation
。建议您查看使用这些而不是将您的代码挂钩到 performScheduledTask()
方法中。对于计划组件上的 属性,性能监视器可以是 enabled/disabled。
希望对您有所帮助。
大多数 Oracle Commerce 站点将使用某种形式的日志监控来监控和提醒问题,包括计划服务。 Splunk 是一个流行的工具。
识别对站点重要的错误并为它们设置操作可能需要一些迭代过程。
如果您想留在 ATG 框架内,您可以扩展日志系统,创建一个新的 LogEvent 接收器来侦听来自特定 Originator 的消息,然后执行一些操作,例如发送电子邮件。
这是关于日志框架的文档。
https://docs.oracle.com/cd/E41069_01/Platform.11-0/ATGPlatformProgGuide/html/s1102logevents01.html
另一种方法是扩展每个计划服务 classes 并将服务的 $class 属性设置为新的 class。通过这种方式,您可以 "intercept" 调用 performScheduledTask 并添加您的逻辑、捕获异常等。
performScheduledTask(..){
try{
super.performScheduledTask()
}catch(SomeException ex){
//Do something with it
}
}
这样您就不会更改每个现有 classes 中的任何代码,您可以选择您要使用的服务 "monitoring"