[jcifs] Difficulties with smb protocol handler in servlet con text

Gary Rambo c-grambo at aventail.com
Fri Sep 26 08:49:36 EST 2003


Difficulty removed. Thanks, Eric.

Gary

Eric wrote:

>Gary Rambo wrote:
>  
>
>>I've been having intermittent difficulty registering the smb protocol
>>handler when running in a servlet context (Jetty, Struts); but I don't
>>    
>>
>see
>  
>
>>the same problem when running the same code stand-alone.
>>
>>If I call registerSmbURLHandler() before making any other call to the
>>    
>>
>Jcifs
>  
>
>>library, and then immediately after test the smb url with 
>>
>>	URL url = new URL( "smb://servername/" );
>>
>>I get the MalformedURLException:
>>
>>java.net.MalformedURLException: unknown protocol: smb
>>        at java.net.URL.<init>(URL.java:544)
>>        at java.net.URL.<init>(URL.java:434)
>>        at java.net.URL.<init>(URL.java:383)
>>    
>>
>
>
>There are various and sundry issues regarding this; see the thread
>around:
>
>http://lists.samba.org/pipermail/jcifs/2002-December/001639.html
>
>Basically, the SMB url handler class has to be available to the system 
>classloader; many servlet containers create one or more additional 
>descendant classloaders for the web application.  This typically means 
>that to successfully register the handler, it must be copied into a 
>location in your classpath (rather than placed in the "lib" directory of
>
>the web application).
>
>If you are additionally using the NTLM filter, there is potentially 
>another gotcha; under some containers, the servlet classes 
>(javax.servlet.*) are themselves loaded in a descendant classloader. 
>Since you have put the jcifs jar in the system classpath, the NTLM 
>filter class now isn't able to see it's parent class.  One solution here
>
>(under Tomcat anyways) is to move the servlet.jar to the system 
>classpath as well.
>
>Eric
>
>  
>




More information about the jcifs mailing list