那是因为你在客户端没有启动事务。
我想你应该设置事务是Required的级别吧客户端调用setEname的时候没有带有事务,所以服务器真正调用EJB的方法的时候
就会启动一个事务,然后在方法退出之后进行提交(如果有异常则会进行回滚)所以你中断了客户端,其实两次的执行都已经是启动并提交了两次事务了
我想你应该设置事务是Required的级别吧客户端调用setEname的时候没有带有事务,所以服务器真正调用EJB的方法的时候
就会启动一个事务,然后在方法退出之后进行提交(如果有异常则会进行回滚)所以你中断了客户端,其实两次的执行都已经是启动并提交了两次事务了
多谢!
每个setEname都会经过启动和提交,这个是Required级别的做法Required是在你的EJB发布文件中指定的,ejb-jar.xml
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>MyServer</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>就是这里了
</container-transaction>
</assembly-descriptor>
你如果要实现你的要求,你可以在Client lookup远程的UserTransation对象
具体我没有用过,可以看看资料。