EJB SessionBean 之间调用问题?
容器:jboss4.03
EJBModule1.jar
ChangeEJB.class
ChangeEJBBean.class
ChangeEJBHome.class
ChangeEJBLocal.class
ChangeEJBLocalHome.class
EJBModule2.jar
TestEJB.class
TestEJBBean.class
TestEJBHome.class
TestEJBLocal.class
TestEJBLocalHome.class
其中TestEJBBean有个方法调用了ChangeBean方法,如:
public String getNoInitChangeEJBName() {
InitialContext context = null;
try {
context = new InitialContext();
ChangeEJBLocalHome changeHome = (ChangeEJBLocalHome) context.lookup(
"java:comp/env/ejb/ChangeEJB");
ChangeEJBLocal changeEJB = changeHome.create();
return changeEJB.getName();
}
catch (NamingException ex) {
ex.printStackTrace();
}
catch (CreateException ex) {
ex.printStackTrace();
}
return "change EJB is null";
}
第一次调用是成功的,没有问题,但是当EJBModule1.jar重新热部署之后,调用就会出错,不知道为什么?
如果在EJBModule2.jar中包含ChangeEJB的接口,就是加下面 两个文件:
ChangeEJBLocal.class
ChangeEJBLocalHome.class
EJBModule1.jar重新热部署之后,调用也可以成功,但是,如果ChangeEJB中有个方法返回自定义的序列化的类时(不管EJBModule2是否已调用这个方法),EJBModule1.jar重新热部署时就会出错,不知道为什么?
如在ChangeBean.java中加入:
public Mod1DTO getMethod1() {
Mod1DTO dto = new Mod1DTO();
dto.setId("1111111111");
dto.setNumber(123456);
return dto;
}
Mod1DTo.java:
public class Mod1DTO
implements java.io.Serializable {
private String id;
private int number;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (! (obj instanceof Mod1DTO)) {
return false;
}
Mod1DTO that = (Mod1DTO) obj;
if (! (that.id == null ? this.id == null : that.id.equals(this.id))) {
return false;
}
if (that.number != this.number) {
return false;
}
return true;
}
public int hashCode() {
int result = 17;
result = 37 * result + this.id.hashCode();
result = 37 * result + (int)this.number;
return result;
}
public String toString() {
StringBuffer returnStringBuffer = new StringBuffer(288);
returnStringBuffer.append("[");
returnStringBuffer.append("id:").append(id);
returnStringBuffer.append("number:").append(number);
returnStringBuffer.append("]");
return returnStringBuffer.toString();
}
}
忘各位知情者能解释一二,非常感谢!