1 2 Previous Next 25 Replies Latest reply: Apr 12, 2012 1:01 PM by Stephen Kouretas Go to original post RSS
  • 15. Re: URL-Protocol Handler doesn't work
    Stephen Kouretas Newbie

    David,

     

    If I understand you correctly jboss.protocol.handler.modules requires a URLStreamHandlerFactory.

    The jcifs package does not include a URLStreamHandlerFactory since java.protocol.handler.pkgs only requires a URLStreamHandler.

     

    Hence, I created a seperate jar with a URLStreamHandlerFactory and placed it in the modules/jcifs/main directory. (see code below)

    In the META-INF/services directory of this jar contains a text file named java.net.URLStreamHandlerFactory which contains the fully-qualified name of this factory.

    In the module.xml file I added this new jar as a resource-root and removed the service-loader-resources directory from the resources list.

     

    the org.jboss.as.standalone module still has a dependency on the jcifs module.

     

    I am still getting the same MalformedURLException unknown protocol: smb.

    I put a break point on the createURLStreamHandler method, but it never seems to be called.

     

    public class SmbStreamHandlerFactory implements URLStreamHandlerFactory {
     @Override
     public URLStreamHandler createURLStreamHandler(String protocol) {
      if((protocol != null) && ("smb".equals(protocol.toLowerCase()))) {
       return new jcifs.smb.Handler();   
      }
      
      return null;
     }
    }
    
  • 16. Re: URL-Protocol Handler doesn't work
    David Lloyd Master

    Stephen Kouretas wrote:

     

    David,

     

    If I understand you correctly jboss.protocol.handler.modules requires a URLStreamHandlerFactory.

    Correct.

     

    Stephen Kouretas wrote:

     

    The jcifs package does not include a URLStreamHandlerFactory since java.protocol.handler.pkgs only requires a URLStreamHandler.

     

    Hence, I created a seperate jar with a URLStreamHandlerFactory and placed it in the modules/jcifs/main directory. (see code below)

    In the META-INF/services directory of this jar contains a text file named java.net.URLStreamHandlerFactory which contains the fully-qualified name of this factory.

    In the module.xml file I added this new jar as a resource-root and removed the service-loader-resources directory from the resources list.

     

    the org.jboss.as.standalone module still has a dependency on the jcifs module.

     

    I am still getting the same MalformedURLException unknown protocol: smb.

    This is after you added your module name to jboss.protocol.handler.modules?

  • 17. Re: URL-Protocol Handler doesn't work
    Stephen Kouretas Newbie

     

    Stephen Kouretas wrote:

     

    The jcifs package does not include a URLStreamHandlerFactory since java.protocol.handler.pkgs only requires a URLStreamHandler.

     

    Hence, I created a seperate jar with a URLStreamHandlerFactory and placed it in the modules/jcifs/main directory. (see code below)

    In the META-INF/services directory of this jar contains a text file named java.net.URLStreamHandlerFactory which contains the fully-qualified name of this factory.

    In the module.xml file I added this new jar as a resource-root and removed the service-loader-resources directory from the resources list.

     

    the org.jboss.as.standalone module still has a dependency on the jcifs module.

     

    I am still getting the same MalformedURLException unknown protocol: smb.

    This is after you added your module name to jboss.protocol.handler.modules?

     

    Both the jcifs.jar and my jar with the URLStreamHandlerFactory (jcifs_wrapper.jar) are in the jcifs module directory.

    module.xml references both jar resources.

    <module xmlns="urn:jboss:module:1.1" name="jcifs" > 
    <resources> 
    <resource-root path="jcifs_wrapper.jar"/> 
    <resource-root path="jcifs-1.3.15.jar"/> 
    </resources>
    </module> 
    

    standalone.conf.bat still contains:  

    set JAVA_OPTS=%JAVA_OPTS% -Djboss.protocol.handler.modules=jcifs

     

    boot.log confirms this settng:

    jboss.protocol.handler.modules = jcifs

     

     

  • 18. Re: URL-Protocol Handler doesn't work
    Stephen Kouretas Newbie

    David,

     

    I downloaded the source for the Module loader system and was stepping through the code and discovered the following:

     

    When the ModuleURLStreamHandlerFactory loads the jboss.protocol.handler.modules, jcifs is in the list.

    When ModuleURLStreamHandlerFactory attempts to load the Module, the ModuleLoader.loadModuleLocal attempts to use Module.log which is null and hence causes an Exception and the jcifs module does not get loaded and does not get added to the list of modules.

     

    I'm not sure why Module.log is null.

    Is there some configuration that needs to be set first so that Module.log will be properly set?

     

     

  • 19. Re: URL-Protocol Handler doesn't work
    David Lloyd Master

    Interesting.  Sounds like a simple bug; I can check into it.

  • 20. Re: URL-Protocol Handler doesn't work
    David Lloyd Master

    I've created this issue to track the problem: https://issues.jboss.org/browse/MODULES-131

     

    Can you try building this revision of jboss-modules and replacing your jboss-modules.jar with the result? http://github.com/dmlloyd/jboss-modules/commit/98d546c

  • 21. Re: URL-Protocol Handler doesn't work
    Stephen Kouretas Newbie

    Thanks David,

     

    I built the code and the logger is no longer null.

    However, I am now getting a NPE at line 881 of org.jboss.modules.Module when it is linking my jcifs module.  It appears the classFilterStack is null.

  • 22. Re: URL-Protocol Handler doesn't work
    David Lloyd Master

    Hmm, that's odd.  Can you get a stack trace?

  • 23. Re: URL-Protocol Handler doesn't work
    David Lloyd Master

    Never mind, I see: it's a class initialization order problem again.  A constant field is not yet initialized.  I think I'll have to do some reshuffling here.

  • 24. Re: URL-Protocol Handler doesn't work
    David Lloyd Master

    Can you please try this commit: http://github.com/dmlloyd/jboss-modules/commit/c8eb426 - I examined the complete init order of the Module class (and uncovered another issue or two in the process).  Now Module should be fully initialized before URL handler modules are loaded.

  • 25. Re: URL-Protocol Handler doesn't work
    Stephen Kouretas Newbie

    David,

     

    This version seems to work.

    Thanks for all your help and quick responses to my issues.

1 2 Previous Next