[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 255
  • Last Modified:

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?
0
somebody314
Asked:
somebody314
  • 9
  • 7
1 Solution
 
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
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
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
 
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

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 9
  • 7
Tackle projects and never again get stuck behind a technical roadblock.
Join Now