[jboss-user] [EJB 3.0] - Re: Problem calling SLSBs from isolated EARs

ferenc.hechler do-not-reply at jboss.com
Wed Sep 6 03:35:37 EDT 2006


The behaviour for CallByValue is described in

http://wiki.jboss.org/wiki/Wiki.jsp?page=ClassLoadingConfiguration

as:

 Call By Value

   1. caller does ejb.someMethod()
   2. invocation is marshalled - the parameters are turned into ObjectStream? (a byte[])
   3. container with a different classloader unmarshalls - byte[] -> java Objects - including classloading
   4. invocation is passed through ejb container
   5. container does bean.someMethod()
   6. result is marshalled - the return value is turned into ObjectStream?
   7. result is unmarshalled using the caller's classloader - byte[] -> java Object
   8. result is return to the caller


If a call "proxy.f(myType)" is done via Call By Value in step 2. the parameter myType should be serialized.
I modified MyType to debug de-/serialization:

public class MyType implements Serializable {
  |   public String str;
  |   private void writeObject(ObjectOutputStream out) throws IOException
  |   {
  |     // debug
  |     out.defaultWriteObject();
  |   }
  | 	
  |   private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
  |   {
  |     in.defaultReadObject();
  |     // debug
  |   }
  | }


If a call via remote interface is made from a client-java-app the writeObject() and readObject() methods get called.
If a call is made from inside a SLSB (local interface) neither method gets called.
So the step 2. (marshall parameters) is missing.

Did I miss something in the configurations?

conf/jboss-service.xml:
...
  | <mbean code="org.jboss.naming.NamingService" name="jboss:service=Naming" xmbean-dd="resource:xmdesc/NamingService-xmbean.xml">
  |   <attribute name="CallByValue">true</attribute> 
  |   <attribute name="Port">1099</attribute> 
  |   <attribute name="BindAddress">${jboss.bind.address}</attribute> 
  |   <attribute name="RmiPort">1098</attribute> 
  |   <attribute name="RmiBindAddress">${jboss.bind.address}</attribute> 
  |   <depends optional-attribute-name="LookupPool" proxy-type="attribute">jboss.system:service=ThreadPool</depends> 
  | </mbean>
  | ...

deploy/ear-deployer.xml:
<server>
  |   <mbean code="org.jboss.deployment.EARDeployer" name="jboss.j2ee:service=EARDeployer">
  |     <attribute name="Isolated">true</attribute> 
  |     <attribute name="CallByValue">true</attribute> 
  |   </mbean>
  | </server>

EAR1: META-INF/jboss-app.xml:
<jboss-app>
  | 	<loader-repository>mydomain:loader=mycomponent1</loader-repository>
  | </jboss-app>

EAR2: META-INF/jboss-app.xml:
<jboss-app>
  | 	<loader-repository>mydomain:loader=mycomponent2</loader-repository>
  | </jboss-app>



View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3969648#3969648

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3969648



More information about the jboss-user mailing list