[Closed] Name java:comp is not bound in this Context (JNDI)

Hi,

I get the following exception: Name java:comp is not bound in this Context while trying to get the JNDI context from a plugin:

InitialContext ic = new InitialContext();
Context env = (Context) ic.lookup("java:comp/env");

Any idea?

Thanks!

Pablo.

4 answers

1 accepted

I found the solution. Binding the missing names resolves the problem.

Hi Pablo, What do you mean by binding the missing names? Can you give an example? Thanks

This is very confusing...

According to the AMPS-737 issue jndi is supported for datasources since the AMPS 4.1 version:

I'm using AMPS:

<amps.version>4.2.9</amps.version>

Following the AMPS-737, there is an Atlassian's example on Bitbucket to configure a datasource from a plugin:

As expected, the jndi string is:

<jndi-datasource>
        <jndi-name>java:comp/env/jdbc/JiraDS</jndi-name>
</jndi-datasource>

It means the name java:com/env is already binded.

However, fron a plugin, the javaURLContextFactory class must be added as a dependency (it is not exported by the JIRA system plugin):

<dependency>
			<groupId>directory-naming</groupId>
			<artifactId>naming-java</artifactId>
			<version>0.8</version>
		</dependency>

in order to use the InitialContext class.

As the factory is provided by the plugin rather by the application contanier (Tomcat/Catalina), it might not be properly initialized as accordingly to the Apache's documentation, it requires some environment configuration:

This factory MUST be associated with the "java" URL prefix, which can be done by setting an environment variable named Context.URL_PKG_PREFIXES with its value including the org.apache.catalina.util.naming package name.

It is not the case. By debugging I saw that is properly itinialized and the InitialContext properties are:

java.naming.factory.initial=org.apache.naming.java.javaURLContextFactory

and

java.naming.factory.url.pkgs=org.apache.catalina.util.naming

But when I'm try to get the java.com/env context (which is the same used by the JNDI datasources supported from the 4.1 version!), it is not bound:

Context env = (Context) ic.lookup("java:comp/env");

How is it possible?

Thanks!

Pablo

Hi zezeto, thanks for the link. I read all those links some days ago but I was unable to find any solution there as I do not want use JNDI to get datasources. I want to use JNDI to bind a string (object) in order to configure some 3rd party code expecting be configured through JNDI. Thanks.

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Published May 30, 2018 in Marketplace Apps

Three tips for boosting your board's efficiency with Story Maps

Trello is one of the most effective tools for driving your sprints. It's customizable for every Agile team and product owners and Scrum masters (SM) love it. However, Agile teams often struggle with:...

818 views 2 9
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you