Can Jetty user bind JNDI by themselves?

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Can Jetty user bind JNDI by themselves?

Lin Ren

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
[hidden email]
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
Reply | Threaded
Open this post in threaded view
|

Re: Can Jetty user bind JNDI by themselves?

Joakim Erdfelt-8
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 / [hidden email]

On Sat, Apr 7, 2018 at 9:41 PM, Lin Ren <[hidden email]> 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
[hidden email]
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
[hidden email]
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
Reply | Threaded
Open this post in threaded view
|

Re: Can Jetty user bind JNDI by themselves?

Lin Ren

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:[hidden email]]
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 / [hidden email]

 

On Sat, Apr 7, 2018 at 9:41 PM, Lin Ren <[hidden email]> 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
[hidden email]
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
[hidden email]
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
Reply | Threaded
Open this post in threaded view
|

Re: Can Jetty user bind JNDI by themselves?

Jan Bartel
Make the subcontext first and then bind the object into it.

Jan

On Tue., 10 Apr. 2018, 13:55 Lin Ren, <[hidden email]> 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:[hidden email]]
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 / [hidden email]

 

On Sat, Apr 7, 2018 at 9:41 PM, Lin Ren <[hidden email]> 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
[hidden email]
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
[hidden email]
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
[hidden email]
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
Reply | Threaded
Open this post in threaded view
|

Re: Can Jetty user bind JNDI by themselves?

Joakim Erdfelt-8
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 / [hidden email]

On Tue, Apr 10, 2018 at 5:16 PM, Jan Bartel <[hidden email]> wrote:
Make the subcontext first and then bind the object into it.

Jan

On Tue., 10 Apr. 2018, 13:55 Lin Ren, <[hidden email]> 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:[hidden email]]
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 / [hidden email]

 

On Sat, Apr 7, 2018 at 9:41 PM, Lin Ren <[hidden email]> 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
[hidden email]
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
[hidden email]
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
[hidden email]
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users