docs: private static String getStringAttributeFromAnnotation(ClassInfo classInfo, String seiClassName, InfoStore infoStore, String attribute,
                                                             String defaultForService, String defaultForServiceProvider) {
          AnnotationInfo annotationInfo = getAnnotationInfoFromClass(classInfo, attribute);
          if (annotationInfo == null) {
              return "";
          }
          boolean isProvider = isProvider(classInfo);
  
          // if the serviceImplBean is a WebServiceProvider, return the attribute value or the defaultValue for ServiceProvider
          if (isProvider) {
              return getStringAttributeFromWebServiceProviderAnnotation(annotationInfo, attribute, defaultForServiceProvider);
          }
  
          // if is as WebService,  need to get the attribute from itself, the SEI or the interfaces, then the default value for Service
          String attrFromImplBean = annotationInfo.getValue(attribute).getStringValue().trim();
          if (attrFromImplBean.isEmpty()) {
              // can not get the SEI class name just return the default value
              if (seiClassName.isEmpty()) {
                  return defaultForService;
              } else {
                  // if can get the SEI className, go here.
                  ClassInfo seiClassInfo = infoStore.getDelayableClassInfo(seiClassName);
  
                  annotationInfo = seiClassInfo.getAnnotation(JaxWsConstants.WEB_SERVICE_ANNOTATION_NAME);
                  if (null == annotationInfo) {// if the SEI does not have the @WebService annotation, we should report it as error? (RI 2.2 will do)
                      if (tc.isDebugEnabled()) {
                          Tr.debug(tc, "No @WebService or @WebServiceProvider annotation is found on the class " + seiClassInfo
                                       + " will return " + defaultForService);
                      }
                      return defaultForService;
                  }
  
                  // if the attribute is presented in SEI's @WebService, just return it. or, return the default value for Service
                  String attrFromSEI = annotationInfo.getValue(attribute).getStringValue().trim();
                  return StringUtils.isEmpty(attrFromSEI) ? defaultForService : attrFromSEI;
              }
  
          }
          return attrFromImplBean;
      }