Okay here goes. This is a message driven ejb. The user enters a string which 
represents an identification. This is done from a html form and text input. The 
idea is the string is used as an id for the creation of a new object.

Here is the html

  | <form action="CreateClubAction" method="GET">
  |           <table>
  |             <tr><th>Club ID</th><th><input type="text" name="clubId" 
value=""/></th></tr>
  |             <tr><td colspan="2"><input type="submit" name="add" 
value="add"/></td></tr>
  |     </table>
  | </form>
  | 

The url "CreateClubAction" is a servlet which creates an "in memory copy of 
data required to initialize the application. It then sends a message, the 
string entered into the html page and replies to standout the string entered 
whilst displaying a jsp page with a copy of the in memory data.

here is some of CreateClubAction.java, the servlet.

  | protected void doGet(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
  |             try{
  |                     String clubId = request.getParameter("clubId");
  |                     sendMessage(clubId);
  |                     forward(request, response);
  |             }catch(Exception e){
  |                     e.printStackTrace();
  |             }
  |     }
  | 
  | private void sendMessage(String clubId) throws 
  |                             NamingException, JMSException {
  |             QueueConnection qConnection = 
  |                     AsyncJujitsuFacadeUtil.getQueueConnection();
  |             Queue queue = AsyncJujitsuFacadeUtil.getQueue();
  |             QueueSession qSession = 
  |                     qConnection.createQueueSession(false, SESSIONTYPE);
  |             QueueSender qSender = qSession.createSender(queue);
  |             
  |             Club aClub = new Club();
  |             aClub.setId(clubId);
  |             
  |             ObjectMessage objectMessage = 
qSession.createObjectMessage(aClub);
  |             qSender.send(objectMessage);
  |             qSession.close();
  |             qConnection.close();
  |             
  |     }
  | 
  | private void forward(HttpServletRequest request, HttpServletResponse 
response) 
  |                     throws ServletException, IOException {
  |             this.getServletContext().getRequestDispatcher("/students.jsp")
  |                             .forward(request, response);
  |             
  |     } 
  | 

Where it is falling down is on the call to sendMessage() above. Which equates 
to the line in the xdoclet created class AsyncJujitsuFacadeUtil.java shown 
below.

  |    public static javax.jms.QueueConnection getQueueConnection() throws 
javax.naming.NamingException, javax.jms.JMSException
  |    {
  |       if (cachedConnectionFactory == null) {
  |          // Obtain initial context
  |          javax.naming.InitialContext initialContext = new 
javax.naming.InitialContext();
  |          try {
  |             java.lang.Object objRef = 
initialContext.lookup(CONNECTION_FACTORY_JNDI_NAME);
  |             cachedConnectionFactory = (javax.jms.QueueConnectionFactory) 
objRef;
  |          } finally {
  |             initialContext.close();
  |          }
  |       }
  |       return cachedConnectionFactory.createQueueConnection();
  |    }
  | 

The line below is where the exception points to...


  |             cachedConnectionFactory = (javax.jms.QueueConnectionFactory) 
objRef;
  | 

The bean class is shown below...


  | public class AsyncJujitsuFacadeBean implements javax.ejb.MessageDrivenBean,
  |             javax.jms.MessageListener {
  | 
  |     /**
  |      * 
  |      */
  |     private static final long serialVersionUID = 1L;
  |     /** 
  |      * <!-- begin-user-doc -->
  |      * <!-- end-user-doc -->
  |      * The context for the message-driven bean, set by the EJB container. 
  |      * @generated
  |      */
  |     private javax.ejb.MessageDrivenContext messageContext = null;
  |     private JujitsuFacade jujitsuFacade;
  | 
  |     /** 
  |      * Required method for container to set context.
  |      * @generated 
  |      */
  |     public void setMessageDrivenContext(
  |                     javax.ejb.MessageDrivenContext messageContext)
  |                     throws javax.ejb.EJBException {
  |             this.messageContext = messageContext;
  |     }
  | 
  |     /** 
  |      * Required creation method for message-driven beans. 
  |      *
  |      * <!-- begin-user-doc -->
  |      * <!-- end-user-doc -->
  |      *
  |      * <!-- begin-xdoclet-definition -->
  |      * @ejb.create-method 
  |      * <!-- end-xdoclet-definition -->
  |      * @generated
  |      */
  |     public void ejbCreate() {
  |             //no specific action required for message-driven beans 
  |             jujitsuFacade = ClubFacade.getJujitsuFacade();
  |     }
  | 
  |     /** 
  |      * Required removal method for message-driven beans. 
  |      * <!-- begin-user-doc -->
  |      * <!-- end-user-doc -->
  |      * @generated
  |      */
  |     public void ejbRemove() {
  |             messageContext = null;
  |     }
  | 
  |     /** 
  |      * This method implements the business logic for the EJB. 
  |      * 
  |      * <p>Make sure that the business logic accounts for asynchronous 
message processing. 
  |      * For example, it cannot be assumed that the EJB receives messages in 
the order they were 
  |      * sent by the client. Instance pooling within the container means that 
messages are not 
  |      * received or processed in a sequential order, although individual 
onMessage() calls to 
  |      * a given message-driven bean instance are serialized. 
  |      * 
  |      * <p>The <code>onMessage()</code> method is required, and must take a 
single parameter 
  |      * of type javax.jms.Message. The throws clause (if used) must not 
include an application 
  |      * exception. Must not be declared as final or static. 
  |      *
  |      * <!-- begin-user-doc -->
  |      * <!-- end-user-doc -->
  |      * @generated
  |      */
  |     public void onMessage(javax.jms.Message message) {
  |             // begin-user-code
  |             try{
  |                     Club club = (Club)((ObjectMessage) message).getObject();
  |                     jujitsuFacade.createClub(club);
  |                     System.out.println("A New Club: " + club.getId());
  |             }catch(JMSException e){
  |                     e.printStackTrace();
  |             }
  |             // end-user-code
  |     }
  | 
  |     /**
  |      * 
  |      */
  |     public AsyncJujitsuFacadeBean() {
  |             // TODO Auto-generated constructor stub
  |     }
  | }
  | 

Hope someone can understand whats going wrong here as I can't.

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

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4107900
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to