[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

This widget could not be displayed.

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 widget could not be displayed.

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

This widget could not be displayed.

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
Atlassian Summit 2018

Meet the community IRL

Atlassian Summit is an excellent opportunity for in-person support, training, and networking.

Learn more
Community showcase
Published Jul 25, 2018 in Marketplace Apps

Jira Cloud and Bitbucket Cloud Integration with Microsoft Teams

One of the newest products in the Microsoft family - Microsoft Teams,  is a chat-based hub for teamwork that integrates all the people, content, and tools your team needs to be more engaged and ...

733 views 0 3
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