servlet和EJB中的传址和传值
在一个EJB应用中使用servlet调用EJB完成数据库操作,在调用EJB时向他传递了一个自定义的对象,而设计中是在EJB完成操作后将直接修改传入的那个对象的内容,而EJB方法返回时servlet得到的将是修改后的结果。
而现在的情况是刚开始的时候使用的jboss2.2_tomcat3.2,后来使用jboss2.4_tomcat4.0,在新版本的情况下发现以上方法不能用了,经debug发现在jboss2.2_tomcat3.2下在servlet和EJB间传递的是同一个对象,而在jboss2.4_tomcat4.0不是一个,但是内容相同,也就是在前者时是传地址,而后者是传值,所以导致后者不能正常工作。一个修改的方法就是将需要传递的那个类打包到EJB的jar包中并删除web应用的war包的WEB-INF/classes下的内容,这样也变成了传地址了,非常的奇怪。有没有人知道在servlet和EJB交互中这种应用规范情况下到底是传地址还是传值呢?个人认为由于EJB是分布式应用,因此应该是使用传值方式,在EJB的方法中返回一个对象,servlet端根据返回值再修改传入的对象的内容。