文章目录
- 1、自定义配置文件
- 2、使用DOM解析XML文件
- 3、创建Tomcat启动方法(解析配置文件、创建线程池、socket循环监听端口)
1、自定义配置文件
首先在main文件下创建资源目录resources:
在resource目录下创建server.xml文件,并写入监听端口与线程池数量的配置信息
2、使用DOM解析XML文件
自定义一个MyTomcat类
private int port;
private int poolSize;
public void init(String location){
// 加载 xml 配置文件
try {
InputStream inputStream = new FileInputStream(location);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = factory.newDocumentBuilder();
Document doc = docBuilder.parse(inputStream);
Element root = doc.getDocumentElement();
NodeList nodes = root.getChildNodes();
for(int i=0;i< nodes.getLength();i++){
if (nodes.item(i).getNodeType()== Node.ELEMENT_NODE) {
System.out.print(nodes.item(i).getNodeName() + ":");
System.out.println(nodes.item(i).getFirstChild().getNodeValue());
if(nodes.item(i).getNodeName().equals("pool-size")){
poolSize=Integer.valueOf(nodes.item(i).getFirstChild().getNodeValue());
}
if(nodes.item(i).getNodeName().equals("port")){
port=Integer.valueOf(nodes.item(i).getFirstChild().getNodeValue());
}
}
}
}catch (FileNotFoundException | ParserConfigurationException exception){
exception.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException exception) {
exception.printStackTrace();
}
}
3、创建Tomcat启动方法(解析配置文件、创建线程池、socket循环监听端口)
public void start(String location) throws Exception {
//1.定义ServerSocket对象进行服务端的端口注册
init(location);
ServerSocket ServerSocket = new ServerSocket(port);
ExecutorService executorService = Executors.newFixedThreadPool(poolSize);
// while(true) 持续接收请求
while(true) {
final Socket socket = ServerSocket.accept();
System.out.println("有客户端连接了..." + socket.getRemoteSocketAddress());
executorService.execute(new ServerThread(socket));
}
}