| Author | 
		  Message
		 | 
		
		  | cschaul | 
		  
		    
			  
				 Posted: Fri Jan 03, 2003 6:35 am    Post subject: [Solved] RefFSContextFactory NameNotFoundException | 
				     | 
			   
			 
		   | 
		
		
		   Novice
 
 Joined: 08 Nov 2002 Posts: 13
  
  | 
		  
		    
			  
				If anyone can provide some insight into why this isnt working that would be great!  I used JMSAdmin on my WinNT machine to load up the jndi names:
 
def ctx(ehub)
 
chg ctx(ehub)
 
def qcf(QCF) qmgr(TCK6) +
 
    tran(client) chan(TCK6.TO.CLIENTS) +
 
    host(rs111) port(1414)
 
def q(Q) qmgr(TCK6) queue(EHT.TDSIREQUEST)
 
end
 
So i run my program's main method through WSAD, and it gives me the following error:
 
{java.naming.provider.url=file:/c:/errors, java.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory}
 
javax.naming.NameNotFoundException: ehub/QCF
 
	at com.sun.jndi.fscontext.RefFSContext.getObjectFromBindings(RefFSContext.java:400)
 
	at com.sun.jndi.fscontext.RefFSContext.lookupObject(RefFSContext.java:327)
 
	at com.sun.jndi.fscontext.RefFSContext.lookup(RefFSContext.java:146)
 
	at com.sun.jndi.fscontext.FSContext.lookup(FSContext.java:127)
 
	at javax.naming.InitialContext.lookup(InitialContext.java:351)
 
	at com.csx.ehub.getMQMessage2.setConnection(getMQMessage2.java:117)
 
	at com.csx.ehub.getMQMessage2.main(getMQMessage2.java:27)
 
Connection setting error: javax.naming.NameNotFoundException: ehub/QCF | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | leongor | 
		  
		    
			  
				 Posted: Sun Jan 05, 2003 2:18 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Master
 
 Joined: 13 May 2002 Posts: 264 Location: Israel 
  | 
		  
		    
			  
				Are you sure you have .binding in c:\errors path as declared ?
 
Another consideration, if you created it with right values on the firt time or not ?
 
Because JMSAdmin configuration utility appends this file. _________________ Regards.
 
Leonid.
 
 
IBM Certified MQSeries Specialist. | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | cschaul | 
		  
		    
			  
				 Posted: Mon Jan 06, 2003 4:06 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Novice
 
 Joined: 08 Nov 2002 Posts: 13
  
  | 
		  
		    
			  
				Yes, i deleted the c:/errors/ehub directory, then ran the jmsadmin program again to readd that directory with the .bindings file.
 
Is there any other program I need running?  I am running my MQReceiver program out of WSAD.  I had it running just fine with an IBM example using iiop, but would rather use the file system jndi. | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | bower5932 | 
		  
		    
			  
				 Posted: Mon Jan 06, 2003 7:49 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		    Jedi Knight
 
 Joined: 27 Aug 2001 Posts: 3023 Location: Dallas, TX, USA 
  | 
		  
		    
			  
				I thought that you had to put a '/' on the front of the ehub:
 
 
 /ehub/QCF
 
 
Did you try this? | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | cschaul | 
		  
		    
			  
				 Posted: Mon Jan 06, 2003 9:08 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Novice
 
 Joined: 08 Nov 2002 Posts: 13
  
  | 
		  
		    
			  
				yes ive tried that.  Heres the code im using:
 
 
 
public class getMQMessage2 extends Thread implements MessageListener {
 
 
	private static final String INITIAL_CONTEXT_FACTORY_PROP = "initialContextFactory";
 
	private static final String INITIAL_CONTEXT_FACTORY = "java.naming.factory.initial";
 
	private static final String PROVIDER_URL = "file://c:/errors";
 
 
	private QueueConnection connection;
 
	private QueueSession session;
 
	private QueueReceiver receiver;
 
	private InitialContext initContext;
 
	private String initialContextFactory;
 
	private String exceptionMessage;
 
	private String message;
 
