On 17/03/2015 18:30, Ed Rouse wrote:
> 
> 
>> -----Original Message-----
>> From: Pilkington, Simon [mailto:simo...@amazon.com]
>> Sent: Tuesday, March 17, 2015 12:45 PM
>> To: users@tomcat.apache.org
>> Subject: [Tomcat8] What happened to WebappLoader.addRepository()?
>>
>> Hey tomcat users,
>>
>> The javadoc for WebappLoader still tells me to use addRepository(), but
>> that method no longer exists. My team has implemented an extension of
>> WebappLoader that looked like this:
>>
>> http://cp.mcafee.com/d/1jWVIq3zqb2rzydPhOCYrKrhKCqenTzhOe7cCQrFCzBZUQsL
>> 9ICQrFCzBZUQszxP1J6WpEVvd7aabPxLURrFUalAv3UYKrlAv3UYKrKXHXRTT-LPz5TCnA-
>> LsKyev7szsQsIFICzBzBHEShhlKYPOEuvkzaT0QSyrjdTdTdAVPmEBCjGHrpZGSS9_M079R
>> lJIOUXHBQaSPlFo01PlJIj_brfjVgT3WWxYs0nO6Hb1mKEv7wsrrFYq5U_dKc2WrWr9EVjb
>> _6HtfelAv3UYK2FRlJI-
>> Rrr4_U02rs7e3zpFr1dlrrdUQKCy01iuPd41flBLxW1EwDkQg0bV3lBwHnkfzSE80LRGQBe
>> IiNEEd598S-UrI1Lf5-sL
>> http://cp.mcafee.com/d/2DRPoAd3hJ5xdNN6VEVjudTdETjd7bXNEV73CjqdQPhO-
>> YqenASjqdQPhO-
>> YqehMVwSztcQsLCzB55VMTYqJQY5aOfxYundGOfxYundTtRZWXX_nVNyXPbOvnKnh7fzKhK
>> qemkSjhONORQr8EGTupVkffGhBrwqrjdFCXCXCOsVHkiP9RlJI-
>> Rrr4_U03AWGSSptXHBQaSPlFo01PlJIj_brfjVgT3WWxYs0nO6Hb1mKEv7wsrrFYq5U_dKc
>> 2WrWr9EVjb_6HtfelAv3UYK2FRlJI-
>> Rrr4_U02rs7e3zpFr1dlrrdUQKCy01iuPd41flBLxW1EwDkQg0bV3lBwHnkfzSE80LRGQBe
>> IiNEEd598S-UrHrI5
>>
>>    @Override
>>    protected void startInternal() throws LifecycleException {
>>        // validate the context, which is used for debugging messages
>>        Context context;
>>        {
>>            Container container = getContainer();
>>            if (container == null) {
>>                throw new LifecycleException("Container is null?!");
>>            }
>>            if (!(container instanceof Context)) {
>>                throw new LifecycleException("Container is not an
>> instance of Context?!");
>>            }
>>            context = (Context) container;
>>        }
>>
>>        if (ENVIRONMENT_ROOT != null && ENVIRONMENT_ROOT.length() > 0) {
>>            // validate targetPackage
>>            if (null == targetPackage) {
>>                throw new LifecycleException(
>>                        "Missing required Loader attribute
>> \"targetPackage\" in Context configuration " +
>>                                context.getConfigFile());
>>            }
>>
>>            try {
>>                // Excluded jars are those already pulled in by tomcat.
>>                Set<String> allExcludedJars = getAllExcludedJars();
>>                Set<String> reallyExcludedJars = new HashSet<String>();
>>                // add JARs from target package as "repositories"
>>                // getPackageClasspath finds the list of jars I want to
>> include for this webapp.
>>                for (String jar : getPackageClasspath(targetPackage)) {
>>                    File file = new File(ENVIRONMENT_ROOT, jar);
>>                    // skip bad and unwanted JARs
>>                    if (allExcludedJars.contains(jar) || isBadJar(file))
>> {
>>                        reallyExcludedJars.add(jar);
>>                    } else {
>>                        // TODO: HOW TO FIX ME??
>>                        addRepository(file.toURI().toString());
>>                    }
>>                }
>>                log.info("Context path \"" + context.getPath() + "\"
>> excluding JARs: " + reallyExcludedJars);
>>            } catch (IOException e) {
>>                throw new LifecycleException(
>>                        "Problem setting classpath for context path \""
>> + context.getPath() + "\"",
>>                        e);
>>            }
>>
>>            // getRepositoriesString() has been renamed to
>> getLoaderRepositoriesString()...
>>            log.info("Context path \"" + context.getPath() + "\" using
>> classpath: " + getRepositoriesString());
>>        } else {
>>            log.warning("MyWebappLoader seems to be used outside of my
>> environment. Delegating to parent.");
>>        }
>>
>>        super.startInternal();
>>    }
>>
>> Can the community help me figure out how to upgrade this for tomcat 8?
> 
> JarResourceSet jrs = new JarResourceSet(Context.getResources(), "/", 
> file.getAbsolutePath(), "/");
> Context.getResources().addPostResources(jrs);

Bad idea. That will mount the contents of the JAR at the root of the web
application.

Mark


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

Reply via email to