[jboss-user] [EJB 3.0] - Re: Quartz Job unable to access deployed EJB (JBoss AS 5.01)

josey do-not-reply at jboss.com
Fri May 8 15:46:42 EDT 2009


Yeah, I saw that jira issue and a posting http://www.jboss.org/index.html?module=bb&op=viewtopic&t=147180.  I figured that it was likely the same issue but was not sure.

Here is a simple example I made that runs in the server.  It will be easier than posting all the related code pertaining to the log output above.  Here goes:

QueueingEngineMessageSenderI.java

  | package com.squaretrade.queueing;
  | 
  | public interface QueueingEngineMessageSenderI {
  |     public void displayMessage(String message);
  | }
  | 


QueueingEngineMessageSenderRemote.java (not really necessary for this exact example as I could have just used the interface above as the remote reference but displaying anyway)

  | package com.squaretrade.queueing;
  | 
  | public interface QueueingEngineMessageSenderRemote extends QueueingEngineMessageSenderI 
  | {
  | }
  | 

QueueingEngineMessageSenderImpl.java

  | package com.squaretrade.queueing;
  | 
  | import javax.ejb.Stateless;
  | import javax.ejb.Remote;
  | import org.apache.log4j.Logger;
  | 
  | @Stateless
  | @Remote(QueueingEngineMessageSenderRemote.class)
  | public class QueueingEngineMessageSenderImpl
  |         implements QueueingEngineMessageSenderRemote
  | {
  |     private static final Logger log =
  |             Logger.getLogger(QueueingEngineMessageSenderImpl.class);
  | 
  |     /**
  |      * Logs the message.
  |      * @param message the type of the message
  |      */
  |     public void displayMessage(String message) {
  |         log.info("Message: " + message);
  |     }
  | }
  | 

ejb-jar.xml

  | <?xml version="1.0" encoding="UTF-8"?>
  | <ejb-jar
  |         xmlns="http://java.sun.com/xml/ns/javaee"
  |         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  |         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  |                             http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
  |         version="3.0">
  |    <enterprise-beans>
  |        <message-driven>
  |            <ejb-name>RequeueingEngineMessageSenderTestMDB</ejb-name>
  |            <ejb-class>com.squaretrade.queueing.spec.RequeueingEngineMessageSenderTest</ejb-class>
  |            <transaction-type>Container</transaction-type>
  |            <activation-config>
  |                <activation-config-property>
  |                    <activation-config-property-name>cronTrigger</activation-config-property-name>
  |                    <activation-config-property-value>0 0/5 * * * ?</activation-config-property-value>
  |                </activation-config-property>
  |                <activation-config-property>
  |                    <activation-config-property-name>jobName</activation-config-property-name>
  |                    <activation-config-property-value>RequeueingEngineMessageSenderTest</activation-config-property-value>
  |                </activation-config-property>
  |            </activation-config>
  |        </message-driven>
  |   </enterprise-beans>
  | </ejb-jar>
  | 



