![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
||||||||||||
![]() |
![]() |
![]() |
Index | News | FAQ | Download | Lists | Issues![]() ![]() |
||||||||||||||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
||||||||||||
![]() |
OverviewGeneralConfigurationServersIntegrationsCommunityFeeds
|
The functionality of the openejb.jndiname.format Lookup examplesTo get the creative juices flowing here are a few examples of lookup methods you could create for your service locator, the jndi name formats that would work with those lookups, and examples of client code using the service locator. For simplicity, we'll assume all the lookup examples start with this basic class that has a built-in lookup allowing for a common prefix to be optionally applied to the beginning of all lookup strings. MyLocator.java public class MyLocator { private final Context context; public MyLocator() throws NamingException { this(null); } public MyLocator(String commonPrefix) throws NamingException { Properties properties = new Properties(); properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory"); properties.put(Context.PROVIDER_URL, "ejbd://localhost:4201/"); this.context = new InitialContext(properties); } public Object lookup(String name) { try { if (commonPrefix != null) name = commonPrefix + "/" +name; return context.lookup(name); } catch (NamingException e) { throw new IllegalArgumentException(e); } } } Just the interfaceUsable with JNDI name formats ending in the full class name of the interface such as:
public <T> T lookup(Class<T> type) { return (T) lookup(type.getName()); } MyLocator locator = new MyLocator();
Widget widget = locator.lookup(Widget.class);
Or with a common prefix or with a common prefix supplied in constructor such as:
MyLocator locator = new MyLocator("ejb/superbiz"); Widget widget = locator.lookup(Widget.class); Store store = locator.lookup(Store.class); Interface class and a prefixUsable with JNDI name formats including a varying prefix such as ejbName or deploymentID
public <T> T lookup(String prefix, Class<T> type) { return (T) lookup(prefix + "/" + type.getName()); } MyLocator locator = new MyLocator(); Widget redWidget = locator.lookup("RedWidgetBean", Widget.class); Widget blueWidget = locator.lookup("BlueWidgetBean", Widget.class); Or with a common prefix or with a common prefix supplied in constructor such as:
MyLocator locator = new MyLocator("accountingApp"); Widget widget = locator.lookup("RedWidgetBean", Widget.class); Store store = locator.lookup("StoreBean", Store.class); Interface class and ejb classUsable with JNDI name formats comprised of the interfaceClass and ejbClass For variation, the interface class is the prefix and the ejb class is the Works with:
public <T> T lookup(Class<T> type, Class ejbClass) { return (T) lookup(type.getName() + "/" + ejbClass.getName()); } MyLocator locator = new MyLocator();
Widget widget = locator.lookup(Widget.class, BlueWidgetBean.class);
Or with a common prefix or with a common prefix supplied in constructor such as:
MyLocator locator = new MyLocator("ejb/purchasingApp"); Widget widget = locator.lookup(Widget.class, RedWidgetBean.class); Store store = locator.lookup(Store.class, StoreBean.class); Interface class and ejb class with simple namesSimilar to the above example but using the simple name of the classes resulting
public <T> T lookup(Class ejbClass, Class<T> type) { return (T) lookup(ejbClass.getSimpleName() + "" + type.getSimpleName()); } MyLocator locator = new MyLocator();
Widget widget = locator.lookup(RedWidgetBean.class, Widget.class);
Or with a common prefix or with a common prefix supplied in constructor such as:
MyLocator locator = new MyLocator("shippingApp"); Widget widget = locator.lookup(GreenWidgetBean.class, Widget.class); Store store = locator.lookup(SuperStoreBean.class, Store.class); |
|||||||||||||||
![]() |
![]() |
||||||||||||||||
![]() |
![]() |
||||||||||||||||
![]() |
![]() |
||||||||||||||||
![]()
Powered by Atlassian Confluence.
|