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]