Author: slaurent
Date: Sat Dec 3 21:37:49 2011
New Revision: 1210012
URL: http://svn.apache.org/viewvc?rev=1210012&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=51741
bug 51741: Eclipse WTP "Serve modules without publishing" broken with tc7,
needs patch in tomcat
https://issues.apache.org/bugzilla/show_bug.cgi?id=51741
merged revisions 1209685:1209731 from trunk to tc7
Added:
tomcat/tc7.0.x/trunk/test/org/apache/catalina/loader/EchoTag.java
- copied unchanged from r1209731,
tomcat/trunk/test/org/apache/catalina/loader/EchoTag.java
tomcat/tc7.0.x/trunk/test/org/apache/catalina/loader/MyAnnotatedServlet.java
- copied unchanged from r1209731,
tomcat/trunk/test/org/apache/catalina/loader/MyAnnotatedServlet.java
tomcat/tc7.0.x/trunk/test/org/apache/catalina/loader/TestVirtualContext.java
- copied unchanged from r1209731,
tomcat/trunk/test/org/apache/catalina/loader/TestVirtualContext.java
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-library/
- copied from r1209731, tomcat/trunk/test/webapp-3.0-virtual-library/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-library/target/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-library/target/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-library/target/classes/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-library/target/classes/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-library/target/classes/META-INF/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-library/target/classes/META-INF/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-library/target/classes/META-INF/C.tld
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-library/target/classes/META-INF/C.tld
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-library/target/classes/META-INF/resources/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-library/target/classes/META-INF/resources/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-library/target/classes/META-INF/resources/rsrc/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-library/target/classes/META-INF/resources/rsrc/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-library/target/classes/META-INF/resources/rsrc/resourceE.properties
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-library/target/classes/META-INF/resources/rsrc/resourceE.properties
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-library/target/classes/rsrc/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-library/target/classes/rsrc/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-library/target/classes/rsrc/resourceC.properties
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-library/target/classes/rsrc/resourceC.properties
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/
- copied from r1209731, tomcat/trunk/test/webapp-3.0-virtual-webapp/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/
- copied from r1209731, tomcat/trunk/test/webapp-3.0-virtual-webapp/src/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/lib/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/lib/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/lib/META-INF/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/lib/META-INF/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/lib/META-INF/B.tld
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/lib/META-INF/B.tld
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/lib/rsrc/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/lib/rsrc/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/lib/rsrc/resourceD.properties
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/lib/rsrc/resourceD.properties
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/misc/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/misc/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/misc/resourceI.properties
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/misc/resourceI.properties
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/META-INF/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/META-INF/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/WEB-INF/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/WEB-INF/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/WEB-INF/A.tld
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/WEB-INF/A.tld
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/WEB-INF/classes/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/WEB-INF/classes/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/WEB-INF/classes/rsrc/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/WEB-INF/classes/rsrc/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/WEB-INF/classes/rsrc/resourceA.properties
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/WEB-INF/classes/rsrc/resourceA.properties
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/WEB-INF/lib/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/WEB-INF/lib/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/WEB-INF/lib/rsrc.jar
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/WEB-INF/lib/rsrc.jar
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/WEB-INF/web.xml
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/WEB-INF/web.xml
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/classpathGetResourceAsStream.jsp
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/classpathGetResourceAsStream.jsp
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/classpathGetResourceUrlThenGetStream.jsp
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/classpathGetResourceUrlThenGetStream.jsp
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/classpathGetResources.jsp
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/classpathGetResources.jsp
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/contextGetRealPath.jsp
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/contextGetRealPath.jsp
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/contextGetResource.jsp
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/contextGetResource.jsp
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/contextGetResourcePaths.jsp
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/contextGetResourcePaths.jsp
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/rsrc/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/rsrc/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/rsrc/resourceF.properties
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/rsrc/resourceF.properties
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/testTlds.jsp
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp/testTlds.jsp
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/WEB-INF/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/WEB-INF/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/WEB-INF/D.tld
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/WEB-INF/D.tld
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/WEB-INF/classes/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/WEB-INF/classes/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/WEB-INF/classes/rsrc/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/WEB-INF/classes/rsrc/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/WEB-INF/classes/rsrc/resourceG.properties
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/WEB-INF/classes/rsrc/resourceG.properties
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/WEB-INF/classes/rsrc2/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/WEB-INF/classes/rsrc2/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/WEB-INF/classes/rsrc2/resourceK.properties
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/WEB-INF/classes/rsrc2/resourceK.properties
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/rsrc/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/rsrc/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/rsrc/resourceF.properties
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/rsrc/resourceF.properties
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/rsrc/resourceH.properties
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/rsrc/resourceH.properties
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/rsrc2/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/rsrc2/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/rsrc2/resourceJ.properties
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/src/main/webapp2/rsrc2/resourceJ.properties
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/target/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/target/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/target/classes/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/target/classes/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/target/classes/rsrc/
- copied from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/target/classes/rsrc/
tomcat/tc7.0.x/trunk/test/webapp-3.0-virtual-webapp/target/classes/rsrc/resourceB.properties
- copied unchanged from r1209731,
tomcat/trunk/test/webapp-3.0-virtual-webapp/target/classes/rsrc/resourceB.properties
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
tomcat/tc7.0.x/trunk/.gitignore
tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/StandardContext.java
tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java
tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java
tomcat/tc7.0.x/trunk/java/org/apache/naming/resources/VirtualDirContext.java
tomcat/tc7.0.x/trunk/webapps/docs/config/context.xml
tomcat/tc7.0.x/trunk/webapps/docs/config/resources.xml
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Dec 3 21:37:49 2011
@@ -1 +1 @@
-/tomcat/trunk:1156115,1156171,1156276,1156304,1156519,1156530,1156602,1157015,1157018,1157151,1157198,1157204,1157810,1157832,1157834,1157847,1157908,1157939,1158155,1158160,1158176,1158195,1158198-1158199,1158227,1158331,1158334-1158335,1158426,1160347,1160592,1160611,1160619,1160626,1160639,1160652,1160720-1160721,1160772,1160774,1160776,1161303,1161310,1161322,1161339,1161486,1161540,1161549,1161584,1162082,1162149,1162169,1162721,1162769,1162836,1162932,1163630,1164419,1164438,1164469,1164480,1164567,1165234,1165247-1165248,1165253,1165273,1165282,1165309,1165331,1165338,1165347,1165360-1165361,1165367-1165368,1165602,1165608,1165677,1165693,1165721,1165723,1165728,1165730,1165738,1165746,1165765,1165777,1165918,1165921,1166077,1166150-1166151,1166290,1166366,1166620,1166686,1166693,1166752,1166757,1167368,1167394,1169447,1170647,1171692,1172233-1172234,1172236,1172269,1172278,1172282,1172556,1172610,1172664,1172689,1172711,1173020-1173021,1173082,1173088,1173090,1173096
,1173241,1173256,1173288,1173333,1173342,1173461,1173614,1173630,1173659,1173722,1174061,1174239,1174322,1174325,1174329-1174330,1174337-1174339,1174343,1174353,1174799,1174882,1174884,1174983,1175155,1175158,1175167,1175182,1175190,1175201,1175272,1175275,1175283,1175582,1175589-1175590,1175594,1175602,1175613,1175633,1175690,1175713,1175798,1175889,1175896,1175907,1176584,1176590,1176799,1177050,1177060,1177125,1177152,1177160,1177245,1177850,1177862,1177978,1178209,1178228,1178233,1178449,1178542,1178681,1178684,1178721,1179268,1179274,1180261,1180865,1180891,1180894,1180907,1181028,1181123,1181125,1181136,1181291,1181743,1182796,1183078,1183105,1183142,1183328,1183339-1183340,1183492-1183494,1183605,1184917,1184919,1185018,1185020,1185200,1185588,1185626,1185756,1185758,1186011,1186042-1186045,1186104,1186123,1186137,1186153,1186254,1186257,1186377-1186379,1186479-1186480,1186712,1186743,1186750,1186763,1186890-1186892,1186894,1186949,1187018,1187027-1187028,1187381,1187
753,1187755,1187775,1187801,1187806,1187809,1187827,1188301,1188303-1188305,1188399,1188822,1188930-1188931,1189116,1189129,1189183,1189240,1189256,1189386,1189413-1189414,1189477,1189685,1189805,1189857,1189864,1189882,1190034,1190185,1190279,1190339,1190371,1190388-1190389,1190474,1190481,1194915,1195222-1195223,1195531,1195899,1195905,1195943,1195949,1195953,1195955,1195965,1195968,1196175,1196212,1196223,1196304-1196305,1196735,1196825,1196827,1197158,1197261,1197263,1197299-1197300,1197305,1197339-1197340,1197343,1197382,1197386-1197387,1197480,1197578,1198497,1198528,1198552,1198602,1198604,1198607,1198622,1198640,1198696,1198707,1199418,1199432,1199436,1199513,1199529,1199980,1199996,1200056,1200089,1200106-1200107,1200263,1200316,1200320,1200398-1200399,1200445-1200446,1200555,1200627,1200696,1200725,1200937,1200941,1201069,1201087,1201180,1201235-1201237,1201508,1201521,1201542,1201545-1201546,1201548,1201555-1201556,1201568,1201576,1201608,1201921-1201922,1201931,1
202035,1202039,1202271,1202565,1202578,1202705,1202828,1202860,1203047-1203052,1203078,1203091,1203253,1203278,1204182,1204856,1204867,1204936,1204938,1204982,1205033,1205065,1205082,1205097,1205112,1206200,1207692,1208046,1208073,1208096,1208114,1208145,1208772,1209194,1209277-1209278
+/tomcat/trunk:1156115,1156171,1156276,1156304,1156519,1156530,1156602,1157015,1157018,1157151,1157198,1157204,1157810,1157832,1157834,1157847,1157908,1157939,1158155,1158160,1158176,1158195,1158198-1158199,1158227,1158331,1158334-1158335,1158426,1160347,1160592,1160611,1160619,1160626,1160639,1160652,1160720-1160721,1160772,1160774,1160776,1161303,1161310,1161322,1161339,1161486,1161540,1161549,1161584,1162082,1162149,1162169,1162721,1162769,1162836,1162932,1163630,1164419,1164438,1164469,1164480,1164567,1165234,1165247-1165248,1165253,1165273,1165282,1165309,1165331,1165338,1165347,1165360-1165361,1165367-1165368,1165602,1165608,1165677,1165693,1165721,1165723,1165728,1165730,1165738,1165746,1165765,1165777,1165918,1165921,1166077,1166150-1166151,1166290,1166366,1166620,1166686,1166693,1166752,1166757,1167368,1167394,1169447,1170647,1171692,1172233-1172234,1172236,1172269,1172278,1172282,1172556,1172610,1172664,1172689,1172711,1173020-1173021,1173082,1173088,1173090,1173096
,1173241,1173256,1173288,1173333,1173342,1173461,1173614,1173630,1173659,1173722,1174061,1174239,1174322,1174325,1174329-1174330,1174337-1174339,1174343,1174353,1174799,1174882,1174884,1174983,1175155,1175158,1175167,1175182,1175190,1175201,1175272,1175275,1175283,1175582,1175589-1175590,1175594,1175602,1175613,1175633,1175690,1175713,1175798,1175889,1175896,1175907,1176584,1176590,1176799,1177050,1177060,1177125,1177152,1177160,1177245,1177850,1177862,1177978,1178209,1178228,1178233,1178449,1178542,1178681,1178684,1178721,1179268,1179274,1180261,1180865,1180891,1180894,1180907,1181028,1181123,1181125,1181136,1181291,1181743,1182796,1183078,1183105,1183142,1183328,1183339-1183340,1183492-1183494,1183605,1184917,1184919,1185018,1185020,1185200,1185588,1185626,1185756,1185758,1186011,1186042-1186045,1186104,1186123,1186137,1186153,1186254,1186257,1186377-1186379,1186479-1186480,1186712,1186743,1186750,1186763,1186890-1186892,1186894,1186949,1187018,1187027-1187028,1187381,1187
753,1187755,1187775,1187801,1187806,1187809,1187827,1188301,1188303-1188305,1188399,1188822,1188930-1188931,1189116,1189129,1189183,1189240,1189256,1189386,1189413-1189414,1189477,1189685,1189805,1189857,1189864,1189882,1190034,1190185,1190279,1190339,1190371,1190388-1190389,1190474,1190481,1194915,1195222-1195223,1195531,1195899,1195905,1195943,1195949,1195953,1195955,1195965,1195968,1196175,1196212,1196223,1196304-1196305,1196735,1196825,1196827,1197158,1197261,1197263,1197299-1197300,1197305,1197339-1197340,1197343,1197382,1197386-1197387,1197480,1197578,1198497,1198528,1198552,1198602,1198604,1198607,1198622,1198640,1198696,1198707,1199418,1199432,1199436,1199513,1199529,1199980,1199996,1200056,1200089,1200106-1200107,1200263,1200316,1200320,1200398-1200399,1200445-1200446,1200555,1200627,1200696,1200725,1200937,1200941,1201069,1201087,1201180,1201235-1201237,1201508,1201521,1201542,1201545-1201546,1201548,1201555-1201556,1201568,1201576,1201608,1201921-1201922,1201931,1
202035,1202039,1202271,1202565,1202578,1202705,1202828,1202860,1203047-1203052,1203078,1203091,1203253,1203278,1204182,1204856,1204867,1204936,1204938,1204982,1205033,1205065,1205082,1205097,1205112,1206200,1207692,1208046,1208073,1208096,1208114,1208145,1208772,1209194,1209277-1209278,1209686-1209731
Modified: tomcat/tc7.0.x/trunk/.gitignore
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/.gitignore?rev=1210012&r1=1210011&r2=1210012&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/.gitignore (original)
+++ tomcat/tc7.0.x/trunk/.gitignore Sat Dec 3 21:37:49 2011
@@ -14,7 +14,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
# -----------------------------------------------------------------------------
-target
output
logs
work
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/StandardContext.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/StandardContext.java?rev=1210012&r1=1210011&r2=1210012&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/StandardContext.java
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/StandardContext.java Sat
Dec 3 21:37:49 2011
@@ -1201,8 +1201,21 @@ public class StandardContext extends Con
getName()));
}
}
-
-
+
+ /**
+ * Add a URL for a JAR that contains static resources in a
+ * META-INF/resources directory that should be included in the static
+ * resources for this context.
+ */
+ public void addResourcesDirContext(DirContext altDirContext) {
+ if (webappResources instanceof BaseDirContext) {
+ ((BaseDirContext) webappResources).addAltDirContext(altDirContext);
+ } else {
+ log.error(sm.getString("standardContext.noResourceJar",
altDirContext,
+ getName()));
+ }
+ }
+
/**
* Set the current alias configuration. The list of aliases should be of
the
* form "/aliasPath1=docBase1,/aliasPath2=docBase2" where aliasPathN must
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java?rev=1210012&r1=1210011&r2=1210012&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java
Sat Dec 3 21:37:49 2011
@@ -46,11 +46,11 @@ import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Set;
-import java.util.Vector;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.jar.Attributes;
import java.util.jar.Attributes.Name;
@@ -1278,7 +1278,8 @@ public class WebappClassLoader
if (log.isDebugEnabled())
log.debug(" findResources(" + name + ")");
- Vector<URL> result = new Vector<URL>();
+ //we use a LinkedHashSet instead of a Vector to avoid duplicates with
virtualmappings
+ LinkedHashSet<URL> result = new LinkedHashSet<URL>();
int jarFilesLength = jarFiles.length;
int repositoriesLength = repositories.length;
@@ -1291,7 +1292,7 @@ public class WebappClassLoader
Enumeration<URL> otherResourcePaths = super.findResources(name);
while (otherResourcePaths.hasMoreElements()) {
- result.addElement(otherResourcePaths.nextElement());
+ result.add(otherResourcePaths.nextElement());
}
}
@@ -1303,7 +1304,7 @@ public class WebappClassLoader
// Note : Not getting an exception here means the resource was
// found
try {
- result.addElement(getURI(new File(files[i], name)));
+ result.add(getURI(new File(files[i], name)));
} catch (MalformedURLException e) {
// Ignore
}
@@ -1321,7 +1322,7 @@ public class WebappClassLoader
try {
String jarFakeUrl =
getURI(jarRealFiles[i]).toString();
jarFakeUrl = "jar:" + jarFakeUrl + "!/" + name;
- result.addElement(new URL(jarFakeUrl));
+ result.add(new URL(jarFakeUrl));
} catch (MalformedURLException e) {
// Ignore
}
@@ -1336,12 +1337,24 @@ public class WebappClassLoader
Enumeration<URL> otherResourcePaths = super.findResources(name);
while (otherResourcePaths.hasMoreElements()) {
- result.addElement(otherResourcePaths.nextElement());
+ result.add(otherResourcePaths.nextElement());
}
}
- return result.elements();
+ final Iterator<URL> iterator = result.iterator();
+
+ return new Enumeration<URL>() {
+ @Override
+ public boolean hasMoreElements() {
+ return iterator.hasNext();
+ }
+
+ @Override
+ public URL nextElement() {
+ return iterator.next();
+ }
+ };
}
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java?rev=1210012&r1=1210011&r2=1210012&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java
Sat Dec 3 21:37:49 2011
@@ -46,6 +46,9 @@ import java.util.Properties;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
+import javax.naming.Binding;
+import javax.naming.NamingEnumeration;
+import javax.naming.NamingException;
import javax.servlet.ServletContainerInitializer;
import javax.servlet.ServletContext;
import javax.servlet.annotation.HandlesTypes;
@@ -79,6 +82,7 @@ import org.apache.catalina.util.ContextN
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.naming.resources.DirContextURLConnection;
+import org.apache.naming.resources.FileDirContext;
import org.apache.naming.resources.ResourceAttributes;
import org.apache.tomcat.JarScanner;
import org.apache.tomcat.JarScannerCallback;
@@ -1196,14 +1200,21 @@ public class ContextConfig
// Step 4. Process /WEB-INF/classes for annotations
// This will add any matching classes to the typeInitializerMap
if (ok) {
- URL webinfClasses;
try {
- webinfClasses =
context.getServletContext().getResource(
- "/WEB-INF/classes");
- processAnnotationsUrl(webinfClasses, webXml);
- } catch (MalformedURLException e) {
+ NamingEnumeration<Binding> listBindings =
+
context.getResources().listBindings("/WEB-INF/classes");
+ while (listBindings.hasMoreElements()) {
+ Binding binding = listBindings.nextElement();
+ if (binding.getObject() instanceof FileDirContext)
{
+ File webInfCLassDir =
+ new File(
+ ((FileDirContext)
binding.getObject()).getDocBase());
+ processAnnotationsFile(webInfCLassDir, webXml);
+ }
+ }
+ } catch (NamingException e) {
log.error(sm.getString(
- "contextConfig.webinfClassesUrl"), e);
+ "contextConfig.webinfClassesUrl"), e);
}
}
@@ -1565,10 +1576,25 @@ public class ContextConfig
if (jar.entryExists("META-INF/resources/")) {
context.addResourceJarUrl(url);
}
+ } else if ("file".equals(url.getProtocol())) {
+ FileDirContext fileDirContext = new FileDirContext();
+ fileDirContext.setDocBase(new
File(url.toURI()).getAbsolutePath());
+ try {
+ fileDirContext.lookup("META-INF/resources/");
+ //lookup succeeded
+ if(context instanceof StandardContext){
+
((StandardContext)context).addResourcesDirContext(fileDirContext);
+ }
+ } catch (NamingException e) {
+ //not found, ignore
+ }
}
} catch (IOException ioe) {
log.error(sm.getString("contextConfig.resourceJarFail", url,
context.getName()));
+ } catch (URISyntaxException e) {
+ log.error(sm.getString("contextConfig.resourceJarFail", url,
+ context.getName()));
} finally {
if (jar != null) {
jar.close();
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/naming/resources/VirtualDirContext.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/naming/resources/VirtualDirContext.java?rev=1210012&r1=1210011&r2=1210012&view=diff
==============================================================================
---
tomcat/tc7.0.x/trunk/java/org/apache/naming/resources/VirtualDirContext.java
(original)
+++
tomcat/tc7.0.x/trunk/java/org/apache/naming/resources/VirtualDirContext.java
Sat Dec 3 21:37:49 2011
@@ -18,9 +18,11 @@ package org.apache.naming.resources;
import java.io.File;
import java.util.ArrayList;
-import java.util.Hashtable;
+import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.StringTokenizer;
import javax.naming.NamingException;
@@ -29,21 +31,21 @@ import javax.naming.directory.Attributes
import org.apache.naming.NamingEntry;
/**
- * Extended FileDirContext implementation that will allow loading of tld files
- * from the META-INF directory (or subdirectories) in classpath. This will
fully
- * mimic the behavior of compressed jars also when using unjarred resources.
Tld
- * files can be loaded indifferently from WEB-INF webapp dir (or subdirs) or
- * from META-INF dir from jars available in the classpath: using this
DirContext
- * implementation you will be able to use unexpanded jars during development
and
- * to make any tld in them virtually available to the webapp.
+ * Extended FileDirContext implementation that allows to expose multiple
+ * directories of the filesystem under a single webapp, a feature mainly used
+ * for development with IDEs.
+ * This should be used in conjunction with {@link VirtualWebappLoader}.
*
* Sample context xml configuration:
*
* <code>
- * <Context docBase="\webapps\mydocbase">
+ * <Context path="/mywebapp"
docBase="/Users/theuser/mywebapp/src/main/webapp" >
* <Resources className="org.apache.naming.resources.VirtualDirContext"
- * virtualClasspath="\dir\classes;\somedir\somejar.jar"/>
- * </Resources>
+ *
extraResourcePaths="/pictures=/Users/theuser/mypictures,/movies=/Users/theuser/mymovies"
/>
+ * <Loader className="org.apache.catalina.loader.VirtualWebappLoader"
+ * virtualClasspath="/Users/theuser/mywebapp/target/classes" />
+ * <JarScanner scanAllDirectories="true" />
+ * </Context>
* </code>
*
*
@@ -56,32 +58,28 @@ import org.apache.naming.NamingEntry;
* @version $Id$
*/
public class VirtualDirContext extends FileDirContext {
+ private String extraResourcePaths = "";
+ private Map<String, List<String>> mappedResourcePaths;
/**
- * Map containing generated virtual names for tld files under WEB-INF and
- * the actual file reference.
+ * <p>
+ * Allows to map a path of the filesystem to a path in the webapp. Multiple
+ * filesystem paths can be mapped to the same path in the webapp.
Filesystem
+ * path and virtual path must be separated by an equal sign. Pairs of paths
+ * must be separated by a comma.
+ * </p>
+ * Example: <code>
+ *
/=/Users/slaurent/mywebapp/src/main/webapp;/pictures=/Users/slaurent/sharedpictures
+ * </code>
+ * <p>
+ * The path to the docBase must not be added here, otherwise resources
would
+ * be listed twice.
+ * </p>
+ *
+ * @param path
*/
- private Map<String, File> virtualMappings;
-
- /**
- * Map containing a mapping for tag files that should be loaded from the
- * META-INF dir of referenced jar files.
- */
- private Map<String, File> tagfileMappings;
-
- /**
- * <code>;</code> separated list of virtual path elements.
- */
- private String virtualClasspath;
-
- /**
- * <code>virtualClasspath</code> attribute that will be automatically set
- * from the <code>Context</code> <code>virtualClasspath</code> attribute
- * from the context xml file.
- * @param path <code>;</code> separated list of path elements.
- */
- public void setVirtualClasspath(String path) {
- virtualClasspath = path;
+ public void setExtraResourcePaths(String path) {
+ extraResourcePaths = path;
}
/**
@@ -91,19 +89,39 @@ public class VirtualDirContext extends F
public void allocate() {
super.allocate();
- virtualMappings = new Hashtable<String, File>();
- tagfileMappings = new Hashtable<String, File>();
-
- // looks into any META-INF dir found in classpath entries for tld
files.
- StringTokenizer tkn = new StringTokenizer(virtualClasspath, ";");
+ mappedResourcePaths = new HashMap<String, List<String>>();
+ StringTokenizer tkn = new StringTokenizer(extraResourcePaths, ",");
while (tkn.hasMoreTokens()) {
- File file = new File(tkn.nextToken(), "META-INF");
+ String resSpec = tkn.nextToken();
+ if (resSpec.length() > 0) {
+ int idx = resSpec.indexOf('=');
+ String path;
+ if (idx <= 0) {
+ path = "";
+ }
+ else {
+ if (resSpec.startsWith("/=")) {
+ resSpec = resSpec.substring(1);
+ idx--;
+ }
+ path = resSpec.substring(0, idx);
+ }
+ String dir = resSpec.substring(idx + 1);
+ List<String> resourcePaths = mappedResourcePaths.get(path);
+ if (resourcePaths == null) {
+ resourcePaths = new ArrayList<String>();
+ mappedResourcePaths.put(path, resourcePaths);
+ }
+ resourcePaths.add(dir);
- if (!file.exists() || !file.isDirectory()) {
- continue;
+ // Set allowLinking since there can be no canonical path
+ setAllowLinking(true);
}
- scanForTlds(file);
}
+ if (mappedResourcePaths.isEmpty()) {
+ mappedResourcePaths = null;
+ }
+
}
/**
@@ -111,48 +129,124 @@ public class VirtualDirContext extends F
*/
@Override
public void release() {
+ mappedResourcePaths = null;
+
super.release();
- virtualMappings = null;
}
@Override
public Attributes getAttributes(String name) throws NamingException {
- // handle "virtual" tlds
- if (name.startsWith("/WEB-INF/") && name.endsWith(".tld")) {
- String tldName = name.substring(name.lastIndexOf("/") + 1);
- if (virtualMappings.containsKey(tldName)) {
- return new
FileResourceAttributes(virtualMappings.get(tldName));
- }
- } else if (name.startsWith("/META-INF/tags") && name.endsWith(".tag")
- || name.endsWith(".tagx")) {
+ NamingException initialException;
+ try {
+ // first try the normal processing, if it fails try with extra
+ // resources
+ Attributes attributes = super.getAttributes(name);
+ return attributes;
+ } catch (NamingException exc) {
+ initialException = exc;
+ }
- // already loaded tag file
- if (tagfileMappings.containsKey(name)) {
- return new FileResourceAttributes(tagfileMappings.get(name));
+ if (mappedResourcePaths != null) {
+ for (Map.Entry<String, List<String>> mapping :
mappedResourcePaths.entrySet()) {
+ String path = mapping.getKey();
+ List<String> dirList = mapping.getValue();
+ String resourcesDir = dirList.get(0);
+ if (name.equals(path)) {
+ File f = new File(resourcesDir);
+ if (f.exists() && f.canRead()) {
+ return new FileResourceAttributes(f);
+ }
+ }
+ path += "/";
+ if (name.startsWith(path)) {
+ String res = name.substring(path.length());
+ File f = new File(resourcesDir + "/" + res);
+ if (f.exists() && f.canRead()) {
+ return new FileResourceAttributes(f);
+ }
+ }
}
+ }
+ throw initialException;
+ }
- // unknown tagfile, search for it in virtualClasspath
- StringTokenizer tkn = new StringTokenizer(virtualClasspath, ";");
- while (tkn.hasMoreTokens()) {
- File file = new File(tkn.nextToken(), name);
- if (file.exists()) {
- tagfileMappings.put(name, file);
- return new FileResourceAttributes(file);
+ @Override
+ protected File file(String name) {
+ File file = super.file(name);
+ if (file != null || mappedResourcePaths == null) {
+ return file;
+ }
+ // If not found under docBase, try our other resources
+ // Ensure name string begins with a slash
+ if (name.length() > 0 && name.charAt(0) != '/') {
+ name = "/" + name;
+ }
+ for (Map.Entry<String, List<String>> mapping :
mappedResourcePaths.entrySet()) {
+ String path = mapping.getKey();
+ List<String> dirList = mapping.getValue();
+ if (name.equals(path)) {
+ for (String resourcesDir : dirList) {
+ file = new File(resourcesDir);
+ if (file.exists() && file.canRead()) {
+ return file;
+ }
+ }
+ }
+ if (name.startsWith(path + "/")) {
+ String res = name.substring(path.length());
+ for (String resourcesDir : dirList) {
+ file = new File(resourcesDir, res);
+ if (file.exists() && file.canRead()) {
+ return file;
+ }
}
}
}
-
- return super.getAttributes(name);
+ return null;
}
@Override
protected List<NamingEntry> list(File file) {
List<NamingEntry> entries = super.list(file);
- // adds virtual tlds for WEB-INF listing
- if ("WEB-INF".equals(file.getName())) {
- entries.addAll(getVirtualNamingEntries());
+ if (mappedResourcePaths != null && !mappedResourcePaths.isEmpty()) {
+ Set<String> entryNames = new HashSet<String>(entries.size());
+ for (NamingEntry entry : entries) {
+ entryNames.add(entry.name);
+ }
+ // Add appropriate entries from the extra resource paths
+ String absPath = file.getAbsolutePath();
+ if (absPath.startsWith(getDocBase() + File.separator)) {
+ String relPath = absPath.substring(getDocBase().length());
+ String fsRelPath = relPath.replace(File.separatorChar, '/');
+ for (Map.Entry<String, List<String>> mapping :
mappedResourcePaths.entrySet()) {
+ String path = mapping.getKey();
+ List<String> dirList = mapping.getValue();
+ String res = null;
+ if (fsRelPath.equals(path)) {
+ res = "";
+ } else if (fsRelPath.startsWith(path + "/")) {
+ res = relPath.substring(path.length());
+ }
+ if (res != null) {
+ for (String resourcesDir : dirList) {
+ File f = new File(resourcesDir, res);
+ if (f.exists() && f.canRead() && f.isDirectory()) {
+ List<NamingEntry> virtEntries = super.list(f);
+ for (NamingEntry entry : virtEntries) {
+ // filter duplicate
+ if (!entryNames.contains(entry.name)) {
+ entryNames.add(entry.name);
+ entries.add(entry);
+ }
+ }
+
+ }
+ }
+ }
+ }
+ }
}
return entries;
@@ -161,65 +255,47 @@ public class VirtualDirContext extends F
@Override
protected Object doLookup(String name) {
- // handle "virtual" tlds
- if (name.startsWith("/WEB-INF/") && name.endsWith(".tld")) {
- String tldName = name.substring(name.lastIndexOf("/") + 1);
- if (virtualMappings.containsKey(tldName)) {
- return new FileResource(virtualMappings.get(tldName));
- }
- } else if (name.startsWith("/META-INF/tags") && name.endsWith(".tag")
- || name.endsWith(".tagx")) {
-
- // already loaded tag file: we are sure that getAttributes() has
- // already been called if we are here
- File tagFile = tagfileMappings.get(name);
- if (tagFile != null) {
- return new FileResource(tagFile);
- }
+ Object retSuper = super.doLookup(name);
+ if (retSuper != null || mappedResourcePaths == null) {
+ return retSuper;
}
- return super.doLookup(name);
- }
-
- /**
- * Scan a given dir for tld files. Any found tld will be added to the
- * virtualMappings.
- * @param dir Dir to scan for tlds
- */
- private void scanForTlds(File dir) {
-
- File[] files = dir.listFiles();
- for (int j = 0; j < files.length; j++) {
- File file = files[j];
-
- if (file.isDirectory()) {
- scanForTlds(file);
- } else if (file.getName().endsWith(".tld")) {
- // just generate a random name using the current timestamp,
name
- // doesn't matter since it needs to be referenced by URI
- String virtualTldName = "~" + System.currentTimeMillis() + "~"
- + file.getName();
- virtualMappings.put(virtualTldName, file);
+ // Perform lookup using the extra resource paths
+ for (Map.Entry<String, List<String>> mapping :
mappedResourcePaths.entrySet()) {
+ String path = mapping.getKey();
+ List<String> dirList = mapping.getValue();
+ if (name.equals(path)) {
+ for (String resourcesDir : dirList) {
+ File f = new File(resourcesDir);
+ if (f.exists() && f.canRead()) {
+ if (f.isFile()) {
+ return new FileResource(f);
+ }
+ else {
+ // never goes here, if f is a directory the super
+ // implementation already returned a value
+ }
+ }
+ }
+ }
+ path += "/";
+ if (name.startsWith(path)) {
+ String res = name.substring(path.length());
+ for (String resourcesDir : dirList) {
+ File f = new File(resourcesDir + "/" + res);
+ if (f.exists() && f.canRead()) {
+ if (f.isFile()) {
+ return new FileResource(f);
+ }
+ else {
+ // never goes here, if f is a directory the super
+ // implementation already returned a value
+ }
+ }
+ }
}
}
-
- }
-
- /**
- * Returns a list of virtual naming entries.
- * @return list of naming entries, containing tlds in virtualMappings
- */
- private List<NamingEntry> getVirtualNamingEntries() {
- List<NamingEntry> virtual = new ArrayList<NamingEntry>();
-
- for (String name : virtualMappings.keySet()) {
-
- File file = virtualMappings.get(name);
- NamingEntry entry = new NamingEntry(name, new FileResource(file),
- NamingEntry.ENTRY);
- virtual.add(entry);
- }
- return virtual;
+ return retSuper;
}
}
Modified: tomcat/tc7.0.x/trunk/webapps/docs/config/context.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/config/context.xml?rev=1210012&r1=1210011&r2=1210012&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/config/context.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/config/context.xml Sat Dec 3 21:37:49
2011
@@ -539,6 +539,8 @@
<code>docBase</code> instead.</p>
<p>These external locations will not be emptied if the context
is un-deployed.</p>
+ <p>A more powerful feature (for development only) is
+ <a href="#Virtual_webapp">Virtual webapp</a>.</p>
</attribute>
<attribute name="allowLinking" required="false">
@@ -1251,6 +1253,82 @@
</subsection>
+ <subsection name="Virtual webapp">
+ <p>During development it may be more productive to avoid copying files
(static
+ resources, JSPs, classes, jars...) and configure tomcat to use files from
their
+ source locations. To do that, several customisations of the context
configuration are
+ required:</p>
+ <ul>
+ <li>The <code>VirtualDirContext</code> implementation of
+ <a href="resources.html">Resources</a></li>
+ <li>The <code>VirtualWebappLoader</code> implementation of
+ <a href="loader.html">Loader</a></li>
+ <li><code>scanAllDirectories="true"</code> on the <a
href="jar-scanner.html">JarScanner</a></li>
+ </ul>
+ <p>To illustrate this feature, here is an example of a standard maven
webapp source tree:</p>
+<source>
+mywebapp/
+ src/
+ main/
+ java/
+ resources/
+ webapp/
+ WEB-INF/
+ classes/
+ target/
+ classes/
+</source>
+ <p>To deploy such an application (assuming it also uses the log4j maven
artefact),
+ the context configuration looks like:</p>
+<source>
+<Context path="/mywebapp" docBase="/Users/theuser/mywebapp/src/main/webapp"
>
+ <Resources className="org.apache.naming.resources.VirtualDirContext"
+
extraResourcePaths="/WEB-INF/classes=/Users/theuser/mywebapp/target/classes" />
+ <Loader className="org.apache.catalina.loader.VirtualWebappLoader"
+
virtualClasspath="/Users/theuser/mywebapp/target/classes;/Users/theuser/.m2/repository/log4j/log4j/1.2.15/log4j-1.2.15.jar"
/>
+ <JarScanner scanAllDirectories="true" />
+</Context>
+</source>
+
+ <p>Here is another example where the webapp serves pictures under
/pictures and movies
+ under /movies and also depends on another maven project mylib that would
normally
+ produce a jar to be packaged in WEB-INF/lib:</p>
+<source>
+mylib/
+ src/
+ main/
+ java/
+ resources/
+ META-INF/
+ resources/
+ target/
+ classes/
+mymovies/
+mypictures/
+mywebapp/
+ src/
+ main/
+ java/
+ resources/
+ webapp/
+ WEB-INF/
+ classes/
+ target/
+ classes/
+</source>
+ <p>The configuration is:</p>
+<source>
+<Context path="/mywebapp" docBase="/Users/theuser/mywebapp/src/main/webapp"
>
+ <Resources className="org.apache.naming.resources.VirtualDirContext"
+
extraResourcePaths="/WEB-INF/classes=/Users/theuser/mywebapp/target/classes,/pictures=/Users/theuser/mypictures,/movies=/Users/theuser/mymovies"
/>
+ <Loader className="org.apache.catalina.loader.VirtualWebappLoader"
+
virtualClasspath="/Users/theuser/mywebapp/target/classes;/Users/theuser/mylib/target/classes;/Users/theuser/.m2/repository/log4j/log4j/1.2.15/log4j-1.2.15.jar"
/>
+ <JarScanner scanAllDirectories="true" />
+</Context>
+</source>
+ <p>Note that resources in mylib/target/classes/META-INF/resources/ are
mapped to / as
+ required by servlet 3 specifications.</p>
+ </subsection>
</section>
Modified: tomcat/tc7.0.x/trunk/webapps/docs/config/resources.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/config/resources.xml?rev=1210012&r1=1210011&r2=1210012&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/config/resources.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/config/resources.xml Sat Dec 3 21:37:49
2011
@@ -94,6 +94,27 @@
</subsection>
+ <subsection name="VirtualDirContext implementation">
+ <p>This implementation of <strong>Resources</strong> is
+ <strong>org.apache.naming.resources.VirtualDirContext</strong> and is
aimed to be used
+ during development to deploy a webapp without copying files to a webapp
compliant
+ directory structure.
+ It extends <code>FileDirContext</code> and supports the following
+ additional attributes</p>
+
+ <attributes>
+ <attribute name="extraResourcePaths" required="false">
+ <p>Allows to map a path of the filesystem to a path in the webapp.
Multiple
+ filesystem paths can be mapped to the same path in the webapp.
Filesystem
+ path and virtual path must be separated by an equal signe (=). Pairs
of paths
+ must be separated by a column.</p>
+ Example:
<code>/=/Users/jdoe/mywebapp/src/main/webapp,/=/Users/jdoe/mywebapp/src/main/webapp2,/pictures=/Users/jdoe/sharedpictures</code>
+ <p>The path to the docBase (as declared in the Context) must not be
added here.</p>
+ <p>This attribute enhances the feature provided by the
<code>aliases</code>
+ attribute of the <strong>StandardContext</strong>.</p>
+ </attribute>
+ </attributes>
+ </subsection>
</section>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]