大家好,我是Java世界EJB的新手。在阅读了一本名为Ejb3.0 in Action的好书后,我对Session Bean有一个问题。什么是Session 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
中而不是主方法中会怎样?谢谢。