我试图在liferay portlet中创建计划任务。
Liferay:6.2
Spring:3.1.4.RELEASE
使用
<scheduler-entry>
<scheduler-description>test-scheduler</scheduler-description>
<scheduler-event-listener-class>
project.ScheduledProcesser
</scheduler-event-listener-class>
<trigger>
<simple>
<simple-trigger-value>
1
</simple-trigger-value>
<time-unit>minute</time-unit>
</simple>
</trigger>
</scheduler-entry>
和相应的类
@Component
public class ScheduledProcesser implements MessageListener {
private static Log log = LogFactoryUtil
.getLog(ScheduledProcesser.class);
@Autowired
@Qualifier("myRequestService")
private RequestService service;
@Override
public void receive(Message message) throws MessageListenerException {
log.info("Starting");
Request req = service.get("AAA746");
if (req!=null)
log.info("REQ -" + req.getId());
log.info("Finished");
}
该方法正在解雇。但服务组件为null。通常情况下,其他部分的服务运作良好。
我试图找到解决方案,但可能缺少一些设置。 感谢名单,
答案 0 :(得分:2)
MessageListener
不是由Spring实例化的,而是由Liferay实现的(参见QuartzSchedulerEngine.getMessageListener(String, ClassLoader)
的实现)。而Liferay只是实例化了这个类。因此,您无法将任何内容自动装配到liferay-portlet.xml
。
但是,如果您的服务是在门户网站应用程序上下文中定义的,那么您可以使用PortalBeanLocatorUtil.locate
。