[jboss-as7-dev] cl.getResources() doesn't work from module-based code

David M. Lloyd david.lloyd at redhat.com
Wed Sep 12 12:25:27 EDT 2012


If this is in the context of a deployment, then yes the TCCL will be the 
class loader of the deployment and that's the one you should use if you 
want the *combination* of services provided to the deployment by the 
container *plus* the services defined in the deployment itself.  But 
you're using an intermediate aggregate module (which we don't normally 
do for AS services).  This means in order for it to work you have to do 
two things:

1. Set the dependencies whose services must be visible to the deployment 
to services="export"
2. When the module is imported into the deployment (presumably via the 
deployer), it has to import services from that dependency as well.

Now if you don't want to actually load service implementations from the 
deployment itself then you definitely shouldn't be using TCCL; in this 
case you'd just use your "skeleton key" module's class loader.

On 09/12/2012 10:59 AM, Bill Burke wrote:
> Thing is, this works for regular Resteasy WAR deployments.
> Thread.currentThread().getContextClassloader().
>
> On 9/12/2012 11:51 AM, Rob Cernich wrote:
>> I don't believe the context classloader is what you want.  You may have better luck with something like getClass().getClassLoader().
>>
>> Best,
>> Rob
>>
>> ----- Original Message -----
>>>
>>>
>>> On 9/12/2012 11:23 AM, David M. Lloyd wrote:
>>>> On 09/12/2012 10:18 AM, Bill Burke wrote:
>>>>> I'm creating a custom login-module that is declared within
>>>>> standalone.xml.  This module references a new module that I have
>>>>> deployed (see below).  The login-module class uses Resteasy to
>>>>> make
>>>>> invocations.  The problem is that Resteasy is not able to find and
>>>>> register built-in providers.  Resteasy does this by doing:
>>>>>
>>>>>            Enumeration<URL> en =
>>>>> Thread.currentThread().getContextClassLoader().getResources("META-INF/services/"
>>>>> + Providers.class.getName());
>>>>>            while (en.hasMoreElements())
>>>>>            {
>>>>>               URL url = en.nextElement();
>>>>>
>>>>>
>>>>> No URLs are turning up when calling cl.getResources().  Is there
>>>>> some
>>>>> configuration switch I don't know about?
>>>>
>>>> Yeah - any time you have a dependency on a module whose
>>>> "META-INF/services" you want to access, you have to add
>>>> "services="import"" to that dependency, else that directory is
>>>> filtered out.
>>>
>>> <dependencies>
>>>            <module name="org.jboss.resteasy.resteasy-jackson-provider"
>>> services="import"/>
>>> </dependencies>
>>>
>>> Still doesn't work.
>>>
>>> Bill
>>>
>>> --
>>> Bill Burke
>>> JBoss, a division of Red Hat
>>> http://bill.burkecentral.com
>>> _______________________________________________
>>> jboss-as7-dev mailing list
>>> jboss-as7-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/jboss-as7-dev
>>>
>


-- 
- DML




More information about the jboss-as7-dev mailing list