Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

...

Usable with JNDI name formats ending in the full class name of the interface such as:

  • {interfaceClass}
Code Block
public <T> T lookup(Class<T> type) {
    return (T) lookup(type.getName());
}

...

Or with a common prefix or with a common prefix supplied in constructor such as:

  • {moduleId}/{interfaceClass}
  • ejb/{moduleId}/{interfaceClass}
Code Block
MyLocator locator = new MyLocator("ejb/superbiz");
Widget widget = locator.lookup(Widget.class);   
Store store = locator.lookup(Store.class);

...

Usable with JNDI name formats including a varying prefix such as ejbName or deploymentID
and ending in the full class name of the interface

  • {ejbName}/{interfaceClass}
  • {deploymentId}/{interfaceClass}
Code Block
public <T> T lookup(String prefix, Class<T> type) {
    return (T) lookup(prefix + "/" + type.getName());
}

...

Or with a common prefix or with a common prefix supplied in constructor such as:

  • {moduleId}/{ejbName}/{interfaceClass}
  • ejb/{moduleId}/{deploymentId}/{interfaceClass}
Code Block
MyLocator locator = new MyLocator("accountingApp");
Widget widget = locator.lookup("RedWidgetBean", Widget.class);   
Store store = locator.lookup("StoreBean", Store.class);

...

For variation, the interface class is the prefix and the ejb class is the
suffix. This is neat as the the prefix (the interface class name) becomes
a jndi context with one binding in it for each implementing ejb class.

Works with:

  • {interfaceClass}/{ejbClass}
Code Block
public <T> T lookup(Class<T> type, Class ejbClass) {
    return (T) lookup(type.getName() + "/" + ejbClass.getName());
}

...

Or with a common prefix or with a common prefix supplied in constructor such as:

  • {moduleId}/{interfaceClass}/{ejbClass}
  • ejb/{moduleId}/{interfaceClass}/{ejbClass}
Code Block
MyLocator locator = new MyLocator("ejb/purchasingApp");
Widget widget = locator.lookup(Widget.class, RedWidgetBean.class);
Store store = locator.lookup(Store.class, StoreBean.class);

...

Similar to the above example but using the simple name of the classes resulting
in a JNDI tree that's a bit more human readable.

  • {ejbClass.simpleName}/{interfaceClass.simpleName}
Code Block
public <T> T lookup(Class ejbClass, Class<T> type) {
    return (T) lookup(ejbClass.getSimpleName() + "" + type.getSimpleName());
}

...

Or with a common prefix or with a common prefix supplied in constructor such as:

  • {moduleId}/{ejbClass.simpleName}/{interfaceClass.simpleName}
  • ejb/{moduleId}/{ejbClass.simpleName}/{interfaceClass.simpleName}
Code Block
MyLocator locator = new MyLocator("shippingApp");
Widget widget = locator.lookup(GreenWidgetBean.class, Widget.class);   
Store store = locator.lookup(SuperStoreBean.class, Store.class);