我正在引用此链接link
用liferay安排我的工作。
我添加了Job Scheduler类,它是: -
import com.liferay.portal.kernel.messaging.Message;
import com.liferay.portal.kernel.messaging.MessageListener;
import com.liferay.portal.kernel.messaging.MessageListenerException;
public class SchedulerLiferay implements MessageListener {
@Override
public void receive(Message arg0) throws MessageListenerException {
System.out.println("hello world");
}
}
在我的liferay portlet.xml文件中,我添加了: -
<portlet>
<portlet-name>quartz-demo</portlet-name>
<icon>/icon.png</icon>
<scheduler-entry>
<scheduler-event-listener-class>com.infinite.npsc.Job.SchedulerLiferay</scheduler-event-listener-class>
<trigger>
<!-- <simple>
<simple-trigger-value>
5
</simple-trigger-value>
<time-unit>second</time-unit>
</simple> -->
<cron>
<cron-trigger-value>0/5 * * * * ?</cron-trigger-value>
</cron>
</trigger>
</scheduler-entry>
<header-portlet-css>/css/main.css</header-portlet-css>
<footer-portlet-javascript>/js/main.js</footer-portlet-javascript>
<css-class-wrapper>quartz-demo-portlet</css-class-wrapper>
</portlet>
我还在我的portlet.xml文件中添加了这个portlet,如下所示: -
<portlet>
<portlet-name>quartz-demo</portlet-name>
<display-name>Quartz Demo</display-name>
<portlet-class>com.liferay.util.bridges.mvc.MVCPortlet</portlet-class>
<init-param>
<name>view-template</name>
<value>/view.jsp</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
</supports>
<portlet-info>
<title>Quartz Demo</title>
<short-title>Quartz Demo</short-title>
<keywords>Quartz Demo</keywords>
</portlet-info>
<security-role-ref>
<role-name>administrator</role-name>
</security-role-ref>
<security-role-ref>
<role-name>guest</role-name>
</security-role-ref>
<security-role-ref>
<role-name>power-user</role-name>
</security-role-ref>
<security-role-ref>
<role-name>user</role-name>
</security-role-ref>
</portlet>
工作不会运行。应用程序启动成功但没有任我希望每5秒钟在控制台中打印hello world
。
我根据你的问题创建了一个工作portlet,它在我的控制台中每5秒显示一个“hello world”(在Liferay EE 6.1.30上)。
我来告诉你详细的步骤:
:
import com.liferay.portal.kernel.messaging.Message;
import com.liferay.portal.kernel.messaging.MessageListener;
import com.liferay.portal.kernel.messaging.MessageListenerException;
public class SchedulerLiferay implements MessageListener {
@Override
public void receive(Message arg0) throws MessageListenerException {
System.out.println("hello world");
}
}
6.然后我像这样修改了liferay-portlet.xml:
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.1.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_1_0.dtd">
<liferay-portlet-app>
<portlet>
<portlet-name>quartz-demo</portlet-name>
<icon>/icon.png</icon>
<scheduler-entry>
<scheduler-event-listener-class>com.test.SchedulerLiferay</scheduler-event-listener-class>
<trigger>
<simple>
<simple-trigger-value>5</simple-trigger-value>
<time-unit>second</time-unit>
</simple>
</trigger>
</scheduler-entry>
<header-portlet-css>/css/main.css</header-portlet-css>
<footer-portlet-javascript>/js/main.js</footer-portlet-javascript>
<css-class-wrapper>quartz-demo-portlet</css-class-wrapper>
</portlet>
<portlet>
<portlet-name>quartzdemo</portlet-name>
<icon>/icon.png</icon>
<instanceable>false</instanceable>
<header-portlet-css>/css/main.css</header-portlet-css>
<footer-portlet-javascript>
/js/main.js
</footer-portlet-javascript>
<css-class-wrapper>quartzdemo-portlet</css-class-wrapper>
</portlet>
<role-mapper>
<role-name>administrator</role-name>
<role-link>Administrator</role-link>
</role-mapper>
<role-mapper>
<role-name>guest</role-name>
<role-link>Guest</role-link>
</role-mapper>
<role-mapper>
<role-name>power-user</role-name>
<role-link>Power User</role-link>
</role-mapper>
<role-mapper>
<role-name>user</role-name>
<role-link>User</role-link>
</role-mapper>
</liferay-portlet-app>
注意:我认为'简单触发'和'cron'不应该一起使用。这可能是它无法在您身边工作的原因。
确保使用1.6兼容的JVM。
在第6步,我们需要特别小心,用正确的类名填写此标记:com.test.SchedulerLiferay
你可以在这里找到portlet的源代码:https://github.com/peterpetrekanics/QuartzDemo-portlet-6130
如果您有任何问题,请随时在此处发布, 最好的祝福, 彼得