Hey Eyal,
Any chance some the create parameter's are
primitive types (int, float, long etc...).
If so be aware that reflection converts all
primitive parameters to there Java class equivalents
(Integer, Float, Long).

so if your create is for example

    create(int size, float spread);

reflection will attempt to find the method

    create(Integer size, Float spread);

The obvious solution is to convert your
create to using the Java Class version's of
the primitive types.

HTH,

Alan




Eyal Hirsch wrote:

> Hi all,
>  I'm using reflection in order to
> call an unknown bean at developement
> time. I'm able to get the home interface
> and call the create method using reflection.
> However when I try to call the desired
> method I get an exception. Below is
> the main code i use :
>
>   home = ( EJBHome )javax.rmi.PortableRemoteObject.narrow( objRef,
>  ejbMetaData.getHomeInterfaceClass() );
>   classData = home.getClass();
>   try {
>      methodToInvoke = classData.getMethod( "create", methodCreateTypes );
>      EJBObject beanInstance = ( EJBObject )methodToInvoke.invoke(
>   home, argsCreateMethod );
>
>      // These two lines won't work either.
>      // Object narrowObj = javax.rmi.PortableRemoteObject.narrow(
>   beanInstance, ejbMetaData.getRemoteInterfaceClass() );
>      // classData = narrowObj.getClass();
>
>      classData = beanInstance.getClass();
>      // The above call returns my _xxx_stub class
>
>      // The following line causes the NoSuchMethodException exception
>      Method methodToInvoke = classData.getMethod(
>  mappedData.sMethodName, methodBeanTypes );
>      return ( ( String )methodToInvoke.invoke( beanInstance, argsBeanMethod ) );
>   }
>
>  If i put a debug code which prints the available
> methods in beanInstance I can see the desired
> method with the desired parameters, again using
> reflection, so the method is there, but i just can't
> call it. The code is called from a servlet, the same
> code works fine when called from a regular class,
> does this makes sense ?
>
> Any ideas ?
>
> Thanks in advance,
>   eyal.
>
> ===========================================================================
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
> of the message "signoff EJB-INTEREST".  For general help, send email to
> [EMAIL PROTECTED] and include in the body of the message "help".

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff EJB-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to