I'm trying to migrate a very old ANT based project into the future, the
ANT scripts I inherited are (of course) very complex, so I need to make
babysteps. The first thing I did was compile the Java code with Maven and
thus replaced a lot of copy statements and checked in lib directories with
dependencies. This is working fine, but it also means that there is no
single directory anymore where all the classfiles, jars, configuration
files, etc are copied to. So now I need a way to start Tomcat for
developers using (still) separated directories.

The best approach seemed like to start Tomcat embedded, this also allows
me to use it for running cucumber and integration tests against. The thing
is I cannot get it to work, even after searching google, stackoverflow and
reading the Tomcat (8.0.39) configuration guides for 2 days. It should, I
would not mind if it did, but it does not.

To begin I have a maven project with:
- classes in target/classes
- web files in webapps
- configuration files in /somewhere/outside/the/project/cfg

This what I have so far:
                StandardContext standardContext =
(StandardContext)tomcat.addWebapp("/myapp,
"/path/to/maven/project/webapps);
                standardContext.setCrossContext(true);
                standardContext.addParameter("SomeOwnFramework.Home",
"/somewhere/outside/the/project");
                standardContext.addParameter("SomeOwnFramework.ContainerName",
"MijnCaress Backend Container");
                
standardContext.addParameter("SomeOwnFramework.XmlConfigurationFile",
"/somewhere/outside/the/project/cfg/Framework-backend.xml");
                
standardContext.getNamingResources().addResource(createJdbcResource());
// returns a
org.apache.tomcat.util.descriptor.web.ContextResource

                org.apache.catalina.webresources.StandardRoot standardRoot = new
org.apache.catalina.webresources.StandardRoot(standardContext);
                standardRoot.setCachingAllowed(true);
                standardRoot.setCacheMaxSize(100000);
                // add classes
                standardRoot.addPreResources(new
org.apache.catalina.webresources.DirResourceSet(standardRoot,
"/WEB-INF/classes", new File("target/classes").getAbsolutePath(),
"/"));
                // add configuration files
                standardRoot.addPostResources(new
org.apache.catalina.webresources.DirResourceSet(standardRoot,
"/WEB-INF/classes", new
File("/somewhere/outside/the/project/cfg").getAbsolutePath(),
"/"));
                standardContext.setResources(standardRoot);

This ends with a ClassNotFoundException on a class that is in
target/classes, also if I remove the configuration files resource.
The target/classes absolute path is correct, exists and contains the class.

It would be great to get some pointers on why this is not working.

Tom


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to