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


Reply via email to