[jboss-user] [Beginners Corner] - Re: java.lang.ClassCastException: org.jnp.interfaces.NamingC

tamscot do-not-reply at jboss.com
Tue Nov 27 04:02:38 EST 2007


The type of cachedConnectionFactory is...

  | /** Cached connection factory. Uses lazy loading to obtain its value. */
  |    private static javax.jms.QueueConnectionFactory cachedConnectionFactory = null;
  | 
declared at the top of the class

Declaration of CONNECTION_FACTORY_JNDI_NAME...

  | private static final java.lang.String CONNECTION_FACTORY_JNDI_NAME="";
  | 

The full code for the xdoclet produced class...

  | /*
  |  * Generated file - Do not edit!
  |  */
  | package com.jujitsu.ejb;
  | 
  | /**
  |  * Utility class for AsyncJujitsuFacade.
  |  * @generated 
  |  * @wtp generated
  |  */
  | public class AsyncJujitsuFacadeUtil
  | {
  | 
  |    /** Cached queue (javax.jms.Queue). Uses lazy loading to obtain its value (loaded by getQueue() methods). */
  |    private static javax.jms.Queue cachedQueue = null;
  |    /** Cached connection factory. Uses lazy loading to obtain its value. */
  |    private static javax.jms.QueueConnectionFactory cachedConnectionFactory = null;
  | 
  |   private static final java.lang.String DESTINATION_JNDI_NAME="queue/AsyncJujitsuFacade";
  |   private static final java.lang.String CONNECTION_FACTORY_JNDI_NAME="";
  | 
  |    /**
  |     * Obtain destination queue from default initial context
  |     * @return Destination JMS Queue for AsyncJujitsuFacade. Lookup using JNDI_NAME
  |     */
  |    public static javax.jms.Queue getQueue() throws javax.naming.NamingException
  |    {
  |       if (cachedQueue == null) {
  |          // Obtain initial context
  |          javax.naming.InitialContext initialContext = new javax.naming.InitialContext();
  |          try {
  |             java.lang.Object objRef = initialContext.lookup(DESTINATION_JNDI_NAME);
  |             cachedQueue = (javax.jms.Queue) objRef;
  |          } finally {
  |             initialContext.close();
  |          }
  |       }
  |       return cachedQueue;
  |    }
  | 
  |    /**
  |     * Obtain destination queue from parameterised initial context
  |     * @param environment Parameters to use for creating initial context
  |     * @return Destination JMS Queue for AsyncJujitsuFacade. Lookup using JNDI_NAME
  |     */
  |    public static javax.jms.Queue getQueue( java.util.Hashtable environment ) throws javax.naming.NamingException
  |    {
  |       // Obtain initial context
  |       javax.naming.InitialContext initialContext = new javax.naming.InitialContext(environment);
  |       try {
  |          java.lang.Object objRef = initialContext.lookup(DESTINATION_JNDI_NAME);
  |          return (javax.jms.Queue) objRef;
  |       } finally {
  |          initialContext.close();
  |       }
  |    }
  | 
  |    /**
  |     * Obtain destination queue from default initial context
  |     * @return Destination JMS Connection Factory for AsyncJujitsuFacade. Lookup using JNDI_NAME
  |     */
  |    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();
  |    }
  | 
  |    /**
  |     * Obtain destination queue from parameterised initial context
  |     * @param environment Parameters to use for creating initial context
  |     * @return Destination JMS Connection Factory for AsyncJujitsuFacade. Lookup using JNDI_NAME
  |     */
  |    public static javax.jms.QueueConnection getQueueConnection( java.util.Hashtable environment ) throws javax.naming.NamingException, javax.jms.JMSException
  |    {
  |       // Obtain initial context
  |       javax.naming.InitialContext initialContext = new javax.naming.InitialContext(environment);
  |       try {
  |          java.lang.Object objRef = initialContext.lookup(CONNECTION_FACTORY_JNDI_NAME);
  |          return ((javax.jms.QueueConnectionFactory) objRef).createQueueConnection();
  |       } finally {
  |          initialContext.close();
  |       }
  |    }
  | 
  |    /** Cached per JVM server IP. */
  |    private static String hexServerIP = null;
  | 
  |    // initialise the secure random instance
  |    private static final java.security.SecureRandom seeder = new java.security.SecureRandom();
  | 
  |    /**
  |     * A 32 byte GUID generator (Globally Unique ID). These artificial keys SHOULD <strong>NOT </strong> be seen by the user,
  |     * not even touched by the DBA but with very rare exceptions, just manipulated by the database and the programs.
  |     *
  |     * Usage: Add an id field (type java.lang.String) to your EJB, and add setId(XXXUtil.generateGUID(this)); to the ejbCreate method.
  |     */
  |    public static final String generateGUID(Object o) {
  |        StringBuffer tmpBuffer = new StringBuffer(16);
  |        if (hexServerIP == null) {
  |            java.net.InetAddress localInetAddress = null;
  |            try {
  |                // get the inet address
  | 
  |                localInetAddress = java.net.InetAddress.getLocalHost();
  |            }
  |            catch (java.net.UnknownHostException uhe) {
  |                System.err.println("AsyncJujitsuFacadeUtil: Could not get the local IP address using InetAddress.getLocalHost()!");
  |                // todo: find better way to get around this...
  |                uhe.printStackTrace();
  |                return null;
  |            }
  |            byte serverIP[] = localInetAddress.getAddress();
  |            hexServerIP = hexFormat(getInt(serverIP), 8);
  |        }
  | 
  |        String hashcode = hexFormat(System.identityHashCode(o), 8);
  |        tmpBuffer.append(hexServerIP);
  |        tmpBuffer.append(hashcode);
  | 
  |        long timeNow      = System.currentTimeMillis();
  |        int timeLow       = (int)timeNow & 0xFFFFFFFF;
  |        int node          = seeder.nextInt();
  | 
  |        StringBuffer guid = new StringBuffer(32);
  |        guid.append(hexFormat(timeLow, 8));
  |        guid.append(tmpBuffer.toString());
  |        guid.append(hexFormat(node, 8));
  |        return guid.toString();
  |    }
  | 
  |    private static int getInt(byte bytes[]) {
  |        int i = 0;
  |        int j = 24;
  |        for (int k = 0; j >= 0; k++) {
  |            int l = bytes[k] & 0xff;
  |            i += l << j;
  |            j -= 8;
  |        }
  |        return i;
  |    }
  | 
  |    private static String hexFormat(int i, int j) {
  |        String s = Integer.toHexString(i);
  |        return padHex(s, j) + s;
  |    }
  | 
  |    private static String padHex(String s, int i) {
  |        StringBuffer tmpBuffer = new StringBuffer();
  |        if (s.length() < i) {
  |            for (int j = 0; j < i - s.length(); j++) {
  |                tmpBuffer.append('0');
  |            }
  |        }
  |        return tmpBuffer.toString();
  |    }
  | 
  | }
  | 

This is code which is generated when the ejb is created...
it seems as though the value of CONNECTION_FACTORY_JNDI_NAME maybe an empty string when called in the getQueueConnection() method (no params) above. I have no control over this code or it's parameters?

The value of objRef when the last method is called, the method in which the exception occurs.

  | objRef	NamingContext  (id=263)	
  | 	env	Hashtable<K,V>  (id=265)	
  | 	naming	NamingServer  (id=270)	
  | 	parser	NamingParser  (id=274)	
  | 	prefix	CompoundName  (id=277)	
  | 


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

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



More information about the jboss-user mailing list