1.maven中使用tomcat7插件servlet-api的类加t类jar包冲突
2.Tomcat ç»ä»¶ç®ä»
maven中使用tomcat7插件servlet-api的jar包冲突
在Maven中,当使用Tomcat7插件时,载机制源可能会遇到servlet-api jar包冲突的码t码问题。当你在pom.xml中不添加servlet-api依赖时,加载项目编译会报错,器源i 帧 源码因为需要这个依赖来支持servlet子类。类加t类涨跌区间源码然而,载机制源一旦添加了这个依赖,码t码虽然Tomcat容器能正常启动,加载但在实际访问时,器源由于类加载机制的类加t类差异,可能会导致运行时错误。载机制源
问题出在两版本的码t码按键语言源码servlet-api不一致,编译时和运行时加载的加载jar包版本相同,但由于类加载器权限不同,器源运行时的类可能无法访问到web容器中的资源。为了解决这个问题,freecad源码开发可以尝试调整依赖的作用域。
解决冲突的一种方法是为pom.xml中引入的servlet-api添加一个作用域,如"provided"。"provided"作用域表示该jar包在编译和测试阶段有效,退役指标源码而在运行时,这个责任由服务器(如Tomcat)承担。这样,编译时使用的是自定义依赖,而在实际运行时,Tomcat会提供所需的servlet-api。
文章中还提到,如果不加这个作用域,依赖的默认作用域是"compile",这意味着jar包在整个项目生命周期都会被包含,包括发布。而"runtime"作用域仅在运行时有效,"test"作用域仅限于测试阶段,"system"作用域则需要显式提供jar包路径,不利于项目移植。
具体解决步骤可以参考以下链接:
[blog.csdn.net/luojishan...](/luojishan...)
Tomcat ç»ä»¶ç®ä»
title: Tomcat ç»ä»¶ç®ä»date: // :
å ç®åä»ç»ä¸ä¸ Tomcat ä¸çåç§ç»ä»¶ï¼è¦ä¸ä½ åé¢å¬ä¸æ
conf/server.xml
æ ¹æ®Tomcatèªèº«çåç±»ï¼ä¸é¢è¿äºå ç´ å¯ä»¥åæåç§ï¼
ä¸ä¸ªTomcatåªæä¸ä¸ª Server.xmlï¼å³ä¸ä¸ªTomcatå®ä¾åªæä¸ä¸ªServerã
å®ä¸æ¯ä¸ä¸ªå®¹å¨ï¼å®åªæ¯å纯å°æ®æ¼çä¸ä¸ªå 裹çè§è²ã
å®ä»£è¡¨ Tomcat å®ä¾æ¬èº«ã
Serverå¯é ç½®çå±æ§å¾å°ãæ ¹æ®ä¸é¢æå½çé»è®¤é ç½®ï¼Serverä¼ä¾¦å¬localhostçTCP端å£ï¼å½è¯¥ç«¯å£æ¥æ¶å°å符串"SHUTDOWN"æ¶ï¼å³æ§è¡å ³éTomcatæä½ã
Serveræ两ç§ç¹æçç»ä»¶ï¼ä¸ä¸ªæ¯GlobalNamingResourcesï¼å ¨å±å½åèµæºï¼ï¼ä¸ä¸ªæ¯Serviceï¼æå¡ï¼ã
é¤æ¤ä¹å¤ï¼è¿å¯ä»¥æListenerï¼çå¬å¨ï¼è¿ç§å¯ä»¥ä½ç¨äºä¸åå±æ¬¡å®¹å¨çç»ä»¶ãServeré»è®¤é ç½®äºå ç§Listenerãé ç½®å¨Serverè¿ä¸å±çListener对ææ容å¨èµ·ä½ç¨ã
å®ä»£è¡¨æ´ä¸ª Tomcat å®ä¾ï¼å æ¤å®è¿æä¸ä¸ªä½ç¨ï¼å°±æ¯çå¬ SHUTDOWN 请æ±ã
å®æ¯ä¸ä¸ªé¡¶å±ç»ä»¶ï¼ç¨äºå 裹å®ä¸é¢çå¤ä¸ª Service ç»ä»¶ã
ä¸ä¸ªServiceå°±æ¯ä¸ä¸ªå®æ´çæå¡ï¼è´è´£å°è¥å¹²ä¸ªConnectoråä¸ä¸ªEngineï¼å¼æï¼å 裹å¨ä¸èµ·ãé¤æ¤ä¹å¤ï¼Serviceè¿å¯ä»¥é ç½®ä¸ä¸ªExecutorï¼å ±äº«çº¿ç¨æ± ï¼ç¨äºç®¡çææConnectorç线ç¨æ°éã
å¦å¾æ示ï¼ServiceæExecutorãConnectoråEngineä¸ç§ç»ä»¶ãå ¶ä¸ï¼æ¯ä¸ªConnectorè´è´£ä¾¦å¬ä¸ä¸ªTCP端å£ï¼æ¥æ¶ç¸åºç请æ±ï¼å¹¶è½¬åç»ç»å®çEngineå¤çãEngineå¤çå®åï¼éè¿Connectoræç»æè¿åç»å®¢æ·ç«¯ãå¨é ç½®äºExecutorçæ åµä¸ï¼ææConnectorç线ç¨åExecutorç»ä¸ç®¡çã
å®çä½ç¨æ¯å°å¤ä¸ªè¿æ¥å¨ä¸å®¹å¨å®ä¾è系起æ¥ï¼ä½¿å¾ä¸ååè®®ç请æ±å¯ä»¥ä½¿ç¨åä¸ä¸ªå®¹å¨æ¥å¤çã
Engineæ¯Serviceç请æ±å¤çå¼æï¼è´è´£å¤çææConnectoråè¿æ¥ç请æ±ï¼å¹¶å°å é¨å¤çå®æ¯çç»æè¿åç»Connectorãå®æ¯æå¤å±ç容å¨ã
Engine.name - å¼æçå称
Engine.defaultHost - é»è®¤éç¨åªä¸ä¸ªå容å¨Hostæ¥å¤ç请æ±
Engine çä½ç¨æ¯å¯ä»¥éç¨ä¸ä¸ªè¿æ¥å¨æ¥æ¶è¯·æ±å¹¶æ å°å°ä¸åçååä¸
ä¸ä¸ªHostå°±æ¯ä¸ä¸ªèæ主æºï¼å¯¹åºä¸ä¸ªæå¤ä¸ªååã
Host.name - 主æºå称ï¼ååï¼
é»è®¤é ç½®å®ä¹äºä¸ä¸ªå为 localhost ç主æºãè³å°è¦æä¸ä¸ªHostçå称ä¸EngineçdefaultHostä¸è´ã
é¤äºååå¤ï¼Hostå¯ä»¥éè¿åèç¹aliasæ¥é ç½®å«åãå«åçä½ç¨ä¸ååä¸è´ãä¾å¦ï¼
å ¶ä½ç¨æºå¶å¦ä¸å¾æ示ï¼
Host.appBase - èæ主æºçæ ¹ç®å½
Host.unpackWARs - æ¾å° webapps ç®å½ä¸ç WAR-file æ¯å¦åºè¯¥è¢«è§£å
Host.autoDeploy - æ¯å¦èªå¨é¨ç½²æ¾å° webapps ç®å½ä¸çåºç¨
Context代表Hostä¸é¢çä¸ä¸ªèæç®å½ã
é»è®¤æ¯ä¸é ç½®ç
Context.docBase - åºç¨ç¨åºçè·¯å¾æè æ¯WARæ件åæ¾çè·¯å¾
Context.path - æ¤webåºç¨ç¨åºçä¸ä¸æè·¯å¾
Context.reloadable - æ¯å¦æ¯æçé¨ç½²
å¦æ为trueï¼åtomcatä¼èªå¨æ£æµåºç¨ç¨åºç/WEB-INF/lib å/WEB-INF/classesç®å½çååï¼å¹¶éè¿ç±»å è½½å¨éæ°å è½½classæ件ï¼ä»¥å®ç°å¨ä¸éå¯tomcatçæ åµä¸éæ°é¨ç½²ã
Context.crossContext - ä¸åcontextæ¯å¦å ±äº«session
å¼å¤´è¯´è¿ï¼Connectorå°±æ¯å¢ä¸çæ座ï¼è´è´£ä¾¦å¬ä¸ä¸ªå ·ä½çTCP端å£ï¼å¹¶éè¿è¯¥ç«¯å£å¤çEngineä¸å®¢æ·ç«¯ä¹é´ç交äºãé»è®¤é ç½®å®ä¹äºä¸¤ä¸ª Connectorï¼
Valveçä¸æå«ä¹æ¯éé¨ï¼å¯ä»¥ç®åå°ç解为Tomcatçæ¦æªå¨ãå®è´è´£å¨è¯·æ±åéå°åºç¨ä¹åæ¦æªHTTP请æ±ï¼å¯ä»¥å®ä¹å¨ä»»ä½å®¹å¨ä¸ãé»è®¤é ç½®ä¸å®ä¹äºä¸ä¸ªAccessLogValveï¼è´è´£æ¦æªHTTP请æ±ï¼å¹¶åå ¥å°æ¥å¿æ件ä¸ã
Listenerå³çå¬å¨ï¼è´è´£çå¬æå¡å¨ç«¯çè¡ä¸ºãæ¤å¤éè¦äºè§£ççå¬å¨æ两个ï¼
请æ±å°åä¸ºï¼ /mzdbxqh