EJB @Local注釋和@Remote注釋不能一起使用 :Remote和Local方式寫在同一個類上,在部署到jboss4.0可以,jboss5.0報錯
在4.X版本上就可以同時寫在一個類上,代碼如下:
public interface UserManager {public void save(UserTest user);}@Stateless@Remote@Localpublic class UserManagerBean implements UserManager, UserManagerLocal{public void save(UserTest user) {System.out.println("User[username=" + user.getUsername() +"]已儲存");user.setId(1);}}
5.0版本就不行,報錯如下:
Caused by: java.io.InvalidClassException: org.jboss.ejb3.remoting.IsLocalInterceptor; local class incompatible:stream classdesc serialVersionUID = -3758782076801249473, local classserialVersionUID = 337700910587744646
DEPLOYMENTS IN ERROR:
Deployment"vfsfile:/E:/javaprogram/jboss-5.0.1.GA/server/default/deploy/ejb_03.jar/"is in error due to the following reason(s):javax.ejb.EJBException: Cannot designateboth javax.ejb.Local and javax.ejb.Remote annotations without 'value' attributeon UserManagerBean.
[EJBTHREE-1025]
問題具體描述及解決:
http://topic.csdn.net/u/20090202/20/b888766f-5fd4-40a3-b886-bd1e04c6f758.html
jboss4.x版本可以一個介面定義為remote和local兩種方式,jboss5.0版本的則需要定義兩個介面,並明確寫明(當然具體實現的方式有多種):代碼如下:
public interface UserManager {public void save(UserTest user);}public interface UserManagerLocal {public void save(UserTest user);}@Stateless@Remote({UserManager.class})@Local({UserManagerLocal.class})public class UserManagerBean implements UserManager, UserManagerLocal{public void save(UserTest user) {System.out.println("User[username=" + user.getUsername() +"]已儲存");user.setId(1);}}