Thank you Phil and Tomek,
this explained a lot! Martin ________________________________ Von: Phil Bowker [mailto:[EMAIL PROTECTED] Gesendet: Mittwoch, 14. März 2007 10:12 An: [email protected] Betreff: [SPAM] - Re: [xfire-user] Why does this code run? - Email found in subject Make sure your getters and setters refer to the same name ie setProcDesc(...) and getProcDesc() - this code should run ok. Then, brush up on JavaBeans and the difference between a field and a property. On 14/03/07, Ehrlich, Martin (Vorsorge) <[EMAIL PROTECTED]> wrote: Hi, I found some - in my eyes - very strange behaviour. I try to get an instance of the class ProcessState back from my WebService (running XFire 1.2.5 on JBoss). This is a POJO containing just another POJO called ProcessDescriptor. (ProcessDescriptor is a class I already use in another WS and it works quite well.) ProcessState looks like this: public class ProcessState implements Serializable { private ProcessDescriptor procDesc; public ProcessState() { super(); this.procDesc = new ProcessDescriptor(); } public final void setProcDesc(ProcessDescriptor procDesc) { this.procDesc = procDesc; } public final ProcessDescriptor getProcessDescriptor() { return procDesc; } } I get this exception: Exception in thread "main" org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: No write method for property { http://jbpmServices}processDescriptor in class jbpmServices.ProcessState org.codehaus.xfire.fault.XFireFault: No write method for property {http://jbpmServices}processDescriptor in class jbpmServices.ProcessState I do not understand why this happens because there is no property called ProcessDesriptor. The property is called procDesc. When I change the method name to public final void setProcessDescriptor(ProcessDescriptor procDesc) { this.procDesc = procDesc; } it runs flawlessly. Is this logical? ProcessDescriptor is the type of the property not the property itself! I would really like to know why this code runs. ;-) Thanks, Martin PS: For completeness here the class ProcessDescriptor: public class ProcessDescriptor implements Serializable { private String processName = ""; private long id; private boolean suspended = true; public final long getId() { return id; } public final void setId(long id) { this.id <http://this.id/> = id; } public final String getProcessName() { return processName; } public final void setProcessName(String processName) { this.processName = processName; } public final boolean isSuspended() { return suspended; } public final void setSuspended(boolean suspended) { this.suspended = suspended; } }
