tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Konstantin Kolinko <knst.koli...@gmail.com>
Subject Re: java.protocol.handler.pkgs does not work with Tomcat 7
Date Tue, 18 Nov 2014 19:40:42 GMT
2014-11-18 22:35 GMT+03:00 Konstantin Kolinko <knst.kolinko@gmail.com>:
> 2014-11-18 11:29 GMT+03:00 Mark Thomas <markt@apache.org>:
>> On 17/11/2014 22:47, Ignacio Ocampo wrote:
>>> Hi all,
>>>
>>> I'm using a third part library for NTLM authentication, one of their
>>> requeriments is to set: System.setProperty("java.protocol.handler.pkgs",
>>> "jespa");
>>>
>>> But, it does not take any effect, I see Tomcat 7 source code here:
>>>
>>> https://github.com/apache/tomcat70/blob/051a1dfd4c2943a8e8001c6be88d208cac72faff/java/org/apache/catalina/loader/WebappLoader.java#L561
>>>
>>>         // Register a stream handler factory for the JNDI protocol
>>>         URLStreamHandlerFactory streamHandlerFactory =
>>>                 DirContextURLStreamHandlerFactory.getInstance();
>>>         if (first) {
>>>             first = false;
>>>             try {
>>> *                URL.setURLStreamHandlerFactory(streamHandlerFactory);*
>>>             } catch (Exception e) {
>>>                 // Log and continue anyway, this is not critical
>>>                 log.error("Error registering jndi stream handler", e);
>>>             } catch (Throwable t) {
>>>                 ExceptionUtils.handleThrowable(t);
>>>                 // This is likely a dual registration
>>>                 log.info("Dual registration of jndi stream handler: "
>>>                          + t.getMessage());
>>>             }
>>>         }
>>>
>>> And I see *URL.setURLStreamHandlerFactory *documentation at:
>>> https://docs.oracle.com/javase/7/docs/api/java/net/URL.html#setURLStreamHandlerFactory(java.net.URLStreamHandlerFactory)
>>>
>>> public static void setURLStreamHandlerFactory(URLStreamHandlerFactory
>>> <https://docs.oracle.com/javase/7/docs/api/java/net/URLStreamHandlerFactory.html>
>>> fac)
>>>
>>> Sets an application's URLStreamHandlerFactory. This method can be called at
>>> most once in a given Java Virtual Machine.
>>>
>>> The URLStreamHandlerFactory instance is used to construct a stream protocol
>>> handler from a protocol name.
>>> I tried set -Djava.protocol.handler.pkgs=jespa in catalina.sh and put my
>>> jars in jdk/lib, jdk/jre/lib, tomcat/lib, tomcat/webapps/ROOT/WEB-INF/lib,
>>> but nothing.
>>>
>>> I hope your comments.
>>
>> Yes, this is a problem that isn't addressed in Tomcat 7.
>>
>> It is addressed in Tomcat 8 (and 9) where we add a Tomcat specific
>> factory. This factory avoids the problem of only being able to call
>> setURLStreamHandlerFactory() once by adding the Tomcat specific factory
>> which allows additional handler factories to be added.
>
>
> 1. It is possible to inject user's URL factories into
> DirContextURLStreamHandlerFactory of Tomcat 7. See static method added
> in
> http://svn.apache.org/r1078601
> https://issues.apache.org/bugzilla/show_bug.cgi?id=26701
>
> 2. java.protocol.handler.pkgs  shall work, but it have been a long
> time since I last experimented with that.
>
>> I tried set -Djava.protocol.handler.pkgs= jespa in catalina.sh
>
> 3. Exactly how you did it?
> 4. Modifying catalina.sh is usually a bad thing.
> Modifications shall go into a "$CATALINA_BASE/bin/setenv.sh" file.
>
>> and put my jars in jdk/lib, jdk/jre/lib,
>
> 5. Are those the Java version that you are using?  Are they visible to
> the class loader (e.g can you load the class in any test JSP page?)
>
>>  tomcat/lib, tomcat/webapps/ROOT/WEB-INF/lib,
> but nothing.
>
> Is your webapp the ROOT one?
>
> If it cannot be in $CATALINA_BASE/lib then put it elsewhere and add it
> to CLASSPATH variable in setenv.sh.
>
>
> 6.  Is "jespa" the correct value for that property?  It shall be a
> correct Java package name.

>From another thread
*jespa.jar*:/root/apache-tomcat-7.0.57/lib/*jcifs.jar*

That is JCIFS  jar, not a Jespa jar.

Maybe you meant different value,
 java.protocol.handler.pkgs=jcifs
like on a FAQ page http://jcifs.samba.org/FAQ.html


> Best regards,
> Konstantin Kolinko

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


Mime
View raw message