This is very helpful indeed. I am working on some stuff for documentation.
On 6/19/07, David Blevins <[EMAIL PROTECTED]> wrote:
On Jun 18, 2007, at 11:19 PM, Manu George wrote: > Cool Feature. There was some confusion among users about the JNDI > names. > Hopefully this document will clear the doubts. Yea, this is one of a few essential documents we need. We soooo need a user or two to complain loudly on the information they can't find :) Will be a big help. Truth be told, nearly all the documentation we have came from answers on the lists. -David > Regards > Manu > > On 6/19/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: >> >> Page Edited : OPENEJB<http://cwiki.apache.org/confluence/ >> display/OPENEJB>: JNDI >> Names <http://cwiki.apache.org/confluence/display/OPENEJB/JNDI+Names> >> >> JNDI Names <http://cwiki.apache.org/confluence/display/OPENEJB/JNDI >> +Names>has been edited by David >> Blevins <http://cwiki.apache.org/confluence/display/%7Edblevins> >> (Jun 18, >> 2007). >> >> (View changes)<http://cwiki.apache.org/confluence/pages/ >> diffpagesbyversion.action? >> pageId=33329&originalVersion=1&revisedVersion=2> >> Content: >> What's My Bean's JNDI Name? >> >> The short answer is: >> >> - {deploymentId}/{interfaceClass.simpleName} >> >> And typically, deploymentId will be your bean's ejb-name unless >> you've >> explicitly set it to something else via an openejb-jar.xml or set the >> openejb.deploymentId.format<http://cwiki.apache.org/confluence/ >> display/OPENEJB/Deployment+ID>to something else. >> >> So if you have a bean like such: >> >> <session> >> <ejb-name>Calculator</ejb-name> >> <home>org.acme.CalculatorRemoteHome</home> >> <remote>org.acme.CalculatorRemote</remote> >> <local-home>org.acme.CalculatorLocalHome</local-home> >> <local>org.acme.CalculatorLocal</local> >> <ejb-class>org.acme.CalculatorImpl</ejb-class> >> <business-local>org.acme.CalculatorBusinessLocal</business- >> local> >> <business-local>org.acme.CalculatorBusinessLocalTwo</ >> business-local> >> <business-remote>org.acme.CalculatorBusinessRemote</business- >> remote> >> <business-remote>org.acme.CalculatorBusinessRemoteTwo</ >> business-remote> >> </session> >> >> The following names will be bound into JNDI and accessible via the >> LocalInitialContextFactory<http://cwiki.apache.org/confluence/ >> pages/createpage.action? >> spaceKey=OPENEJB&title=LocalInitialContextFactory&linkCreation=true&f >> romPageId=33329> >> : >> >> - Calculator/CalculatorRemote >> - Calculator/CalculatorLocal >> - Calculator/CalculatorBusinessLocal >> - Calculator/CalculatorBusinessLocalTwo >> - Calculator/CalculatorBusinessRemote >> - Calculator/CalculatorBusinessRemoteTwo >> >> And these would be available via the >> RemoteInitialContextFactory<http://cwiki.apache.org/confluence/ >> pages/createpage.action? >> spaceKey=OPENEJB&title=RemoteInitialContextFactory&linkCreation=true& >> fromPageId=33329> >> >> - Calculator/CalculatorRemote >> - Calculator/CalculatorBusinessRemote >> - Calculator/CalculatorBusinessRemoteTwo >> >> This is the same list minus any interfaces of a local nature as they >> aren't accessible over a network. >> Changing the JNDI name format >> >> The JNDI name format can actually be changed. At current date this >> can be >> done on a server-wide basis, but in the future it will be >> changeable on an >> application and individual bean basis. >> >> To set it for the server, there is a system property called * >> openejb.jndiname.format* which understands the following variables: >> >> - moduleId - typically the file name of the ear or of the ejb >> jar if >> it's not in an ear. >> - ejbType - STATEFUL, STATELESS, BMP_ENTITY, CMP_ENTITY, or >> MESSAGE_DRIVEN >> - ejbClass - ((Class)ejbClass).getName() >> - ejbClass.simpleName - ((Class)ejbClass).getSimpleName()); >> - ejbName - ejb-name as it is in the xml >> - deploymentId - the bean's deployment Id >> - interfaceType - EJB_OBJECT, EJB_LOCAL, BUSINESS_LOCAL, or >> BUSINESS_REMOTE >> - interfaceClass - ((Class)interfce).getName() >> - interfaceClass.simpleName - ((Class)interfce).getSimpleName() >> >> More variables will be added in the future, such as prettier >> varieties of >> ejbType and interfaceType. If there are any you'd like added, feel >> free to >> write the dev list. >> >> With this you can create a layout for the ejbs in global jndi >> namespace >> how ever you like. A couple examples could be: >> >> - {interfaceClass.simpleName} >> - {ejbName}{interfaceClass.simpleName} >> - ejb/{interfaceClass.simpleName} >> - ejb/{interfaceClass} >> - {deploymentId}-{interfaceType} >> - app/{moduleId}/ejb/{ejbName}/{interfaceClass} >> - {deploymentId}.{interfaceClass} >> >> You are responsible for ensuring the names don't conflict. I.e. if >> you >> used something as simple as just "{interfaceClass.simpleName}" as >> your >> format it would only work as long as you didn't reuse the >> interface for any >> other beans in your app or any other app deployed in the server. >> If you used >> "{ejbName}{interfaceClass.simpleName}" you could reuse the >> interface in >> other beans but you'd have to guarantee that the ejbName is not >> already used >> by another bean in a different app. >> >> The default of "{deploymentId}/{interfaceClass.simpleName}" is a >> pretty >> safe bet as deploymentId is guaranteed to be globally unique >> across all apps >> and beans, however the use of simpleName could cause conflicts if >> the bean >> had two interfaces like org.package1.Foo and org.package2.Foo. The >> safest >> bet, though not the default as we wanted something short, is to >> use the >> fully qualified name of the interface "{deploymentId}/ >> {interfaceClass}". >> >> Powered by Atlassian Confluence<http://www.atlassian.com/ >> software/confluence/default.jsp?clicked=footer>(Version: >> 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request<http:// >> jira.atlassian.com/secure/BrowseProject.jspa?id=10470> >> >> Unsubscribe or edit your notifications preferences<http:// >> cwiki.apache.org/confluence/users/viewnotifications.action> >> >>
-- Karan Malhi
