code: @Override
      public String getListeningHost(String chainName) throws ChainException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(tc, "getListeningHost: " + chainName);
          }
  
          String listeningHost = null;
          // Search the runtime chain list for the specified chain.
          Chain chain = this.chainRunningMap.get(chainName);
          if (chain != null) {
              ChainData chainData = chain.getChainData();
              if (chainData.getType().equals(FlowType.INBOUND)) {
                  // Extract the first channel in the chain. The device side channel.
                  ChannelData channelData = chainData.getChannelList()[0];
                  Map<Object, Object> channelProperties = channelData.getPropertyBag();
                  if (channelProperties != null) {
                      // Extract the host string from the chain properties.
                      listeningHost = (String) channelProperties.get(ChannelFrameworkConstants.HOST_NAME);
                      if (listeningHost == null) {
                          throw new ChainException("Chain " + chainName + " has no host in the device channel properties.");
                      }
                  } else {
                      throw new ChainException("Chain " + chainName + " has no properties.");
                  }
              } else {
                  throw new ChainException("Chain " + chainName + " is not inbound.");
              }
          } else {
              throw new ChainException("Chain " + chainName + " not found in runtime.");
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, "getListeningHost: " + listeningHost);
          }
          return listeningHost;
      }
docs: /*
  @see
  com.ibm.wsspi.channelfw.ChannelFramework#getListeningHost(java.lang.String)