Wolfgang, Regarding your second question, there are two cases:
1) The implementation bean refers to an endpointInterface: In this case, the endpoint interface "is used to determine the abstract WSDL contract (portType and bindings)" (JSR-181, p. 11). In other words, if the implementation bean has a @WebService.endpointInterface annotation, all other annotations in the implementation bean will be ignored. The endpoint interface's annotations will be used instead. Moreover, "All of the methods on the service endpoint interface are mapped to WSDL operations, regardless of whether they include a @WebMethod annotation. (...)" (JSR-181, p. 12) In fact, all annotations in the endpoint interface are optional and only used to customize the respective WSDL mappings. 2) The implementation bean does *not* refer to an endpointInterface: Published methods must be annotated with @WebMethod in the implementation bean *only* if the implementation bean does not refer to an endpointInterface. On your first question: I couldn't find anything in the spec specifying the processor's behavior when methods are published by the endpoint interface, but not implemented in the implementation bean. If we didn't provide any error checking the system would run into problems at runtime when somebody calls the not-implemented method. Thus, I strongly believe that we should provide error checks that fully validate the implementation bean against the endpoint interface along with test cases that test those checks. The checks would report the error at service instantiation (deploy time) rather than at runtime and would include the verification of signatures. However, we can certainly implement this iteratively (until we hit the milestone "JSR-181 compliant" anyway ;) Hope this helps. Do your latest patches comply with this (sorry, haven't had a chance to look at them yet)? Cheers, -michael -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: Tuesday, October 12, 2004 7:33 AM To: Beehive Developers Cc: Jonathan Colwell; Michael Merz Subject: Re: @SecurityIdentity, @SecurityRoles Hi Michael, > Does that code check whether the implementation bean implements all the > methods specified in the endpointInterface, yet? Also, are there any > test cases to check whether that's those check work? That would be cool > to have, too -- just in case you get bored ;) Thanks much. I'd been thinking how to implement this mechanism because some parts are somehow tricky. If an endpoint interface has a method "public int dropMoney(int amount)", it should be exposed in its object model even though the method is not annotated with @WebMethod. If the corresponding service implementation bean doesn't have(implement) the method, it must be an error, right ? How about if the corresponding service implementation bean has(implements) the method, but the method in the service implementation is not annotated with @WebMethod ?? The method should be exposed in its object model ? But the section 5.2.1 in page 14 of JSR-181 says "A WebMethod annotation is required for each method that is published by the Web Service." I took this statement as Don't annotate a method with a WebMethod annotation, if you don't want the method to be published. So it doesn't make sence to me. What do you think ? Anyways, I've just finished implementing this mechanism and test cases for it. I attach a patch(wsm_diff.txt) and test cases(new_files.tar.gz). I implemented as... If an endpoint interface has a method which is not annotated with @WebMethod, the correspoding service implementation bean must have the same method ( same signature) and the method must be annotated with @WebMethod. Otherwise, it will throw an exception. Thanks in advance. Wolfgang
