OpenEJB

Monday May 04, 2009

Mapped name with OpenEJB

Recently we added the facility to use the mappedName attribute from a @Stateful, @Stateless or @Singleton annotation to add a global JNDI name for your bean. This is pretty simple to use, simply add the mapped name to your bean like so:

@Stateless(mappedName="MyCalculatorBean")
public class CalculatorImpl implements CalculatorRemote, CalculatorLocal {

	public int sum(int add1, int add2) {
		return add1+add2;
	}

	public int multiply(int mul1, int mul2) {
		return mul1*mul2;
	}
}
When this is deployed you will see:
Apache OpenEJB 3.1.1-SNAPSHOT    build: 20090425-09:05
http://openejb.apache.org/
INFO - openejb.home = /home/jgallimore/Sync/OpenEJB/src/openejb3/examples/simple-stateless
INFO - openejb.base = /home/jgallimore/Sync/OpenEJB/src/openejb3/examples/simple-stateless
INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
INFO - Found EjbModule in classpath: /home/jgallimore/Sync/OpenEJB/src/openejb3/examples/simple-stateless/target/classes
INFO - Beginning load: /home/jgallimore/Sync/OpenEJB/src/openejb3/examples/simple-stateless/target/classes
INFO - Configuring enterprise application: classpath.ear
INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
INFO - Auto-creating a container for bean CalculatorImpl: Container(type=STATELESS, id=Default Stateless Container)
INFO - Enterprise application "classpath.ear" loaded.
INFO - Assembling app: classpath.ear
INFO - Jndi(name=CalculatorImplLocal) --> Ejb(deployment-id=CalculatorImpl)
INFO - Jndi(name=MyCalculatorBean) --> Ejb(deployment-id=CalculatorImpl)
INFO - Jndi(name=MyCalculatorBean) --> Ejb(deployment-id=CalculatorImpl)
INFO - Created Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)
INFO - Deployed Application(path=classpath.ear)
You will now be able to lookup your bean by doing:
Properties properties = new Properties();
properties.setProperty (Context.INITIAL_CONTEXT_FACTORY,"org.apache.openejb.client.LocalInitialContextFactory");

InitialContext initialContext = new InitialContext(properties);
Calculator calc = initialContext.lookup("MyCalculatorBean");
You might also be aware that with OpenEJB you can also specify how global JNDI names are assigned by the container (when you haven't specified a mappedName). You do this by setting a property with a template: For example, setting the following system property (for an embedded OpenEJB instance in a unit test)
System.setProperty("openejb.jndiname.format", "{deploymentId}/{interfaceClass}");
Would result in these JNDI names:
INFO - Jndi(name=CalculatorImpl/org.superbiz.calculator.CalculatorLocal) --> Ejb(deployment-id=CalculatorImpl)
INFO - Jndi(name=CalculatorImpl/org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImpl)
You can see more details on these templates and the variables available at: http://openejb.apache.org/3.0/jndi-names.html

We can also use this template mechanism with the @Stateful/@Stateless/@Singleton mappedName attribute. So this code:

@Stateless(mappedName="{deploymentId}/{interfaceClass}")
public class CalculatorImpl implements CalculatorRemote, CalculatorLocal {

	public int sum(int add1, int add2) {
		return add1+add2;
	}

	public int multiply(int mul1, int mul2) {
		return mul1*mul2;
	}

}
would yield the following JNDI names being set up:
INFO - Enterprise application "classpath.ear" loaded.
INFO - Assembling app: classpath.ear
INFO - Jndi(name=CalculatorImplLocal) --> Ejb(deployment-id=CalculatorImpl)
INFO - Jndi(name=CalculatorImpl/org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImpl)
INFO - Jndi(name=CalculatorImpl/org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImpl)

Comments:

Thank you so much for accepting my post comment https://robloxrobuxgeneratorfree.com here,i am here to share robox game Junction with everyone.

Posted by shiva on July 18, 2019 at 01:24 AM EDT #

great work AMAZING JOB

Posted by erectile dysfunction on July 19, 2019 at 04:24 PM EDT #

You're the best especially for the high caliber and results-arranged assistance. I won't reconsider to underwrite your blog entry to anyone who needs and needs support about this region. https://www.hairworldwide.com/hair-replacement/ https://hairworldwide.com/ https://www.healwave.com/

Posted by hair replacement in pune on October 14, 2019 at 07:10 AM EDT #

Post a Comment:
Comments are closed for this entry.

Calendar

Search

Hot Blogs (today's hits)

Tag Cloud

Categories

Feeds

Links

Navigation