RE: More on my copyProperties/EJB woes

2001-03-13 Thread Deadman, Hal



AlthoughcopyProperties to an entity 
beanmight work, it would be making a call through the remote interface 
each time it sets a property on the entity bean. I think it'sgood practice 
to minimize the number of remote calls made to an EJB. (Often in practice the 
calls are not really remote but it's good to pretend like they could be.) That 
would allow you to separate your JSPsand EJBs or use Tomcat for JSPs and 
Weblogic for EJBs. Normally instead of calling set methods on an entity bean 
from the web tier, I call a session bean and pass a simple JavaBean to it that 
isn't tied to Struts, often the bean may have been nested in an ActionForm. Then 
I havea create or an update method inthe entity bean that accepts 
the JavaBean as an argument.I don't always put all the getters and setters 
for individual fields in the entity bean remote interface unless I need them. 


Sorry 
if this isn't helpful, I would be interested to hear if anyone disagrees. 


Hal

-Original Message-From: 
Bryan Field-Elliot [mailto:[EMAIL PROTECTED]]Sent: Tuesday, 
March 13, 2001 12:06 AMTo: 
[EMAIL PROTECTED]Subject: More on my copyProperties/EJB 
woes
I've been tearing apart my problems using copyProperties in an EJB 
  environment; The scenario is that I am using 
  PropertyUtils.copyProperties to copy everything FROM a simple bean, TO an EJB 
  entity bean.Earlier tonight I thought that the hangup was over the 
  destination bean, perhaps because it was an EJB remote interface. But my 
  digging turns up that this isn't the case.The exception is during the 
  getting of the source properties (from my simple bean), and it never even gets 
  to the setting of the destination property.I extracted a small piece 
  of code from copyProperties and am executing it directly:// pv is my 
  simple bean, and "name" is a String property within in, which has a getter and 
  a setter method.PropertyDescriptor descriptor;// Following two 
  lines are key:descriptor = PropertyUtils.getPropertyDescriptor(pv, 
  "name");//descriptor = new PropertyDescriptor("name", 
  pv.getClass());Method readMethod = 
  descriptor.getReadMethod();Object value = readMethod.invoke(pv, new 
  Object[0]);When I use the first of the two "descriptor = " lines 
  (thereby making use of Struts), I get the following exception on the invoke() 
  line:Name: 
  java.lang.IllegalArgumentExceptionMessage: object is not an instance of 
  declaring classStack: java.lang.IllegalArgumentException: object is not an 
  instance of declaring classat java.lang.reflect.Method.invoke(Native 
  Method)However, when I use the second of the two "descriptor = 
  " lines (thereby using standard Java SDK reflection), the invoke() line 
  executes correctly.Any help would be appreciated.This is using 
  Struts 1.0 beta-1 
(binaries).Regards,Bryan


RE: More on my copyProperties/EJB woes

2001-03-13 Thread David Winterfeldt

I did the same thing on a project.  I had one method
to set and get a plain JavaBean.  I did use reflection
once I was inside the container managed EJB to
populate the values from the JavaBean to the EJB.

David

--- "Deadman, Hal" [EMAIL PROTECTED] wrote:
 Although copyProperties to an entity bean might
 work, it would be making a
 call through the remote interface each time it sets
 a property on the entity
 bean. I think it's good practice to minimize the
 number of remote calls made
 to an EJB. (Often in practice the calls are not
 really remote but it's good
 to pretend like they could be.) That would allow you
 to separate your JSPs
 and EJBs or use Tomcat for JSPs and Weblogic for
 EJBs. Normally instead of
 calling set methods on an entity bean from the web
 tier, I call a session
 bean and pass a simple JavaBean to it that isn't
 tied to Struts, often the
 bean may have been nested in an ActionForm. Then I
 have a create or an
 update method in the entity bean that accepts the
 JavaBean as an argument. I
 don't always put all the getters and setters for
 individual fields in the
 entity bean remote interface unless I need them. 
  
 Sorry if this isn't helpful, I would be interested
 to hear if anyone
 disagrees. 
  
 Hal
  
  -Original Message-
 From: Bryan Field-Elliot
 [mailto:[EMAIL PROTECTED]]
 Sent: Tuesday, March 13, 2001 12:06 AM
 To: [EMAIL PROTECTED]
 Subject: More on my copyProperties/EJB woes
 
 
 
 I've been tearing apart my problems using
 copyProperties in an EJB
 environment; 
 
 The scenario is that I am using
 PropertyUtils.copyProperties to copy
 everything FROM a simple bean, TO an EJB entity
 bean.
 
 Earlier tonight I thought that the hangup was over
 the destination bean,
 perhaps because it was an EJB remote interface. But
 my digging turns up that
 this isn't the case.
 
 The exception is during the getting of the source
 properties (from my simple
 bean), and it never even gets to the setting of the
 destination property.
 
 I extracted a small piece of code from
 copyProperties and am executing it
 directly:
 
 // pv is my simple bean, and "name" is a String
 property within in, which
 has a getter and a setter method.
 PropertyDescriptor descriptor;
 
 // Following two lines are key:
 descriptor = PropertyUtils.getPropertyDescriptor(pv,
 "name");
 //descriptor = new PropertyDescriptor("name",
 pv.getClass());
 
 Method readMethod = descriptor.getReadMethod();
 Object value = readMethod.invoke(pv, new Object[0]);
 
 
 When I use the first of the two "descriptor = "
 lines (thereby making use of
 Struts), I get the following exception on the
 invoke() line:
 
 Name: java.lang.IllegalArgumentException
 Message: object is not an instance of declaring
 class
 Stack: java.lang.IllegalArgumentException: object is
 not an instance of
 declaring class
 at java.lang.reflect.Method.invoke(Native Method)
 
 However, when I use the second of the two
 "descriptor = " lines (thereby
 using standard Java SDK reflection), the invoke()
 line executes correctly.
 
 Any help would be appreciated.
 
 This is using Struts 1.0 beta-1 (binaries).
 
 Regards,
 Bryan
 
 
 
 


__
Do You Yahoo!?
Yahoo! Auctions - Buy the things you want at great prices.
http://auctions.yahoo.com/