[Beginners Corner] - Re: java.lang.ClassCastException: org.jnp.interfaces.NamingC
by tamscot
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
18 years, 5 months
[JBoss Messaging] - Transparent login to JBoss Messaging
by chand0s
env: JBoss 4.2.2 + JBoss Messaging 1.4
problem: I have my own LoginModule. All beans and destinations are configured to use it. I have, for example, user with name "user", password "password" and role "role".
When I need to invoke bean's method, I pass username/password through JNDI (SECURITY_PRINCIPAL/SECURITY_CREDENTIALS).
When I need to work with some queue, I do login procedure look like this:
| InitialContext ctx = new InitialContext(<don't pass user/pwd here>);
| ConnectionFactory cf = (ConnectionFactory) ctx.lookup("/ConnectionFactory");
| Connection = cf.createConnection("user", "password"); // pass user/password here
| ..........................
|
I do it from client and all works fine. But how I can work with JMS from bean? Now I make it like:
| @RolesAllowed(value="role")
| public void someBeanMethod() {
| String currentUser = sessionContext.getPrincipal().getName(); // username, who invoked this bean's method
| String password = getPasswordFromDatabase(currentUser); // get password from db
| InitialContext ctx = new InitialContext();
| ConnectionFactory cf = (ConnectionFactory) ctx.lookup("/ConnectionFactory");
| Connection = cf.createConnection(currentUser, password); // I don't want to do it!
| ..............
| }
I don't want to do second login actions, because I have done one login when I invoked bean's method. How I can work with JBoss Messaging from bean's method with username/password, who invoked bean's method.
P.S. Sorry for my english, I'm not native speaker.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4107953#4107953
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4107953
18 years, 5 months
[JBoss Seam] - Re: generating forms programatically
by steshaw
In Hightower's "JSF for non-believers" anti-FUD series? I cannot find it. He talks about creating your own components in part 4 but I don't think it covers dynamically constructing components at runtime.
s:decorate serves it's purpose and certainly deals with some aspects of boilerplate but it isn't a complete solution for me by itself. It doesn't build a form for me based on a bean and it's meta data (using appropriate input controls and labels etc). Neither does it solve the maintenance problem related to turning on and off ajax support for "on the fly" validation.
You can't do this kind of thing with facelet compositions alone, can you? There's going to be reflection and logic for choosing appropriate input controls etc...
Cheers,
Steve.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4107951#4107951
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4107951
18 years, 5 months