[EJB3 Development] - Ejb not found on http session timeout
by Aliaksandr Stsiapanay
Aliaksandr Stsiapanay [https://community.jboss.org/people/alexdev] created the discussion
"Ejb not found on http session timeout"
To view the discussion, visit: https://community.jboss.org/message/761124#761124
--------------------------------------------------------------
Hi everybody!
I have a problem of getting ejb local reference in Http session listener in method #sessionDestroyed(HttpSessionEvent)
There is code snippet below:
+@WebListener+
+public class SessionCleanUpListener implements HttpSessionListener {+
+ /**+
+ * @see HttpSessionListener#sessionCreated(HttpSessionEvent)+
+ */+
+ public void sessionCreated(HttpSessionEvent arg0) {+
+ }+
+ /**+
+ * @see HttpSessionListener#sessionDestroyed(HttpSessionEvent)+
+ */+
+ public void sessionDestroyed(HttpSessionEvent arg0) {+
+ ServiceLocator.getInstance().getWorkflowMessageManagerBean().removeNotPersistentItems(arg0.getSession().getId());+
+ }+
+}+
ServiceLocator is a utility class to obtain ejb reference.
+public class ServiceLocator {+
+ private final static String JNDI_NAME_WORKFLOW_MESSAGE_MANAGER_BEAN = "java:app/EDI_EJB/WorkflowMessageManagerBean";+
+ private final static ServiceLocator SERVICE_LOCATOR = new ServiceLocator();+
+ private final Context context;+
+ private ServiceLocator() {+
+ try {+
+ context = new InitialContext();+
+ } catch (NamingException e) {+
+ throw new RuntimeException(e);+
+ }+
+ }+
+ public static ServiceLocator getInstance() {+
+ return SERVICE_LOCATOR;+
+ }+
+ public WorkflowMessageManagerBeanLocal getWorkflowMessageManagerBean() {+
+ try {+
+ return (WorkflowMessageManagerBeanLocal) context.lookup(JNDI_NAME_WORKFLOW_MESSAGE_MANAGER_BEAN);+
+ } catch (NamingException e) {+
+ throw new RuntimeException(e);+
+ } +
+ }+
+}+
When session timeout is triggered I got following exception in jboss console:
13:39:52,179 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/edi]] (ContainerBackgroundProcessor[StandardEngine[jboss.web]]) Session event listener threw exception: java.lang.RuntimeException: javax.naming.NameNotFoundException: java:app/EDI_EJB/WorkflowMessageManagerBean
at com.nvcm.edi.web.factory.ServiceLocator.getWorkflowMessageManagerBean(ServiceLocator.java:82) [classes(inlove)
at com.nvcm.edi.web.listener.SessionCleanUpListener.sessionDestroyed(SessionCleanUpListener.java:26) [classes(inlove)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:690) [jbossweb-7.0.13.Final.jar(inlove)
at org.apache.catalina.session.StandardSession.isValid(StandardSession.java:585) [jbossweb-7.0.13.Final.jar(inlove)
at org.apache.catalina.session.ManagerBase.processExpires(ManagerBase.java:390) [jbossweb-7.0.13.Final.jar(inlove)
at org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:375) [jbossweb-7.0.13.Final.jar(inlove)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1316) [jbossweb-7.0.13.Final.jar(inlove)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601) [jbossweb-7.0.13.Final.jar(inlove)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610) [jbossweb-7.0.13.Final.jar(inlove)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610) [jbossweb-7.0.13.Final.jar(inlove)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590) [jbossweb-7.0.13.Final.jar(inlove)
at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_05]
Caused by: javax.naming.NameNotFoundException: java:app/EDI_EJB/WorkflowMessageManagerBean
at org.jboss.as.naming.InitialContext.lookup(InitialContext.java:121)
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:214)
at javax.naming.InitialContext.lookup(Unknown Source) [rt.jar:1.7.0_05]
at com.nvcm.edi.web.factory.ServiceLocator.getWorkflowMessageManagerBean(ServiceLocator.java:80) [classes(inlove)
... 11 more
We use Java 1.6, jboss-as-7.1.1.Final, Ejb 3 on our project.
Please any help?
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/761124#761124]
Start a new discussion in EJB3 Development at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&con...]
12 years, 2 months
[JBoss AS 7 Development] - connecting a remote hornetQ server
by Hans Steiner
Hans Steiner [https://community.jboss.org/people/hans-juergen.stemmer.vkb.de] created the discussion
"connecting a remote hornetQ server"
To view the discussion, visit: https://community.jboss.org/message/729620#729620
--------------------------------------------------------------
Hi out there
I am trying to connect a jboss as 7.1.0 with another jboss that should only act as a hornetQ server (2.2.11).
I see that in the ejb subsystem
<mdb>
<resource-adapter-ref resource-adapter-name="*hornetq-ra"*/>
<bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>
</mdb>
is configured.
In the message subsystem I use a connector
<connectors>
<connector name="*netty*">
<factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-class>
<param key="host" value="xxxxx"/>
<param key="port" value="5745"/>
</connector>
</connectors>
that is referenced from the connection pool
<pooled-connection-factory name="*hornetq-ra*">
<transaction mode="xa"/>
<connectors>
<connector-ref connector-name="*netty*"/>
</connectors>
<entries>
<entry name="java:/JmsXA"/>
</entries>
</pooled-connection-factory>
All this works fine, except of an error/warning I receive a few seconds after I have started the server.
> 15:54:20,640 WARN [org.hornetq.jms.server.recovery.HornetQXAResourceWrapper] Can't connect to any hornetq server on recovery [XARecoveryConfig [hornetQConnectionFactory=HornetQConnectionFactory [serverLocator=ServerLocatorImpl [initialConnectors=[org-hornetq-core-remoting-impl-netty-NettyConnectorFactory?port=5745&host=xxxxx], discoveryGroupConfiguration=null], clientID=null, dupsOKBatchSize=1048576, transactionBatchSize=1048576, readOnly=false], *username=null, password=null*]]
> 15:54:20,656 WARN [com.arjuna.ats.jta] ARJUNA016027: Local XARecoveryModule.xaRecovery got XA exception XAException.XAER_RMERR: javax.transaction.xa.XAException: Error trying to connect to any providers for xa recovery
> at org.hornetq.jms.server.recovery.HornetQXAResourceWrapper.getDelegate(HornetQXAResourceWrapper.java:275) [hornetq-jms-2.2.11.Final.jar:]
> at org.hornetq.jms.server.recovery.HornetQXAResourceWrapper.recover(HornetQXAResourceWrapper.java:77) [hornetq-jms-2.2.11.Final.jar:]
> at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.xaRecovery(XARecoveryModule.java:503) [jbossjts-4.16.2.Final.jar:]
> at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.resourceInitiatedRecoveryForRecoveryHelpers(XARecoveryModule.java:471) [jbossjts-4.16.2.Final.jar:]
> at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.bottomUpRecovery(XARecoveryModule.java:385) [jbossjts-4.16.2.Final.jar:]
> at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.periodicWorkSecondPass(XARecoveryModule.java:166) [jbossjts-4.16.2.Final.jar:]
> at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.doWorkInternal(PeriodicRecovery.java:789) [jbossjts-4.16.2.Final.jar:]
> at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.run(PeriodicRecovery.java:371) [jbossjts-4.16.2.Final.jar:]
> Caused by: HornetQException[errorCode=2 message=null]
> at org.hornetq.jms.server.recovery.HornetQXAResourceWrapper.connect(HornetQXAResourceWrapper.java:351) [hornetq-jms-2.2.11.Final.jar:]
> at org.hornetq.jms.server.recovery.HornetQXAResourceWrapper.getDelegate(HornetQXAResourceWrapper.java:251) [hornetq-jms-2.2.11.Final.jar:]
> ... 7 more
>
> 15:54:20,703 WARN [org.hornetq.jms.server.recovery.HornetQXAResourceWrapper] Can't connect to any hornetq server on recovery [XARecoveryConfig [hornetQConnectionFactory=HornetQConnectionFactory [serverLocator=ServerLocatorImpl [initialConnectors=[org-hornetq-core-remoting-impl-netty-NettyConnectorFactory?port=5745&host=xxxxx], discoveryGroupConfiguration=null], clientID=null, dupsOKBatchSize=1048576, transactionBatchSize=1048576, readOnly=false], username=null, password=null]]
The queue is found and I can send and receive messages. I use annotations like this
@MessageDriven(name="MyMDB", activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "global/myQueue"),
@ActivationConfigProperty(propertyName = "user", propertyValue = "guest"),
@ActivationConfigProperty(propertyName = "password", propertyValue = "guest")...
for the mdb.
Can anybody help me with the XA warning? I suppose all I have to do is to configure username and passwort in the right manner. I read something about ra.xml and the resource-adapters subsystem, but I could not find out how to set any properties.
Perhaps there is even a better way to combine a remote hornetQ server with the use of annotations. I am not happy having the messaging subsystem (not present in a standalone.xml without hornetq) in my configuration. Can I delete some portions just leaving the client-part of the jms configuration?
Thx very much for help.
hans
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/729620#729620]
Start a new discussion in JBoss AS 7 Development at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&con...]
12 years, 3 months