import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Map;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;

public class Util {

public static Integer getTomcatPortFromConfigXml(File serverXml) {
  Integer port;
  try {
   DocumentBuilderFactory domFactory = DocumentBuilderFactory
     .newInstance();
   domFactory.setNamespaceAware(true);
   DocumentBuilder builder = domFactory.newDocumentBuilder();
   Document doc = builder.parse(serverXml);
   XPathFactory factory = XPathFactory.newInstance();
   XPath xpath = factory.newXPath();
   XPathExpression expr = xpath
     .compile("/Server/Service[@name='Catalina']/Connector[count(@scheme)=0]/@port[1]");
   String result = (String) expr.evaluate(doc, XPathConstants.STRING);
   port = ((result != null) && (result.length() > 0)) ? Integer
     .valueOf(result) : null;
  } catch (Exception e) {
   port = null;
   e.printStackTrace();
  }
  return port;
 }    

}

使用方法如下:

File file = new File(System.getProperty("catalina.base")
      + "/conf/server.xml");

getTomcatPortFromConfigXml(file);


注意:本文归作者所有,未经作者允许,不得转载