Hi Jeff ;

Thank you very much for your comment, it is very descriptive and very
helpful  , I will use DescriptionBuilderComposite to create service side
AxisService.

Thanks
Deepal

>Hi Deepal,
>
>I believe the method you are refering to is intended to be used only for 
>Service Enpdoint Interfaces and not service implementations, but I need to 
>double check that.  If it is used for service implementations, then on the 
>server side it would only be in the non-DescriptionBuilderComposite path, 
>which is only used for testing and will eventually be removed.
>
>You are correct that, for a service implementation (which does not 
>reference an endpoint interface via @WebService.endpointInterface) then 
>all public methods other than those inherited from java.lang.Object should 
>be exposed.  So, for a service implementation, the code you added below 
>would be correct.  However, since this particular method is used only for 
>interfaces (and not service implementations) that additional code is not 
>necessary.
>
>An important thing to note is that the DescriptionBuilderComposite MUST be 
>used on the server side to construct the ServiceDescription hierachy.  In 
>other words, you MUST NOT use a service implementation class to construct 
>the ServiceDescription on the server side (that factory method is for 
>testing only and will eventually be removed).  You will see logic within 
>"if (isDBC)" constructs that do the processing you descrbed below for 
>service implementations which do not reference an endpointInterface (with 
>the additional related rules from JSR-181 regarding @WebMethod 
>annotations, method visibility and such).
>
>Regarding your last question "And I didnt see in the spce (may be I have 
>missed) saying that all the method should be public in the service impl 
>class , so please point me to the spec where you have such a 
>restriction.", I suspect the above answered your question, but in case 
>not: JSR-181 v2.0 2/27/05, page 13, Section 3.1 "Service Implementation 
>Bean", last bullet says "If the implemtnation bean does not specify a 
>service endpoint interface ... [and other rules regarding @WebMethod 
>omitted] ... all public methods .... will be exposed."  So, all methods on 
>a service implementation DO NOT need to be public, but any that are to be 
>exposed as Web Service operations must be public. 
>
>Thanks,
>Jeff
>
>IBM Software Group - WebSphere Web Services Development
>Phone: 512-838-4587 or Tie Line 678-4587
>Internet e-mail and Sametime ID: [EMAIL PROTECTED]
>
>
>
>Deepal Jayasinghe <[EMAIL PROTECTED]> 
>02/19/2007 02:15 AM
>Please respond to
>[email protected]
>
>
>To
>"[email protected]" <[email protected]>
>cc
>
>Subject
>[Axis2] Issue in metadata module
>
>
>
>
>
>
>Hi Dev;
>I went though the metadata module to find out how to create AxisService
>using a ServiceImpl class there I faced few issues in
>EndpointInterfaceDescriptionImpl  class.
>- in line 210 there is a method to process operations in the ServiceImpl
>class and that returns all the method in the class including the method
>in the java.lang.Object class , so is there a reason for doing that.
> We can fix that changing the method as follows;
>private static Method[] getSEIMethods(Class sei) {
>        // Per JSR-181 all methods on the SEI are mapped to operations
>regardless
>        // of whether they include an @WebMethod annotation.  That
>annotation may
>        // be present to customize the mapping, but is not required (p14)
>        Method[] seiMethods = sei.getMethods();
>        ArrayList methodList = new ArrayList();
>        if (sei != null) {
>            for (Method method:seiMethods) {
>
> 
>if(method.getDeclaringClass().getName().equals("java.lang.Object")){
>                    continue;
>                }
>                methodList.add(method);
>                if (!Modifier.isPublic(method.getModifiers())) {
>                    // JSR-181 says methods must be public (p14)
>                    // TODO NLS
>                    ExceptionFactory.makeWebServiceException("SEI
>methods must be public");
>                }
>                // TODO: other validation per JSR-181
>            }
> 
>        }
>        return (Method[])methodList.toArray(new 
>Method[methodList.size()]);
>//        return seiMethods;
>    }
> 
>
>- And I didnt see in the spce (may be I have missed) saying that all the
>method should be public in the service impl  class , so please point me
>to the spec where you have such a restriction.
>
>Thanks
>Deepal
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
>  
>

-- 
Thanks,
Deepal
................................................................
"The highest tower is built one brick at a time"




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to