Java 什么是EJB客户端?
总之,我是Java世界EJB的新手,在读了一本好书《会话Bean》之后,我有一个关于会话Bean的问题。会话bean的EJB客户端是什么?假设我们有如下代码Java 什么是EJB客户端?,java,ejb,ejb-3.0,Java,Ejb,Ejb 3.0,总之,我是Java世界EJB的新手,在读了一本好书《会话Bean》之后,我有一个关于会话Bean的问题。会话bean的EJB客户端是什么?假设我们有如下代码 //EJB definition import javax.ejb.Remote; @Remote public interface PlaceOrder { .. void addItem(Long itemId); Long confirmOrder(); .. } @Stateful public class Pl
//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定义
导入javax.ejb.Remote;
@遥远的
公共界面订单{
..
无效附加项(长项目ID);
长确认人();
..
}
@有状态
公共类PlaceOrderBean实现PlaceOrder{
私人清单项目;
PublicPlaceOrderBean(){
items=newarraylist();
}
公共无效附加项(长项目ID){
items.add(itemId);
}
@除去
公开长期确认人(){
订单=新订单();
...
returnorder.getOrderId();
}
}
//客户
导入javax.ejb.ejb;
公共类PlaceOrderTestClient{
@EJB
私有静态PlaceOrder PlaceOrder 1;
@EJB
私有静态PlaceOrder PlaceOrder 2;
公共静态void main(字符串[]args)引发异常{
System.out.println(“执行PlaceOrder EJB…”);
placeOrder1.addItem(新长(200));
placeOrder1.addItem(newlong(201));
Long orderId=placeOrder1.confirmOrder();
System.out.println(“订单确认号:+orderId”);
}
}
已更新
EJB客户端是指
placeOrder1
和placeOrder2
还是主应用程序?这是否意味着有多个EJB客户端?另一个问题是,如果它在Servlet
中而不是在main方法中,该怎么办?谢谢。EJBClient
是一个本地程序,可以调用和操作Remote
Bean
这里,在您的场景中,触发PlaceOrderBean
的是客户端
对于Servlet,如果
Servlet
调用EJB
,从技术上讲,它是客户端,但通常称为FacadeEJB客户端是本地程序,用于执行在服务器端实现的功能/行为
此处PlaceOrderTestClient是EJB客户端。Hi,@TechExchange,请再次查看更新的内容,此场景中有多少客户端?谢谢。没有placeOrder1
和2
是PlaceOrderBean的实例/参考。使用它的代码成为客户原谅我的理解力差,我不知道你的意思。单词using
意味着调用EJB的方法,而不仅仅是声明EJB类型的引用?因此,在我看来,在这个示例中只有一个EJB客户机,尽管我声明了两个EJB类型的引用。如果我错了,请纠正我。谢谢。我的意思是唯一一个EJB客户端是placeOrder1
的引用,而不是placeOrder2
。因为我没有使用placeOrder2
,谢谢。我自己也一直在想这个问题。这个答案使它更清楚了一点,但不是很清楚。“触发PlaceOrderBean的是客户端”中的“触发器”是什么意思。触发bean的是PlaceOrderTestClient
类吗?请更正,不能直接在main方法中调用非静态变量placeOrder1。不能从静态上下文引用非静态变量或方法。@Visruth CV,谢谢。好了。