3 Replies Latest reply on Jul 17, 2007 8:53 AM by Denis Zhurihin

    RMI argument in EJB method

    Denis Zhurihin Newbie

      I'm beginner in j2EE, but i suppose that all I do is correct :)

      JBoss 4.0.5 throws exception for RMI argument in my EJB method during deploying of my application.

      12:59:41,260 WARN [verifier] EJB spec violation:
      Bean : AccountSessionEJB
      Method : public abstract boolean addAccount(Account) throws RemoteException
      Section: 7.11.5
      Warning: The method arguments in the remote interface must be of valid types for RMI/IIOP.
      


      RMI Interface looks like:
      public interface AccountSession extends EJBObject {
       public boolean addAccount(Account ac) throws RemoteException;
      }
      


      defining ot type:
      import java.rmi.Remote;
      public class Account implements Remote {
      }
      



        • 1. Re: RMI argument in EJB method
          Dimitris Andreadis Master

          AFAIR, you shouldn't be passing arround Remote objects.

          • 2. Re: RMI argument in EJB method
            Denis Zhurihin Newbie

            Big thanks.

            Could you clarify, why argument type Account is not RMI/IIOP? I've supposed that value has to be passed by reference, but it not so ...

            • 3. Re: RMI argument in EJB method
              Denis Zhurihin Newbie

              Lets see ejb 2.1 specification section 7.11.5


              The methods defined in this interface must follow the rules for RMI/IIOP. This means that their argument and return values must be of valid types for RMI/IIOP, and their throws clauses must include the java.rmi.RemoteException


              Sun says:

              20. The EJB technology Specification says that the return value and argument types for finder, create and business methods must be legal types for RMI-IIOP. What exactly is a legal type for RMI-IIOP?
              A legal type for RMI-IIOP is defined in the Java Language Mapping to OMG IDL Specification. Refer to the "RMI/IDL Subset of Java" platform section of this document for full details. It's not a great deal different from that of RMI although there are a few exceptions, most notably a "Value Type". A type that will be passed by value may not implement java.rmi.Remote , as this could cause confusion between value types and Remote Interfaces.


              I don't understand why i have problems with RMI arguments.....
              There is no limitations for this according to specifications.