-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Daniel,

On 5/25/16 11:03 AM, Daniel Rocha wrote:
> I have a java application that was running with "Embedded" class 
> from Tomcat 6.0.Now I am trying to upgrade it to run with Tomcat 
> 7.0.69.
> 
> The current java application is initializing some static objects 
> and then starts the "Embedded" class with some Servlets.The 
> Servlets that were initialized access to the static objects from 
> the application that started them. This works fine with Tomcat 
> 6.0.
> 
> Now, I am using the "Tomcat" class from Tomcat 7.0 to start the 
> same Servlets.The servlets are initialized and I can access to 
> their context path.
> 
> The problem is when I try to access from the Servlet to a static 
> initialized object from the application that started them.The 
> object is null here.

Where is the .class file located for the servlet? Where is the .class
file located for the "static initialized object" reference? You need
to be very specific about what's going on, here, because lack of
precision can cause all kinds of missteps.

> I do not know if this is related to the context class loader.

It's almost certainly related to the ClassLoader... probably the
WebappClassLoader.

> The code looks something like this:
> 
> // Port number int port = 8080; // Create an embedded
> serverthis.embedded = new Tomcat(); 
> this.embedded.setBaseDir(getPath()); this.embedded.setPort(port); 
> // Set default virtual hostthis.host = this.embedded.getHost(); 
> this.host.setAppBase(getPath() + "/webapps"); // Create the ROOT
> contextthis.rootcontext = this.embedded.addWebapp(this.host, "",
> getPath() + "/webapps/ROOT"); 
> this.rootcontext.setReloadable(false); 
> this.rootcontext.addWelcomeFile("index.jsp"); // Create servlet
> context this.rootcontext = this.embedded.addWebapp(this.host,
> "/context",
"/home/path/to/app");
> this.rootcontext.setReloadable(false);context.setPrivileged(true);
> 
> // Set connector propertiesConnector connector =
> this.embedded.getConnector(); connector.setSecure(false); 
> connector.setProperty("maxThreads", "10"); 
> connector.setProperty("acceptCount", "20"); 
> connector.setProperty("asyncTimeout", "30000"); 
> connector.setProperty("connectionTimeout", "30000"); 
> connector.setProperty("socket.soTimeout", "30000"); 
> connector.setEnableLookups(false);
> 
> this.embedded.setConnector(connector); // Start the embedded
> server this.embedded.start();

There is nothing in that code that is going to cause any problem like
you describe. Tell us how the code that fails interacts with the code
that is (likely) loaded from the wrong ClassLoader.

- -chris
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBCAAGBQJXReyqAAoJEBzwKT+lPKRYyREP/iFMdNtenVwqDSw3u7senlVs
UUQ4QrdiHa1CYtl3DZMNnxq47EnK8oKbHEsR4ELN4K1fJ2MzDC+gCL33AhFF8b1+
bNRczRdj9aq3SbHqWR7Cb06CRj3qZ6FKexlHaHVgAVBuo0o7+Vp1+P843qWjDLCt
ZrWQ9gdsMI/9spKXn11QnP/q0yW3SiMoTOTTob5ByEKfhZMFupuhCBZnhqQC2fZh
D0iivElIaJer4Q5OXDblo4lBfwFSJtT2Xlkqx4B2xMNVf1obrYai4tGlXNtXVlwI
wgsLvmaRT9tOCf/6uSnuTNKlxX5P3FKQYbyecsYUCmHysJ+f6kGIxY3PdwuL4Arq
4OlyfsYX6wDtcHGEw+T9gtG+Z+QQw1RKLwtYv6sasEjQIusVNJGwZbsWgi+TYNS5
C2Ini934fDWJwc9DljEjvr3cYQMEt5ysMKNMVAG0d4SLsL9ug1iBiuv/ZH4LcG0m
+PWq6kGOmlpUHq/j7ySvKadg/YvXzr5OTagr7hCn88Z3WU0K+oJcKgE9QA9qDHGc
9a+ZyNFRbdfh4yW5zmCbK+0EYH6BZ9mjKU/tOVjjaiqEU/AJOb9itLVHXz6yek5e
LlHXomL1w1tJGQ9zYiJx3/oBHC1px05n0hqfKKkfbRjsUI44Mjuyqo0SpymWxQi/
XuI+yXCgM4Vi7h4mcGFc
=jHSA
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to