	private static getMQMessage2 ivjReceiver = null;
 
 
	public static void main(String argv[]) {
 
		ivjReceiver = new getMQMessage2();
 
		InputStreamReader userInput = new InputStreamReader(System.in);
 
		try {
 
			ivjReceiver.setConnection("/ehub/QCF");
 
			ivjReceiver.setQueue("/ehub/Q");
 
		} catch (java.lang.Throwable ex) {
 
			System.out.println("Connection setting error: " + ex);
 
			System.exit(0);
 
		}
 
		char answer = '\0';
 
		System.out.println("To stop receiver, enter Q and <return>");
 
		while (!((answer == 'q') || (answer == 'Q'))) {
 
			try {
 
				answer = (char) userInput.read();
 
			} catch (IOException iex) {
 
			}
 
 
		}
 
	}
 
 
		public void close() throws JMSException, NamingException, Throwable {
 
 
			try {
 
				System.out.println("Closing connection");
 
				if (connection != null)
 
					connection.stop();
 
				if (receiver != null)
 
					receiver.close();
 
				if (session != null)
 
					session.close();
 
				if (connection != null)
 
					connection.close();
 
				if (initContext != null)
 
					initContext.close();
 
			} catch (Throwable e) {
 
				setExceptionMessage(e);
 
				throw e;
 
			}
 
		}
 
 
		public String getExceptionMessage() {
 
 
			return exceptionMessage;
 
		}
 
 
		public String getMessage() {
 
 
			return message;
 
		}
 
 
		private InitialContext getInitContext() throws NamingException {
 
 
			if (initContext == null) {
 
				Properties properties = new Properties();
 
				properties.put(Context.INITIAL_CONTEXT_FACTORY, getInitialContextFactory());
 
				properties.put(Context.PROVIDER_URL, PROVIDER_URL);
 
//				System.out.println(properties.toString());
 
				initContext = new InitialContext(properties);
 
//				System.out.println(initContext.toString());
 
			}
 
			return initContext;
 
		}
 
 
		private String getInitialContextFactory() {
 
 
			if (initialContextFactory == null) {
 
				initialContextFactory = System.getProperty(INITIAL_CONTEXT_FACTORY_PROP);
 
			}
 
			return initialContextFactory;
 
		}
 
 
		public void onMessage(Message message) {
 
 
			String msgText = null;
 
			try {
 
				msgText = ((TextMessage) message).getText();
 
				System.out.println(msgText);				
 
				if (msgText.substring(0, 3).equals("$*$")) {
 
					System.out.println("A server message was received");
 
				} else
 
					SendRequestToFord2.SendRequest(msgText);
 
			} catch (Throwable e) {
 
				setExceptionMessage(e);
 
				msgText = getExceptionMessage();
 
			}
 
		}
 
 
		public void setConnection(String connectionName)
 
			throws JMSException, NamingException, Throwable {
 
 
			try {
 
				close();
 
				QueueConnectionFactory factory =
 
					(QueueConnectionFactory) getInitContext().lookup(connectionName);
 
				System.out.println("After setting QCF");
 
				connection = factory.createQueueConnection();
 
				System.out.println("After creating Queue Connection");
 
				session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
 
				System.out.println("After creating Queue Session");
 
			} catch (Throwable e) {
 
				setExceptionMessage(e);
 
				e.printStackTrace();
 
				sleep(1000);
 
				throw e;
 
			}
 
		}
 
 
		private void setExceptionMessage(Throwable t) {
 
 
			exceptionMessage = "Exception: " + t.toString();
 
		}
 
 
		public void setQueue(String queueName)
 
			throws JMSException, NamingException, Throwable {
 
 
			try {
 
				if (connection != null)
 
					connection.stop();
 
				if (receiver != null)
 
					receiver.close();
 
				Queue queue = (Queue) getInitContext().lookup(queueName);
 
				receiver = session.createReceiver(queue);
 
				receiver.setMessageListener(this);
 
				connection.start();
 
			} catch (Throwable e) {
 
				setExceptionMessage(e);
 
				throw e;
 
			}
 
		}
 
	} | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | cschaul | 
		  
		    
			  
				 Posted: Mon Jan 06, 2003 10:38 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Novice
 
 Joined: 08 Nov 2002 Posts: 13
  
  | 
		  
		    
			  
				i figured out a solution: 
 
private static final String PROVIDER_URL = "file://c:/errors/ehub";
 
and then having the queueconnectionfactory as "QCF"
 
and the queue name as "Q"
 
 
Any ideas why setting the intial url as c:/errors did not work?  But changing it to c:/errors/ehub did work? | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | JustinM | 
		  
		    
			  
				 Posted: Sat Apr 26, 2003 2:20 am    Post subject:  | 
				     | 
			   
			 
		   | 
		
		
		   Novice
 
 Joined: 10 Apr 2002 Posts: 13
  
  | 
		  
		    
			  
				Hi 
 
 
IBM's documentation in this regard is scant.
 
From http://www7b.software.ibm.com/wsdd/techjournal/0204_minocha/minocha.html:
 
 
'On the other hand, the file system JNDI service has trouble resolving names qualified by subcontexts. For example, name "Sample/JMS/Q1" refers to object Q1 in subcontext JMS of subcontext Sample. Looking up "Sample/JMS/Q1" works in Application Server, but you may have to flatten the name, for example to "JMSQ1," for the file system.'
 
 
Cheers
 
 
Justin | 
			   
			 
		   | 
		
		
		  | Back to top | 
		  
		  	
		   | 
		
		
		    | 
		
		
		  | 
		    
		   |