The relevant server log output for the quartz job execution:

  | 2009-05-08 12:40:00,023 DEBUG [org.jboss.ejb3.interceptors.aop.InterceptorSequencer] (DefaultQuartzScheduler_Worker-4) aroundInvoke [advisedMethod=public void com.squaretrade.queueing.spec.RequeueingEngineMessageSenderTest.execute(org.quartz.JobExecutionContext) throws org.quartz.JobExecutionException, unadvisedMethod=public void com.squaretrade.queueing.spec.RequeueingEngineMessageSenderTest.execute(org.quartz.JobExecutionContext) throws org.quartz.JobExecutionException, metadata=null, targetObject=com.squaretrade.queueing.spec.RequeueingEngineMessageSenderTest at 18697cd, arguments=[Ljava.lang.Object;@1aea098]
  | 2009-05-08 12:40:00,023 INFO  [com.squaretrade.queueing.spec.RequeueingEngineMessageSenderTest] (DefaultQuartzScheduler_Worker-4) Get initial context for ejb
  | 2009-05-08 12:40:00,024 INFO  [com.squaretrade.queueing.spec.RequeueingEngineMessageSenderTest] (DefaultQuartzScheduler_Worker-4) Look up jndi name:batch/QueueingEngineMessageSenderImpl/remote
  | 2009-05-08 12:40:00,025 DEBUG [org.jboss.ejb3.proxy.objectfactory.ProxyObjectFactory] (DefaultQuartzScheduler_Worker-4) org.jboss.ejb3.proxy.objectfactory.ProxyObjectFactory servicing request for batch/QueueingEngineMessageSenderImpl/remote
  | 2009-05-08 12:40:00,031 DEBUG [org.jboss.remoting.InvokerRegistry] (DefaultQuartzScheduler_Worker-4) removed org.jboss.remoting.transport.local.LocalClientInvoker at c7732a from registry
  | 2009-05-08 12:40:00,031 DEBUG [org.jboss.ejb3.proxy.objectfactory.session.SessionProxyObjectFactory] (DefaultQuartzScheduler_Worker-4) Created Proxy of type $Proxy345 for EJB3 Business Interface: com.squaretrade.queueing.QueueingEngineMessageSenderRemote
  | 2009-05-08 12:40:00,031 ERROR [com.squaretrade.queueing.spec.RequeueingEngineMessageSenderTest] (DefaultQuartzScheduler_Worker-4) javax.naming.NamingException: Could not dereference object [Root exception is java.lang.RuntimeException: Can not find interface declared by Proxy in our CL + BaseClassLoader at 1f85f8c{vfszip:/usr/local/jboss-5.0.1.GA/server/batch/deploy/quartz-ra.rar/}]
  | 


Other things to note:
The session bean is deployed.  I verified this in two ways:
1. By looking at the jmx-console
2. By running a client program from the command line that accesses the stateless session bean in the remote context

Here is the relevant server log output that happened when calling session bean's remote context from a client program (command line).  It shows that the sessions bean has a remote context that is accessible to clients.

  | 2009-05-08 12:43:27,161 DEBUG [org.jboss.remoting.transport.socket.ClientSocketWrapper] (WorkerThread#0[172.16.100.152:38162]) reset timeout: 60000
  | 2009-05-08 12:43:27,225 DEBUG [org.jboss.remoting.transport.socket.ServerSocketWrapper] (WorkerThread#0[172.16.100.152:38162]) ServerSocketWrapper[Socket[addr=/172.16.100.152,port=38162,localport=3873].1af594f] wrote CLOSING
  | 2009-05-08 12:43:27,225 DEBUG [org.jboss.remoting.transport.socket.SocketWrapper] (WorkerThread#0[172.16.100.152:38162]) ServerSocketWrapper[Socket[addr=/172.16.100.152,port=38162,localport=3873].1af594f] closing socketPreview
  | 2009-05-08 12:43:27,225 DEBUG [org.jboss.remoting.transport.socket.SocketWrapper] (WorkerThread#0[172.16.100.152:38162]) ServerSocketWrapper[Socket[addr=/172.16.100.152,port=38162,localport=3873].1af594f] closed socket
  | 2009-05-08 12:43:27,225 DEBUG [org.jboss.remoting.transport.socket.ServerThread] (WorkerThread#0[172.16.100.152:38162]) WorkerThread#0[172.16.100.152:38162] closed socketWrapper: ServerSocketWrapper[Socket[addr=/172.16.100.152,port=38162,localport=3873].1af594f]
  | 2009-05-08 12:43:27,286 DEBUG [org.jboss.remoting.transport.socket.ClientSocketWrapper] (WorkerThread#0[172.16.100.152:38163]) reset timeout: 60000
  | 2009-05-08 12:43:27,304 DEBUG [org.jboss.ejb3.stateless.StatelessContainer] (WorkerThread#0[172.16.100.152:38163]) Received dynamic invocation for method with hash: 278620747465739483
  | 2009-05-08 12:43:27,308 DEBUG [org.jboss.ejb3.interceptors.aop.InterceptorSequencer] (WorkerThread#0[172.16.100.152:38163]) aroundInvoke [advisedMethod=public void com.squaretrade.queueing.QueueingEngineMessageSenderImpl.displayMessage(java.lang.String), unadvisedMethod=public void com.squaretrade.queueing.QueueingEngineMessageSenderImpl.displayMessage(java.lang.String), metadata=[metaData={DISPATCHER={OID=[type=AS_ISvalue=jboss.j2ee:ear=batch.ear,jar=beans-batch.jar,name=QueueingEngineMessageSenderImpl,service=EJB3]}, REMOTING={SUBSYSTEM=[type=AS_ISvalue=AOP], INVOKER_LOCATOR=[type=AS_ISvalue=InvokerLocator [socket://172.16.77.70:3873/]]}, security={context=[type=MARSHALLEDvalue=[org.jboss.security.plugins.JBossSecurityContext()CLIENT)]]}, IS_LOCAL={GUID=[type=AS_ISvalue=jboss.j2ee:ear=batch.ear,jar=beans-batch.jar,name=QueueingEngineMessageSenderImpl,service=EJB3,VMID=9dc59e2c84f0ecd8:5cf1d0f4:12121b2911f:-7ff7]}, SessionInvocation={InvokedMethod=[type=AS_ISvalue=com.squaretrade.queueing.QueueingEngineMessageSenderRemote: com.squaretrade.queueing.QueueingEngineMessageSenderI.displayMessage(java.lang.String)]}}], targetObject=com.squaretrade.queueing.QueueingEngineMessageSenderImpl at 1092239, arguments=[Ljava.lang.Object;@63db73]
  | 2009-05-08 12:43:27,308 INFO  [com.squaretrade.queueing.QueueingEngineMessageSenderImpl] (WorkerThread#0[172.16.100.152:38163]) Message: Test quartz message
  | 2009-05-08 12:43:27,311 DEBUG [org.jboss.remoting.transport.socket.ServerSocketWrapper] (WorkerThread#0[172.16.100.152:38163]) ServerSocketWrapper[Socket[addr=/172.16.100.152,port=38163,localport=3873].8ee16c] wrote CLOSING
  | 2009-05-08 12:43:27,311 DEBUG [org.jboss.remoting.transport.socket.SocketWrapper] (WorkerThread#0[172.16.100.152:38163]) ServerSocketWrapper[Socket[addr=/172.16.100.152,port=38163,localport=3873].8ee16c] closing socket
  | 2009-05-08 12:43:27,311 DEBUG [org.jboss.remoting.transport.socket.SocketWrapper] (WorkerThread#0[172.16.100.152:38163]) ServerSocketWrapper[Socket[addr=/172.16.100.152,port=38163,localport=3873].8ee16c] closed socket
  | 2009-05-08 12:43:27,311 DEBUG [org.jboss.remoting.transport.socket.ServerThread] (WorkerThread#0[172.16.100.152:38163]) WorkerThread#0[172.16.100.152:38163] closed socketWrapper: ServerSocketWrapper[Socket[addr=/172.16.100.152,port=38163,localport=3873].8ee16c]
  | 


View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4229808#4229808

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4229808




More information about the jboss-user mailing list