code: private static QName getPortQName(ClassInfo classInfo, String namespace, String wsName, String wsPortName, String suffix) {
          String portName;
          if (wsPortName != null && !wsPortName.isEmpty()) {
              portName = wsPortName.trim();
          } else {
              if (wsName != null && !wsName.isEmpty()) {
                  portName = wsName.trim();
              } else {
                  String qualifiedName = classInfo.getQualifiedName();
                  int lastDotIndex = qualifiedName.lastIndexOf(".");
                  portName = (lastDotIndex == -1 ? qualifiedName : qualifiedName.substring(lastDotIndex + 1));
              }
              portName = portName + suffix;
          }
          return new QName(namespace, portName);
      }
docs: Get portName.
  1.declared portName in web service annotation
  2.name in web service annotation + Port
  3.service class name + Port.
  
  From specification:
  The portName element of the WebService annotation, if present, MUST be used to derive the port name to use in WSDL.
  In the absence of a portName element, an implementation MUST use the value of the name element of the WebService annotation, if present, suffixed with “Port”.
  Otherwise, an implementation MUST use the simple name of the class annotated with WebService suffixed with “Port”.
  
  @param classInfo
  @param namespace
  @param wsPortName
  @param suffix
  @return