Java读取和修改Tomcat的server.xml配置文件(多个service配置适用)

1、读取工具类
public static Document getXMLAttribute(String filepath, String nodeName){
        Document document = null;
        List<Map<String,String>> retListmap = new ArrayList<>();
        try {
            //创建解析器
            SAXReader reader=new SAXReader();//创建读取文件内容对象
            document=reader.read(filepath);//指定文件并读取
            return document;
        }catch (DocumentException e){
            if (document!=null){
                document.clone();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
2、调用
public class XMLConfig {


    public static Document getTomcatServerContext(){

        Document el = DocumentUtils.getXMLAttribute(ApplicationConfig.pathurl+"/tomcat/conf/server.xml","Context");

        return el;
        //return list;
    }


    /**
     * 把改变的domcument对象保存到指定的xml文件中
     */
    public static String saveDocument(Document document){
        XMLWriter writer = null;
        try {
            Writer osWrite=new OutputStreamWriter(new FileOutputStream(ApplicationConfig.pathurl+"/tomcat/conf/server.xml"));//创建输出流
            OutputFormat format = OutputFormat.createPrettyPrint();  //获取输出的指定格式
            format.setEncoding("UTF-8");//设置编码 ,确保解析的xml为UTF-8格式
            writer = new XMLWriter(osWrite,format);//XMLWriter 指定输出文件以及格式
            writer.write(document);//把document写入xmlFile指定的文件(可以为被解析的文件或者新创建的文件)
            writer.flush();
            writer.close();
            return "修改配置文件成功";
        }catch (Exception e){
            if (writer!=null){
                try {
                    writer.flush();
                    writer.close();
                }catch (Exception ex){

                }
            }
        }
        return "修改配置文件失败!";

    }

}
3、获取想要的内容(以获取服务端口号为例)

由于我配置了两个Tomcat的service服务,因此是循环读取的

public static List<String> readTomcatConfig() {
        new IniUtils();
        ArrayList<String> portList = new ArrayList<>();
        Document document = XMLConfig.getTomcatServerContext();
        // 获取根节点
        Element root = document.getRootElement();
        // 获取所有的子节点
        List<Element> elements = root.elements();
        // 由于配置了两个service服务,而且是最后两个,因此只要最后两个节点
        elements.subList(0,elements.size() - 2).clear();
        for (Element element : elements){
            Element Connector_config = element.element("Connector");
            String port = Connector_config.attribute("port").getValue();
            portList.add(port);
        }
        /**
        这里是单个配置的
        Document document = XMLConfig.getTomcatServerContext();

        Element root = document.getRootElement();
        Element Service_config = root.element("Service");
        Element Connector_config = Service_config.element("Connector");
        String port= Connector_config.attribute("port").getValue();
        */
        return portList;
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值