reffec.com

Local Interfaces in Java Receive Data Matrix barcode in Java Local Interfaces

Local Interfaces using none tomake none with asp.net web,windows application interleaved 2 of 5 Up to this point none for none all our examples have used the session bean remote interface, as the clients have run in their own JVM outside the EJB container. Behind the scenes, a remote interface uses the RMI-IIOP protocol for network operations. This protocol stipulates that method arguments are passed by value and not by reference.

Passing by value means that an object being passed from the client to the remote bean, or vice versa, is first serialized then passed over the network then deserialized. This all. [ 41 ]. Session Beans has an impact in terms of performance. Even if our client is a session bean invoking another in the same container there is a performance overhead if we use a remote interface because of the serialization and deserialization taking place. For this reason EJB technology provides a local interface option for session beans.

Method arguments are passed by reference and not by value so improving performance. To illustrate all this we shall create a stateless session bean which will be invoked by and run in the same EJB container, as our original TimeServiceBean. This invoked bean will just return the string Have a Nice Day.

First we define the beans interface, NiceDayService:. package ejb30.se none for none ssion; import javax.ejb.

Local; @Local public interface NiceDayService { public String getMessage(); }. Note that we hav e prefixed the interface definition with the @Local annotation. This indicates to the EJB container that this bean may only be invoked by a local client running in the same container. The interface consists of just one method definition, getMessage().

Next we look at the bean implementation, NiceDayServiceBean:. package ejb30.se none for none ssion; import java.util.

*; import javax.ejb.Stateless; @Stateless public class NiceDayServiceBean implements NiceDayService { public String getMessage() { return " - Have a Nice Day"; } }.

This is all stra ightforward. We note that the session bean is stateless and the getMessage() method returns the string - Have a Nice Day. Now let"s look as to how we might modify the TimeServiceBean to invoke NiceDayService.

The TimeServiceBean will append the NiceDayService message to the current time. Here is the modified code for TimeServiceBean:. package ejb30.se none for none ssion; import java.util.

*; import javax.ejb.Stateless; import javax.

ejb.EJB; @Stateless [ 42 ]. 2 public class TimeServiceBean implements TimeService { private @EJB NiceDayService niceDay; public String getTime() { Formatter fmt = new Formatter(); Calendar cal = Calendar.getInstance(); fmt.format("%tr", cal); return fmt.

toString() + niceDay.getMessage(); } }. We use the @EJB none for none annotation to instruct the container to lookup the NiceDayService bean and inject a bean reference into the niceDay field. Recall this is an example of field injection. We can then invoke the niceDay.

getMessage() method. An alternative to field injection is setter injection. In this case a method rather than a field is annotated.

The following version of TimeServiceBean uses setter injection:. @Stateless publi c class TimeServiceBean implements TimeService { private NiceDayService niceDay; public String getTime() { Formatter fmt = new Formatter(); Calendar cal = Calendar.getInstance(); fmt.format("%tr", cal); return fmt.

toString() + niceDay.getMessage(); } @EJB public void setNiceDay(NiceDayService niceDay) { this.niceDay = niceDay; } }.

By annotating th none none e setNiceDay() method with the @EJB annotation, we are instructing the container to lookup the NiceDayService bean, then invoke the setNiceDay() method passing the NiceDayService bean reference as a parameter to setNiceDay().. [ 43 ]. Session Beans Summary. We have covered none none a lot of ground in this chapter. We have seen that session beans are an EJB technology for encapsulating business logic. Session beans can be either stateless or stateful.

We had our first examples of using metadata annotations in our beans. We looked at packaging and deploying session beans using Ant scripts. We showed how a client running outside an EJB container would invoke a session bean using JNDI.

We also showed how a client running in an Application Client Container can use dependency injection instead of JNDI to invoke a session bean. We described the lifecycle for both stateless and stateful session beans and looked at examples of session bean lifecycle callback methods..

[ 44 ].
Copyright © reffec.com . All rights reserved.