How Tomcat Work 之Digester之The Applicaition

本文介绍如何使用ContextConfig配置Tomcat的StandardContext对象,并通过一个示例程序展示配置过程。此外,还介绍了Tomcat的不同配置方式,包括使用server.xml文件进行配置及web.xml文档的应用程序配置。



这一章节的应用允许你使用一个ContextConfig作为监听器来配置StandardContext对象。其由一个类,BootStrap组成。代码清单如下:



package ex15.pyrmont.startup;

import org.apache.catalina.Connector;
import org.apache.catalina.Container;
import org.apache.catalina.Context;
import org.apache.catalina.Host;
import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleListener;
import org.apache.catalina.Loader;
import org.apache.catalina.connector.http.HttpConnector;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.core.StandardHost;
import org.apache.catalina.core.StandardHost;
import org.apache.catalina.startup.ContextConfig;

public final class Bootstrap {
    
 
    // invoke: http://localhost:8080/app1/Modern or
   // http://localhost:8080/app2/Primitive
   // note that we don't instantiate a Wrapper here,
   // ContextConfig reads the WEB-INF/classes dir and loads all servlets.
   public static void main(String[] args) {
       System.setProperty("catalina.base",System.getProperty("user.dir"));
       Connector connector = new HttpConnector();
       Context context = new StandardContext();
       // StandardContext's start method adds a default mapper
       context.setPath("/app1");
       context.setDocBase("app1");
       LifecycleListener listener = new ContextConfig();
       ((Lifecycle) context).addLifecycleListener(listener);
       Host host = new StandardHost();
       host.addChild(context);
       host.setName("localhost");
       host.setAppBase("webapps");

       
       Loader loader = new WebappLoader();
       context.setLoader(loader);
       connector.setContainer(host);
       try {
           connector.initialize();
           ((Lifecycle) connector).start();
           ((Lifecycle) host).start();
           Container[] c = context.findChildren();
           int length = c.length;
           for (int i=0; i<length; i++) {
                Container child = c[i];
                System.out.println(child.getName());
           }

           // make the application wait until we press a key.
          System.in.read();
          ((Lifecycle) host) .stop();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

   


总结


Tomcat可以有不同的配置。使用一个server.xml文件的简单配置可以通过使用Digester对象将XML元素转为Java对象完成。另外,一个web.xml文档用于配置一个servlet/jsp的应用程序。Tomcat必须能够解析这个web.xml文档并且基于XML文档中的元素配置一个Context对象。Digester再一次优美的解决了这个问题。


Nano-ESG数据资源库的构建基于2023年初至2024年秋季期间采集的逾84万条新闻文本,从中系统提炼出企业环境、社会及治理维度的信息。其构建流程首先依据特定术语在德语与英语新闻平台上检索,初步锁定与德国DAX 40成分股企业相关联的报道。随后借助嵌入技术对文本段落执行去重操作,以降低内容冗余。继而采用GLiNER这一跨语言零样本实体识别系统,排除与目标企业无关的文档。在此基础上,通过GPT-3.5与GPT-4o等大规模语言模型对文本进行双重筛选:一方面判定其与ESG议题的相关性,另一方面生成简明的内容概要。最终环节由GPT-4o模型完成,它对每篇文献进行ESG情感倾向(正面、中性或负面)的判定,并标注所涉及的ESG具体维度,从而形成具备时序特征的ESG情感与维度标注数据集。 该数据集适用于多类企业可持续性研究,例如ESG情感趋势分析、ESG维度细分类别研究,以及企业可持续性事件的时序演变追踪。研究者可利用数据集内提供的新闻摘要、情感标签与维度分类,深入考察企业在不同时期的环境、社会及治理表现。此外,借助Bertopic等主题建模方法,能够从数据中识别出与企业相关的核心ESG议题,并观察这些议题随时间的演进轨迹。该资源以其开放获取特性与连续的时间覆盖,为探究企业可持续性表现的动态变化提供了系统化的数据基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值