0

我正在维护一个使用 java.protocol.handler 的 Web 应用程序。我使用以下值初始化它:-Djava.protocol.handler.pkgs=<my value>。问题如下: 1. 如果我部署应用程序。直接从eclipse到tomcat,使用这个指令(直接引用Tomcat主类)并 -Djava.protocol.handler.pkgs=<my value>在VM参数选项卡中传递参数,应用程序正常工作并初始化-protocol依赖bean。

2.如果我将 .war 文件直接部署到 Tomcat/webapps 并使用catalina.bat(添加 -Djava.protocol.handler.pkgs=<my value>JAVA_OPTS)启动 Tomcat,我得到:Malformed URL supplied Exception. 3.如果我从 Eclipse 启动 Tomcat(并指定类似于第 1 点的 VM 参数。)相同的 .war 将被正确部署。

我的猜测是 catalina.bat 和 eclipse 初始化 VM 参数的方式之间存在差异。或者也许我应该以某种方式将我的项目 .jars 附加到 Tomcat。

谢谢你的任何提示。我可以提供更多所需的详细信息

4

2 回答 2

0

根据评论,如果没有更多信息,很难知道发生了什么,但这也许会有所帮助。Tomcat 调用URL.setURLStreamHandlerFactory来设置它自己的URLStreamHandlerFactory,它会覆盖java.protocol.handler.pkgs系统属性的默认行为。然后,您不能URL.setURLStreamHandlerFactory在不破坏内部 Tomcat 功能的情况下使用自己的处理程序进行调用。URLStreamHandlers 系统当然不是Java 最大的特点。

我发现可靠地使用我自己的流处理程序的唯一方法是将其传递给URL 构造函数

URL url = new URL( null, "http://example.com", myURLStreamHandler );
于 2012-06-18T10:05:57.787 回答
0

我们注意到 -Djava.protocol.handler.pkgs="my.protocol" 在 Tomcat 6.0.x 中有效,如果协议实现在 Tomcat lib 文件夹中而不是在战争中......

也许这对其他人有帮助

于 2012-07-12T08:34:58.647 回答