Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jetty-users] Can Jetty user bind JNDI by themselves?

Like Jan says, make the subcontext first, then the others.

So "a/b/c" means you'll ..

* create subcontext "a"
* create subcontext "b" (from "a")
* create subcontext "c" (from "b")

This is how the jndi layer/api works.

The jetty implementation has a non-standard way to skip the subcontext creation called "deep binding"

In the various javax.naming.Context methods that pertain to Environment (as a Hashtable usually), setup an entry with key "org.eclipse.jetty.jndi.deepBinding" with value of "true".
This feature was implemented in Jetty for the various EE folks to use (such as TomEE, CDI, and OpenEJB).


Joakim Erdfelt / joakim@xxxxxxxxxxx

On Tue, Apr 10, 2018 at 5:16 PM, Jan Bartel <janb@xxxxxxxxxxx> wrote:
Make the subcontext first and then bind the object into it.

Jan

On Tue., 10 Apr. 2018, 13:55 Lin Ren, <lin.ren@xxxxxxxxxx> wrote:

Hi,

 

Thanks a lot for your reply!

 

Then how can I bind a resource to a tree like name, such as “a/b/c”, please? We’re trying merge from Weblogic to Jetty, and seems something different between Weblogic and Jetty on the JNDI name binding…

 

Thanks!

 

Lin

 

From: Joakim Erdfelt [mailto:joakim@xxxxxxxxxxx]
Sent: 2018
49 20:23
To: JETTY user mailing list
Subject: Re: [jetty-users] Can Jetty user bind JNDI by themselves?

 

That error tells you that "/event_channel" doesn't exist.

 

You are trying to bind "/event_channel/${serverName}" before the parent even exists.

 


Joakim Erdfelt / joakim@xxxxxxxxxxx

 

On Sat, Apr 7, 2018 at 9:41 PM, Lin Ren <lin.ren@xxxxxxxxxx> wrote:

Hi,

 

I’m currently trying to bind a JNDI by myself in the Bean code (not in the application), code is like below:

 

   try {

      // Bind receiver under server name

      jndiName = WlngContext.getInstance().getServerName();

final String JNDI_PREFIX = "event_channel/";

      fullJndiName = JNDI_PREFIX + jndiName;

      namingContext = new InitialContext();

      localReceiver = new EventReceiverImpl(this);

      namingContext.bind(fullJndiName, localReceiver);

      eventContext = (EventContext) namingContext.createSubcontext(JNDI_PREFIX);

      namingListener = new EventReceiversListener(this);

      eventContext.addNamingListener("", EventContext.ONELEVEL_SCOPE, namingListener);

      refreshCachedEventReceivers();

    } catch (Exception e) {

      // Cleanup what we've done before throwing exception

      System.out.println("================================" + e.getMessage());

      e.printStackTrace();

      deactivate();

      throw e;

    }

 

And I got an exception said that:

 

javax.naming.NameNotFoundException: event_channel is not bound

         at org.eclipse.jetty.jndi.local.localContextRoot.bind(localContextRoot.java:608)

         at org.eclipse.jetty.jndi.local.localContextRoot.bind(localContextRoot.java:547)

         at javax.naming.InitialContext.bind(InitialContext.java:425)

         at com.bea.wlcp.wlng.event_channel.rmi.EventBroadcasterRmi.activate(EventBroadcasterRmi.java:54)

 

My question here is, can we bind JNDI by ourselves? If yes, how can we do for that?

 

Thanks!

 

Lin

 


_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users

 

_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users


Back to the top