where is jndi.properties for my ejb client applcication?

I have deployed a simple ejb on the Sun Application server on my computer where it is located on :localhost:8080

now i want to write a client application to test and use that ejb but when i cann InitialContext's lookup method it throws a "NoInitialContext" exception and says that : need to specify class name in environment or system property or as applet parameter or application resource file : java.naming.factory.initial

I searched all of my hard drive and could not find a "jndi.properties" which i think is the solution for my problem .

What should i do now for running my client application?
somebody314Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

aviadbdCommented:

Well, you could always just add it up to the Hashtable passed to the InitialContext class on construction.

Besides that, you could read this, about application resource files: http://java.sun.com/j2se/1.4.2/docs/api/javax/naming/Context.html#RESOURCEFILES

AviadBD.
0
somebody314Author Commented:
but wgat should i add to the hashtable ? which items?
0
aviadbdCommented:

"java.naming.factory.initial", for example. :)

For example, if you're using WebLogic's container, use

env.put("java.naming.factory.initial", "weblogic.jndi.WLInitialContextFactory");

and then pass "env" to the InitialContext's ctor.

AviadBD.
0
Cloud Class® Course: SQL Server Core 2016

This course will introduce you to SQL Server Core 2016, as well as teach you about SSMS, data tools, installation, server configuration, using Management Studio, and writing and executing queries.

aviadbdCommented:

BTW, "java.naming.factory.initial" is also set as a static value of interface Context, so you could also do:

env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");

AviadBd.
0
somebody314Author Commented:
But how can it find the JNDI server on the application server? i have not set the IP of the server and it's port in the client program , so how can it find where the application server is placed?
0
aviadbdCommented:

Its not where its placed, its the factory which creates it. It is contained in the jar file supplied with the application server.. You should have documentation with the application server.

PS, if you're using Sun's application server, its already configured to it defaultly.

Aviad.
0
somebody314Author Commented:
I have deployed my ejb and when i run this :
Context ic=new InitialContext();
ic.lookup("java:comp/env/ejb/Hello");

or any other string in lookup function a NoInitialContext exception is thrown . even when i construct the intialcontext using Syste.getProperties()

Now what should i do?
I think i have to set some of these variables in a Hashtable and pass it to the initial context's constructor but i do not know the values i shoudl use .
-> java.naming.factory.initial
-> java.naming.provider.url
0
aviadbdCommented:

What is your application server? Where do you deploy the EJBs? I'll help you look for the values.

Aviad.
0
somebody314Author Commented:
the problem is solved :
I  should place these two items in the environment hashtable or put them in a jndi.properties file and place it in the root directory of my project :
java.naming.provider.url=iiop://localhost:3700
java.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory
0
aviadbdCommented:

Well, good that its solved.

Thats actually what I asked you - Where are the EJBs deployed. But by your resolution, it seems that you use a CORBA Context?

Aviad
0
somebody314Author Commented:
I think si , How can i use JNDI instead?
0
aviadbdCommented:

Well, there are multiple ways... JNDI can be used to reach a Directory services (Like Active Directory or iPlanet) or even a file system like NTFS, given the right drivers.

Aviad.
0
somebody314Author Commented:
Ok , but how can i use it ? I have installed Sun Application Server completely so what should i put as a value for initial factory and provider url in the hashtable passed to the initialcontext?
0
aviadbdCommented:

The Sun Application Server works with IIOP which is basically ORBs (CORBA). So, you would use

// Set initial context and URL properties
Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY,
  "com.sun.jndi.cosnaming.CNCtxFactory");
env.put(Context.PROVIDER_URL, "iiop://host_name:9010");

And then create the context:

Context ctx = new InitialContext(env);

Ofcourse, you could put these properties in a properties file.

Aviad.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
aviadbdCommented:
0
somebody314Author Commented:
thanks very much.
as i wrote in a previous comment in 10/26/2004 11:43PM PDT
the problem is solved.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Java EE

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.