2014-11-18 22:35 GMT+03:00 Konstantin Kolinko <knst.koli...@gmail.com>: > 2014-11-18 11:29 GMT+03:00 Mark Thomas <ma...@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-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org