ALL,我是Java World的新手,在阅读了名为Ejb3.0 in Action的好书之后,我对Session Bean有了疑问。会话bean的EJB客户端是什么?假设我们有一些代码如下所示。
//EJB definition
import javax.ejb.Remote;
@Remote
public interface PlaceOrder {
..
void addItem(Long itemId);
Long confirmOrder();
..
}
@Stateful
public class PlaceOrderBean implements PlaceOrder {
private List<Long> items;
public PlaceOrderBean () {
items = new ArrayList<Long>();
}
public void addItem(Long itemId) {
items.add(itemId);
}
@Remove
public Long confirmOrder() {
Order order = new Order();
...
return order.getOrderId();
}
}
//Client
import javax.ejb.EJB;
public class PlaceOrderTestClient {
@EJB
private static PlaceOrder placeOrder1;
@EJB
private static PlaceOrder placeOrder2;
public static void main(String [] args) throws Exception {
System.out.println("Exercising PlaceOrder EJB...");
placeOrder1.addItem(new Long(200));
placeOrder1.addItem(new Long(201));
Long orderId = placeOrder1.confirmOrder();
System.out.println("Order confirmation number: " + orderId);
}
}
更新
EJB客户端是指placeOrder1
和placeOrder2
还是主应用程序?这意味着多个EJB客户端吗?另一个问题是如果它在Servlet
而不是主要方法?感谢。
答案 0 :(得分:3)
EJBClient
是一个本地程序,可以调用和操作Remote
Bean
在这种情况下,无论触发器是什么触发器PlaceOrderBean
都是客户端
InCase of Servlet,如果Servlet
调用EJB
,它在技术上是客户端,但通常称为Facade
答案 1 :(得分:0)
EJB Client是执行服务器端实现的功能/行为的本地程序。
此处 PlaceOrderTestClient 是EJB客户端。