Spring 使用自动连线的Liferay中的计划任务

Spring 使用自动连线的Liferay中的计划任务,spring,liferay,scheduled-tasks,autowired,Spring,Liferay,Scheduled Tasks,Autowired,我正在尝试在liferay portlet中创建计划任务 Liferay:6.2 弹簧:3.1.4.释放 与 方法是发射。但是服务组件为null。正常情况下,其他部件的服务是否正常工作 我试图找到解决方案,但可能缺少一些设置。 Thanx,MessageListener不是由Spring实例化的,而是由Liferay实例化的(请参见QuartzSchedulerEngine.getMessageListener(String,ClassLoader))。Liferay只是实例化了这个类。因此,您

我正在尝试在liferay portlet中创建计划任务

Liferay:6.2

弹簧:3.1.4.释放

方法是发射。但是服务组件为null。正常情况下,其他部件的服务是否正常工作

我试图找到解决方案,但可能缺少一些设置。
Thanx,

MessageListener
不是由Spring实例化的,而是由Liferay实例化的(请参见
QuartzSchedulerEngine.getMessageListener(String,ClassLoader)
)。Liferay只是实例化了这个类。因此,您无法将任何内容自动连接到
liferayportlet.xml
中定义的MessageListener中

但是,如果您的服务是在门户应用程序上下文中定义的,则可以使用
PortalBeanLocatorUtil.locate

    <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");
    }