From memory, there is a reason the Tomcat handler has to be first. I forget exactly why that is. I'd need to dig into this some more (and I have my hands full working on the RFC 9128 implementation at the moment).

In your case, it looks like a custom LifecycleListener would work. In terms of changes to Tomcat, I'd lean more towards a Tomcat specific system property you could use instead of java.protocol.handler.pkgs for Tomcat 8.5.x - 10.1x with the whole lot being replaced by a ServiceLoader in 11.0.x

Mark


On 20/01/2023 12:28, Dave Breeze wrote:
Thanks again Mark
I have no access to the source for the webapp.
what I was think was that if in catalina.sh the line:

JAVA_OPTS="$JAVA_OPTS
-Djava.protocol.handler.pkgs=org.apache.catalina.webresources"

was simply re-ordered to

JAVA_OPTS="-Djava.protocol.handler.pkgs=org.apache.catalina.webresources
$JAVA_OPTS "

then users could use JAVA_OPTS to set the value.

thanks

Dave Breeze
Linkedin:https://uk.linkedin.com/in/dabreeze

On Fri, 20 Jan 2023 at 12:17, Mark Thomas <ma...@apache.org> wrote:

On 20/01/2023 11:18, Dave Breeze wrote:
Many thanks Mark for the answers - appreciated.

Just to be clear I am running 9.0.71 simply by invoking startup.sh
(currently testing). I am not running embedded. I am not too sure
therefore about the "Call
org.apache.catalina.webresources.TomcatURLStreamHandlerFactory#addUserFactory(URLStreamHandlerFactory)"
Could you please explain further

You'd need to call it from your application code (probably a
ServletContextListener).

Alternatively, you could write a Tomcat level LifecycleListener to add
it if the JAR with the handler is in $CATALINA_BASE/lib

Hmm. It looks like we can remove this in Tomcat 10 onwards and use the
ServiceLoader mechanism. (OK, may need to deprecate this in 10 and
remove it in Tomcat 11).

Mark



thanks again
Dave Breeze
Linkedin:https://uk.linkedin.com/in/dabreeze

Dave Breeze
Linkedin:https://uk.linkedin.com/in/dabreeze


On Fri, 20 Jan 2023 at 11:01, Mark Thomas <ma...@apache.org> wrote:

On 20/01/2023 09:53, Dave Breeze wrote:
Tomcat 9.0.71

I need to use a custom protocol handler. I set JAVA_OPTS to:

    -Djava.protocol.handler.pkgs=com.ibm.crypto.provider

My JAVA_OPTS setting,however, is ignored. This is due to catalina.sh
containing

JAVA_OPTS="$JAVA_OPTS
-Djava.protocol.handler.pkgs=org.apache.catalina.webresources"

The result of catalina.sh is that the jvm has
2  -Djava.protocol.handler.pkgs settings - first  the custom protocol
then org.apache.catalina.webresources. The net result being that Tomcat is
started with -Djava.protocol.handler.pkgs=org.apache.catalina.webresources.


      1. What is the best way of setting java.protocol.handler.pkgs other than
      modifying catalina.sh

Call
org.apache.catalina.webresources.TomcatURLStreamHandlerFactory#addUserFactory(URLStreamHandlerFactory)

to add your custom handler.

      2. do i need to set java.protocol.handler.pkgs to just my custom handler
      or should it be set to a concatenation of
      custom + org.apache.catalina.webresources

If you do it that way, it needs to be both.

      3. if a concatenation of handlers is required what is the syntax

| delimited

Mark

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


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


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


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


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

Reply via email to