我根据另一个问题的建议进行了一些更改,以将我的课程变成 a@Singleton
而不是@Stateless
,但是我不再@MessageDriven
像以前那样在我的 Bean 中接收消息。建议?请注意,该主题在jbossmq-destinations-service.xml
@javax.ejb.Singleton(mappedName="MySingletonClass")
public class MySingletonClass implements SomeInterface
{
private Timer timer = null;
@javax.annotation.Resource
TimerService timerService;
/**
* Creates the timer.
*/
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void resetTimer()
{
if (timer != null)
{
timer.cancel();
}
timer = timerService.createTimer(30000, "Note");
}
@Override
public void readResponseMsg(Document responseXml)
{
resetTimer();
//Do stuff
}
@Override
@Timeout
public void timeout() throws RemoteException
{
//do stuff
}
}
和多边开发银行:
@javax.ejb.MessageDriven(mappedName = "jms/MyTopic", activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "MyTopic"),
@ActivationConfigProperty(propertyName = "messagingType", propertyValue = "javax.jms.MessageListener"),
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge") })
@ResourceAdapter("activemq.rar")
public class MyMDB implements MessageListener
{
private static final Logger ourLogger = Logger.getLogger(MyMDB.class);
@javax.ejb.EJB(mappedName="MySingletonClass") private MySingletonClassInterface reader;
/**
* @param message
*/
public void onMessage(Message message)
{
TextMessage textMessage = (TextMessage) message;
try
{
System.out.println("Received Message Text: " + textMessage.getText());
reader.readResponseMsg(loadXMLFromString(textMessage.getText()));
}
catch (JMSException | SAXException | ParserConfigurationException | IOException e)
{
ourLogger.error("Exception handling Schedule Results Message", e);
}
}
}
这是界面:
@javax.ejb.Local
public interface SomeInterface
{
public void readResponseMsg(Document responseXml);
public void timeout() throws RemoteException;
}
更新我一直在摆弄一些事情,现在看到一些异常,至少表明正在发生一些事情。我已经用我的更改更新了上面的代码。这是我的例外:
Caused by: javax.naming.NameNotFoundException: MySingletonClass not bound
at org.jnp.server.NamingServer.getBinding(NamingServer.java:771) [:5.0.5.Final]
at org.jnp.server.NamingServer.getBinding(NamingServer.java:779) [:5.0.5.Final]
at org.jnp.server.NamingServer.getObject(NamingServer.java:785) [:5.0.5.Final]
at org.jnp.server.NamingServer.lookup(NamingServer.java:396) [:5.0.5.Final]
at org.jnp.server.NamingServer.lookup(NamingServer.java:399) [:5.0.5.Final]
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:728) [:5.0.5.Final]
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:688) [:5.0.5.Final]
at javax.naming.InitialContext.lookup(InitialContext.java:411) [:1.7.0_25]
at org.jnp.interfaces.NamingContext.resolveLink(NamingContext.java:1350) [:5.0.5.Final]
... 61 more
此外,在 JBoss 6 启动日志中,我还看到了以下内容:
[BeanInstantiatorDeployerBase] Installed org.jboss.ejb3.instantiator.impl.Ejb31SpecBeanInstantiator@fbda95 into MC at org.jboss.ejb.bean.instantiator/mmpl/server/MySingletonClass
然后再往下一点:
DEPLOYMENTS MISSING DEPENDENCIES:
Deployment "jboss-switchboard:appName=mmpl,module=server,name=MyMDB" is missing the following dependencies:
Dependency "jboss.j2ee:ear=mmpl.ear,jar=server.jar,name=MySingletonClass,service=EJB3" (should be in state "Installed", but is actually in state "** NOT FOUND Depends on 'jboss.j2ee:ear=mmpl.ear,jar=server.jar,name=MySingletonClass,service=EJB3',whenRequired=MapControllerStateModel$ControllerStateWrapper@7ba014{Installed},dependentState=MapControllerStateModel$ControllerStateWrapper@7ba014{Installed} **")
Deployment "jboss.j2ee:ear=mmpl.ear,jar=server.jar,name=MySingletonClass,service=EJB3_endpoint" is missing the following dependencies:
Dependency "jboss.j2ee:ear=mmpl.ear,jar=server.jar,name=MySingletonClass,service=EJB3" (should be in state "Installed", but is actually in state "** NOT FOUND Depends on 'jboss.j2ee:ear=mmpl.ear,jar=server.jar,name=MySingletonClass,service=EJB3' **")
DEPLOYMENTS IN ERROR:
Deployment "jboss.j2ee:ear=mmpl.ear,jar=server.jar,name=MySingletonClass,service=EJB3" is in error due to the following reason(s): ** NOT FOUND Depends on 'jboss.j2ee:ear=mmpl.ear,jar=server.jar,name=MySingletonClass,service=EJB3',whenRequired=MapControllerStateModel$ControllerStateWrapper@7ba014{Installed},dependentState=MapControllerStateModel$ControllerStateWrapper@7ba014{Installed} **, ** NOT FOUND Depends on 'jboss.j2ee:ear=mmpl.ear,jar=server.jar,name=MySingletonClass,service=EJB3' **